AMBA总线——BURST传输-续

387 阅读2分钟

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

image.png

几点说明

  • 对于固定长度的burst传输,不必持续请求总线
  • 对于未定义长度的burst传输,主设备应该持续送出HBUSREQ信号,直到开始最后一次传输
  • 如果没有主设备请求总线,则给缺省主设备grant信号,且HTRANS=IDLE 【主线处于空闲状态】
  • 建议主设备在锁定总线传输结束之后插入IDLE传输,以重新仲裁优先级。

Split传输过程

  • 由主设备开始传输
  • 如果从设备需要多个周期才能获取数据,则从设备给出一个split传输响应。从设备记录主设备号:HMASTER.接着仲裁器改变主设备的优先级。
  • 仲裁器grant其他的主设备,总线主设备移交。
  • 当从设备准备结束本次传输,将设置给仲裁器的HSPLITx信号相应位
  • 仲裁器恢复优先级
  • 仲裁器grant 主设备,这样主设备可以重新开始传输,
  • 结束

防止Deadlock(死锁)

  • 当多个不同的主设备试图访问同一个从设备,这个从设备发出了SPLIT或RETRY信号,这时很可能发生deadlock
  • 从设备最多可以接收系统中16个主设备的请求。只需要记录主设备号(忽略地址和控制信号)
  • 给出RETRY响应的从设备在某一时刻只能由一个主设备访问
    • 可以使用一些硬件保护机制,比如ERROR

    AHB主设备接口(这个重要)

image.png

image.png

image.png

image.png

image.png

AHB-Lite

![image.png](p9-juejin.byteimg.com/tos-cn-i-

AHB总结

  • 主要组成部分
    • Master、slaves、arbiter、decoder
  • 传输的过程
    • 流水线机制(两级流水
    • Address phase 和 data phase
  • 如何提高性能
    • Burst read/write
  • 仲裁机制
    • 总线控制权的移交
  • Slave短时间无法响应
    • HREADY信号拉低
  • Slave长时间内无法响应
    • 插入SPLIT/RETRY
  • Master 不能进行传输
    • 插入BUSY[通过trans信号插入一个busy]

AHB应用建议

  • Arbiter的优先级可以配置
  • Slave长时间不能响应的话,一般不支持SPLIT响应,使用RETRY响应
  • 总线上如果只有一个master的话,可以使用AHB-Lite协议,不用arbiter
  • 设计一个新的IP时,要仔细核对AMBA的Feature和IP所支持的Feature是否匹配

image.png