持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第20天!
几点说明
- 对于固定长度的burst传输,不必持续请求总线
- 对于未定义长度的burst传输,主设备应该持续送出HBUSREQ信号,直到开始最后一次传输
- 如果没有主设备请求总线,则给缺省主设备grant信号,且HTRANS=IDLE 【主线处于空闲状态】
- 建议主设备在锁定总线传输结束之后插入IDLE传输,以重新仲裁优先级。
Split传输过程
- 由主设备开始传输
- 如果从设备需要多个周期才能获取数据,则从设备给出一个split传输响应。从设备记录主设备号:HMASTER.接着仲裁器改变主设备的优先级。
- 仲裁器grant其他的主设备,总线主设备移交。
- 当从设备准备结束本次传输,将设置给仲裁器的HSPLITx信号相应位
- 仲裁器恢复优先级
- 仲裁器grant 主设备,这样主设备可以重新开始传输,
- 结束
防止Deadlock(死锁)
- 当多个不同的主设备试图访问同一个从设备,这个从设备发出了SPLIT或RETRY信号,这时很可能发生deadlock
- 从设备最多可以接收系统中16个主设备的请求。只需要记录主设备号(忽略地址和控制信号)
- 给出RETRY响应的从设备在某一时刻只能由一个主设备访问
- 可以使用一些硬件保护机制,比如ERROR
AHB主设备接口(这个重要)
AHB-Lite

- 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是否匹配