AMBA 接口文档 - 图文 联系客服

发布时间 : 星期日 文章AMBA 接口文档 - 图文更新完毕开始阅读

AMBA接口文档

Last updated: 7/10/2013 8:44 AM

Page 25 of 62

机有足够的时间来取消该地址并且在开始下一次传输之前驱动HTRANS[1:0]为空闲传输。对于SPLIT 和RETRY响应接下来的传输必须取消因为在当前传输完成之前禁止下一次 传输发生。然而,对于ERROR 响应,由于当前传输不被重复,所以可以选择完成接下来的传输。图 4.12表示了一次RETRY操作的例子。

图4.12 带RETRY响应的传输

首先主机从地址A 发起传输;这次传输在接收到响应之前主机将地址移动到A + 4;从机在地址A 不能立刻完成传输因此从机发出一个RETRY 响应。该响指示主机在地址A 的传输无法完成并且在地址A + 4 的传输被取消而用空闲传输替代。

图 4.12表示了一个传输中从机请求一个周期来决定将要给出的响应(在HRESP为 OKAY的时间段),之后从机用一个双周期的ERROR响应结束了传输。

AMBA接口文档

Last updated: 7/10/2013 8:44 AM

Page 26 of 62

图4.12 带ERROR响应的传输

如果从机提供一个错误响应那么主机可以选择取消突发中剩下的传输。然而,这并不是一个严格要求同时主机继续突发中剩下的传输也是可以接受的。

分块和重试响应给从机提供了在无法立刻给传输提供数据时释放总线的机制。这两种机制都允许在总线上结束传输因此允许更高优先级的主机能够访问主机。分块(SPLIT)和重试(RETRY)的不同之处在于仲裁器在发生SPLIT 和RETRY 后分配总线的方式:

? 对RETRY 而言仲裁器将继续使用常规优先级方案因此只有拥有更高优先级的主机将

获准访问总线;

? 对于SPLIT 传输而言仲裁器将调整优先级方案以便其他任何主机请求总线即能获得

访问(总线),即使是优先级较低的主机。为了完成一个SPLIT 传输从机必须通知仲裁器何时数据可用。

SPLIT 传输增加了仲裁器和从机的复杂性,但是却有可以完全释放总线给其他主机使用的优点,但是RETRY(响应)的情况就只允许较高优先级的主机使用总线。总线主机应该以同样的方式来对待SPLIT 和RETRY(响应)。主机应该继续请求总线并尝试传输直到传输成功完成或者遇到ERROR 响应时终止。

4.6 数据总线

为了不使用三态驱动而又允许执行AHB系统所以要求分开读和写数据总线。最小的数

AMBA接口文档

Last updated: 7/10/2013 8:44 AM

Page 27 of 62

据宽度规定为32 位,但是总线宽度却可以增加,HWDATA[31:0]写数据总线在写传输期间由总线主机驱动。如果传输是扩展的那么总线主机必须保持数据有效直到传输完成,由HREADY 为高表示。

所有传输必须对齐到和传输大小相等的地址边界。例如,字传输必须对齐到字地址边界,也就是A[1:0] = 00),半字传输必须对齐到半字地址边界,也就是A[0] = 0)。对于宽度小于总线宽度的传输,例如一个在32 位总线上的16 位传输,那么总线主机仅需要驱动相应的字节通道。从机必须负责从正确的字节通道选择写数据。表 4.7和表 4.8分别表示了小端系统和大端系统中哪个字节通道有效。如果有要求,这些信息可以在更宽的总线应用中扩展。传输大小小于数据总线宽度的突发传输将在每拍突发中有不同有效字节通道。

有效字节通道取决于系统的端结构,但是AHB 并不指定要求的端结构。因此,总线上所有主机和从机的端结构相同。

HRDATA[31:0]读数据总线在读传输期间由合适的从机驱动。如果从机通过拉低HREADY 扩展读传输那么从机只需要在传输的最后一个周期提供有效数据,由HREADY 为高表示。对于宽度小于总线宽度的传输从机仅需要在有效的字节通道提供有效数据,如表 3.6和表 3.7所示。总线主机负责从正确的字节通道中选择数据。当传输以OKAY 响应完成时从机仅需提供有效数据。SPLIT、RETRY 和ERROR 响应不需要提供有效的读数据。 传输大小 地址偏移 DATA[31:24] DATA[23:16] DATA[15:8] DATA[7:0] 字 半字 半字 字节 字节 字节 字节 0 0 2 0 1 2 3 √ - √ - - √ √ - √ - - √ - √ √ - - √ - - √ √ - √ - - - 表4.7 32 位小端数据总线的有效字节通道

传输大小 地址偏移 DATA[31:24] DATA[23:16] DATA[15:8] DATA[7:0] 字 0 √ √ √ √

AMBA接口文档

Last updated: 7/10/2013 8:44 AM

Page 28 of 62

半字 半字 字节 字节 字节 字节 0 2 0 1 2 3 √ - √ - - √ - - √ - - - √ - - √ - - √ - - - √ 表4.8 32 位大端数据总线的有效字节通道 为了使系统正确运行事实上所有模块都是相同端结构的并且任何数据通路或者桥接器也是相同端结构的。不支持动态端结构,因为在大多数嵌入式系统中,这将导致明显的硅晶片较高,也就是多余的。对于模块设计者而言建议只有应用场合非常宽泛的模块才应该被设计为双端结构的,通过一个配置引脚或者内部控制位来选择端结构。对于更多的特定用途的模块,固定端结构为大端或者小端将产生体积更小、功耗更低、性能更高的接口。

4.7 仲裁

仲裁机制被用来确保任意时刻只有一个主机能够访问总线。仲裁器的功能是检测许多不同的使用总线的请求和决定当前请求总线的主机中哪一个的优先级最高。仲裁器也接收来自从机需要完成SPLIT 传输的请求。任何没有能力执行SPLIT 传输的从机不需要了解仲裁的过程,除非它们需要检测因为总线所有权改变而导致突发传输不能完成的情况。

HBUSREQx :被总线主机用来请求访问总线的总线请求信号。每个总线主机都有自己的连接到仲裁器的HBUSREQx 信号并且任何一个系统中都可以有高达16 个独立的总线主机。

HLOCKx :由主机在请求总线的同时时断言的锁定信号。这提示仲裁器主机正在执行一系列不可分割的传输并且一旦锁定传输的第一个传输已经开始仲裁器不能授予任何其他主机访问总线。HLOCKx 必须在涉及到的地址被寻址到之前至少断言一个周期,以防止仲裁器改变授予信号。

HGRANTx :授予信号由仲裁器产生并且表示相关主机是当前请求总线的主机中优先级最高的主机,优先考虑锁定传输和SPLIT 传输。主机在HGRANTx 为高时获取地址总线