AMBA总线——BURST传输

916 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第19天!

  • AHB Burst 操作
    • 4beat、8beat、16beat 、单个字节传输、未定义长度的传输
    • 支持incrementingwrapping两种burst传输
  • incrementing burst
    • 地址是上一次的传输地址加1
  • Wrapping burst
    • 例:4beat的wrapping burst 字传输(4byte)
    • 0x34 -> 0x38 -> 0x3c -> 0x30
    • 应用场合:Cache填充

地址计算举例

  • 根据HSIZE和HBURST来计算地址
  • 例:起始地址是0x48,HSIZE=010(32bits)
HBURSTTypeAddress
000SINGLE0X48
001INCR0X48,0X4C,0x50,...[The most useful]
010WRAP40X48,0x4C,0x40,0x44
011INCR40X48,0x4C,0x50,0x54
100WRAP80X48,0x4C,0x50,0x54,0x58,0x5c,0x40,0x44
101INCR80X48,0x4C,0x50,0x54,0x58,0x5c,0x60,0x64
110WRAP160X48,0x4C,...,0x7c,0x40,0x44
111INCR160X48,0x4C,...,0x7c,0x80,0x84

Example LDM AHB Activity

image.png

注意!

  • Burst传输不能传输1K边界
    • 一个从设备最小的地址间隙是1KB
    • NONSEQ->SEQ-> 1KB Boundary -> NONSEQ -> SEQ...
  • 主设备不能试图开始一个可能穿越1K边界的固定长度的incrementing burst传输

image.png

地址译码

  • HSELx:选择从设备
    • 指出由主设备所选择的从设备
  • 由地址译码器来提供选择信号
  • 一个从设备应该至少占用1KB的存储空间
  • 需要一个额外的缺省从设备来映射其他的存储地址

image.png

从设备响应

  • 所访问的从设备必须响应这次传输
  • 从设备可能返回的响应:
    • 完成这次传输[HREAY信号拉高]
    • 插入等待状态(HREDAY信号)
    • 发出错误信号表示这次传输失败【通过hresp信号返回一个error信号】
    • 延迟传输,使得总线可用于其他传输(split)

从设备响应信号

  • HREDAY:transfer done
  • HRESP[1:0] :transfer response
    • 00:OKAY
      • 成功
    • 01:ERROR
      • 失败
    • 10:RETRY
      • 传输未完成
      • 请求主设备重新开始一个传输
    • 11: SPLIT
      • 传输未完成
      • 请求主设备分离一次传输

    两周期的响应

    • HRESP[1:0]
      • OKAY: 单周期响应
      • ERROR:两周期响应
      • RETRY: 两周期响应
      • SPLIT: 两周期响应
  • 总线的流水特性需要从设备两个周期的响应。可以使得主设备有足够的时间处理下一次传输

一般情况下,在AHB总线上不会给出Retry和Split这种传输方式的;一般情况下把ready信号拉低几拍即可。IP的设计,都是写寄存器,寄存器写一拍即可。

image.png

RETRY和SPLIT的不同

  • 主要区别在于仲裁的方式
    • RETRY:arbiter会继续使用通常的优先级
    • SPLIT: arbiter 会调整优先级方案以便其他请求总线的主设备可以访问总线
  • 总线主设备应该用同样的方式处理RETRY响应和SPLIT响应。

数据总线

  • 不是三态总线,读总线和写总线是分开的。三态总线:写/读/IZ[没有写读的时候状态]
  • 印第安序
    • 在AMBAZ协议中没有定义
    • 主设备和从设备应该采用同样的印第安序
    • 不支持动态印第安序
  • 对于IP设计,只有应用面比较广泛的应用程序才支持两种印第安序 little endEan小端模式(AMBA总线默认是这种)

image.png 0地址就存最低位,3地址就存最高位。
big endEan (大印第安序)

image.png

image.png

image.png

多个主设备-需要仲裁机制

AHB 仲裁信号

image.png

  • HBUSREQx
    • 总线请求
  • HLOCKx
    • 高电平:主设备请求锁定总线
  • HGRANTx
    • 指出主设备x可访问总线
    • 主设备x控制总线:HGRANTx=1且 HREADY =1
  • HMSTER[3:0]
    • 指出那个主设备正在进行传输
  • HMASTLOCK
    • 指出主设备正在进行一次锁存传输
  • HSPLITx[15:0]
    • 从设备用这个信号告诉仲裁器哪个主设备允许重新尝试一次split传输
    • 每一位对应一个主设备

image.png

image.png

image.png