首页 > 其他分享 >AMBA2 AHB 相关理解 (一)

AMBA2 AHB 相关理解 (一)

时间:2023-06-05 22:33:17浏览次数:37  
标签:AHB 主机 总线 传输 从机 理解 信号 AMBA2

一、AHB总线协议概述

1. AHB总线部件

  • 主机
    • 主机给地址(选通不同slave)以及控制信息(读写方向、数据量、数据大小等)发起读写操作。
  • 从机
    • 从机在仲裁器给过来的HREADY为高电平时采样HSELx、地址以及控制信号。
    • 从机会返回两个信号(HREADYOUT/HRESP)给主机,前者为是否需要主机等待信号,后者表示返回为OK/ERROR。
      • 对于AMBA2中,HRESP有OK\ERROR\RETRY\SPLIT,而AMBA 5中只有OK\ERROR.
  • 仲裁器
    • 仲裁器可以用来保证只允许一个主机处于有效状态使用总线。
    • 可以写代码决定是否存在优先级或公平访问。
  • 译码器
    • 前面从机提到的将地址译码生成片选信号。

2. AHB 从机HRESP和HREADYOUT信号

HRESP[1:0] RESPONSE NOTE
00 OKEY 传输正常,当HREADY信号为1,说明传输完成
01 ERROR 传输出错。
10 RETRY AHB从机不能立即完成传输,AHB主机应当重试传输
11 SPLIT AHB从机不能立即完成传输,AHB主机可以释放总线所有权,当AHB从机准备好时,主机可以再次请求总线所有权以便完成传输。
  • AMBA5 AHB这两个信号组合响应
  • 在传输类型为IDLE或BUSY时,或者从机未被选中时,从机必须在HRESP上回应OKAY信号。
  • 当从机反馈RETRY时,主机将传输类型替换为IDLE来取消掉当前的传输,并再次重新启动最后一次失败的传输。
  • 当从机反馈SPLIT时,主机改变传输类型为IDLE取消当前传输,并释放掉仲裁器的HBUSREQ信号来释放总线控制权。
    • 当从机准备好接收传输,slave 发出HSPLIT信号,通知Arbitration哪一个bus master要继续进行操作。
  • RETRY和SPLIT可以让其它优先级的master抢走总线控制权。
    • 对于RETRY而言,只有拥有更高优先级的主机能获得总线访问权。
    • 对于SPLIT而言,即使这个主机拥有更低的优先级也可以获得总线。
  • 双周期响应
    • 为什么需要双周期
      • AHB流水线传输性质导致的,在从机发起异常响应时,下一次传输的地址已经被写到地址总线上,需要至少两个周期让主机取消该地址,并在第二周期将HTRANS改成IDLE。
    • 只有OKAY响应可以在单周期给出,ERROR、RETRY、SPLIT响应至少需要两个周期。
    • 在倒数第二个周期将slave输出HREADYOUT拉为0,扩展一个周期。主机将HTRANS设置为IDLE,取消传输,拉高slave输出的HREADYOUT信号,结束传输,保持HRESP不变。

3. 突发传输相关要点

3.1 突发传输 1KB地址边界

  • 目的:slave的地址空间都是以1KB为单位,突发传输如果跨过1KB就很有可能访问到其它slave中。

3.2 突发传输 数据量

  • 一个突发传输的数据总量 = 节拍数(传输个数) * 每个节拍中的数据量(HSIZE[2:0]).

3.3 提前突发终止

  • 发生条件:在一个Burst传输中的任何一拍;slave返回非OKAY响应之后或者仲裁器将HGRANT给其他master。除此之外,master不能主动地决定终止burst传输。
  • 当HTRANS信号上出现NONSEQ或者IDLE时,则表明前一次突发传输已经终止。
  • 如果主机在突发传输过程中失去总线控制权,那么之后还需要继续申请总线控制权完成剩余传输,且之后的传输不需要与之前传输类型相同。

4. Default Slave

  • 译码时,如果定义了整个地址空间,不需要默认slave。
  • 如果内存映射中存在未定义的区域,需要slave,防止访问不存在的地址空间系统被锁死。

5. 从机的多种传输方式

  • (1)立刻完成传输;
    (2)插入一个或多个等待状态以获得充分时间来完成传输;
    (3)发出一个错误响应表示传输失败;
    (4)延时传输的完成,允许当前的主机和从机放弃总线,让其他主机先完成传输,再完成剩下的传输。
  • 等待状态最多只可使用 16 个周期,以防止任何访问长时间占用总线。

6. 数据总线

  • 总线上的主机和从机最好都使用相同的大小端模式。
  • 最好使用大端设计,并提供一个端口可供选择大端小端模式。固定大端/小端有助于降低功耗提高性能。

7. 仲裁器

  • 需要实现两个功能
    • 可以接收不同主机发送的请求信号,通过算法决定哪个主机优先传输。
    • 涉及到前面介绍的SPLIT传输,从机发出HSPLIT信号,告诉仲裁器,决定之前那个未完成传输的主机继续传输。
  • 信号HBUSREQx:主机给仲裁器
    • 对于固定长度的传输,只需要发起一次请求即可,仲裁器根据HBURST[2:0]来判断传送的长度。
    • 对于未定长度的传输,主机需要不停的发起请求,直到传输全部完成。
  • 信号HGRANTx:仲裁器给主机,告诉主机x获得总线使用权。
    • 主机在HGRANTx信号为高且从机给主机的反馈信号HREADY为高(表明上一笔传输已经完成)的那个clk上升沿处获得总线使用权。
  • 信号HMASTERx:仲裁器用这个信号表示哪个主机在用总线。
  • 如果所有主机都不需要使用总线时,每个主机将HTRANS信号给出IDLE,仲裁器就会将总线交给default master.

作者也是初学者,如有问题,请指正!!

标签:AHB,主机,总线,传输,从机,理解,信号,AMBA2
From: https://www.cnblogs.com/qianbinbin/p/17458063.html

相关文章

  • C# 中的CTS, CLS, CLR 的理解
     ......
  • 4.2 理解现代处理器
    为了理解改进性能的方法,我们需要理解现代处理器的微体系结构。由于大量的晶体管可以被集成到一块芯片上,现代微处理器采用了复杂的硬件,试图使程序性能最大化。带来的一个后果就是处理器的实际操作与通过观察机器级程序所察觉到的大相径庭。在代码级上,看上去似乎是一次执行一条指令,......
  • ExecutorService 的理解和使用
    前言:我们之前使用线程的时候都是使用newThread来进行线程的创建,但是这样会有一些问题。如:a.每次newThread新建对象性能差。b.线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom。c.缺乏更多功能,如定时执行、定期执行、线程中断。相比new......
  • 运用webkit绘制渲染页面原理解决iscroll4闪动的问题
    PostedbyunbugonSep19,2012inCSS3,MobileWebApp,OPOA|1comment已经有不少前端同行抱怨iScroll4的各种问题,我个人并不赞同将这些问题归咎于iScroll4,因为iScroll4进无论是touch事件的捕获,还是使用transform来处理滚动,以及将cubic-bezier应用到transition上实现高效......
  • IP地址、网络地址与子网掩码的理解
    一、介绍电脑之间要实现网络通信,就必须要有一个合法的ip地址。IP地址=网络地址+主机地址,(又称:主机号和网络号组成)ip地址的结构使我们可以在Internet上很方便的寻址。ip地址通常用更直观的,以点分十进制表示,每个数字从0到255,如某一台主机的ip地址为:128.20.4.1。在局域网里,同样也需......
  • 面试题:如何理解 JS的异步?
    JS是一门单线程的语言,这是因为它运行在浏览器的渲染主线程中,而渲染主线程只有一个而渲染主线程承担着诸多的工作,渲染页面、执行JS都在其中运行。如果使用同步的方式,就极有可能导致主线程产生阻塞,从而导致消息队列中的很多其他任务无法得到执行。这样一来,一方面会导致繁忙的主线......
  • 理解C++底层细节
    理解C++底层细节C++是一门广泛使用的高级编程语言,其语法优雅且易于使用,拥有着强大的面向对象特性以及丰富的标准库。但是,在理解C++的本质之前,我们需要先了解C++的底层细节。C++中的内存管理在C++中,内存管理和分配是至关重要的内容。常见的内存管理问题包括内存泄漏、内存溢出和野指......
  • golang深入理解指针
    Golang中的指针指针的概念:指针地址,指针类型,指针取值两个符号:*:根据地址取值,&:取地址关于指针变量是用来存储数据的,变量的本质是给存储数据的内存地址起了一个好记的别名。a:=1//直接通过a这个变量来读取内存中保存的1这个值。在计算机底层a这个变量其实对应了一个内存地址。......
  • 七篇深入理解机器学习和深度学习的读物推荐
    在这篇文章中将介绍7篇机器学习和深度学习的论文或者图书出版物,这些内容都论文极大地影响了我对该领域的理解,如果你想深入了解机器学习的内容,哪么推荐阅读。AttentionIsAllYouNeed在自然语言处理和序列建模领域,Vaswani等人的一篇论文《AttentionIsAllYouNeed》彻底改变......
  • Fragment原理解析androidx版本&ViewPager与Fragment
    资料Fragment生命周期为什么要通过Fragment.setArguments(Bundle)传递参数单独问题:动态方式,静态方式添加随Activity启动动态添加回退栈onSaveInstance静态方式添加FragmentmHost是这个finalFragmentControllermFragments=FragmentController.createController(newHostCallb......