文章目录
地址译码
HSELx:选择从设备,指出由主设备所选择的从设备
由地址译码器来提供选择信号
一个从设备应该至少占用1KB的存储空间
需要一个额外的缺省从设备来映射其它的存储地址
从设备响应
所访问的从设备必须响应这次传输
从设备可能返回的响应:
- 完成这次传输
- 插入等待状态(HREADY)
- 发出错误信号表示这次传输失败
- 延迟传输,使得总线可用于其它传输(split)
从设备响应信号
- HREADY:transfer done
- HRESP[1:0]:transfer response
OKAY(00) 成功 单周期响应
ERROR(01) 失败 两周期响应
RETRY(10) 传输未完成;请求主设备重新开始一个传输 两周期响应
SPLIT(11)传输未完成;请求主设备分离一次传输 两周期响应
总线的流水特性需要从设备两个周期的响应。这样使得主设备有足够的时间出去下一次传输。
RETRY和SPLIT
- RETRY:arbiter会继续使用通常的优先级
- SPLIT:arbiter会调整优先级方案以便其它请求总线的主设备可以访问总线
总线主设备应该用同样的方式处理RETRY响应和SPLIT响应
数据总线
- 不是三态总线,读总线和写总线是分开的。
- 印第安序
在AMBA协议中没有定义
主设备和从设备应该采用同样的印第安序
不支持动态印第安序 - 一般来说,数字设计内部没有INOUT,它只会在芯片pad上有
32bit小印第安序数据总线的有效字节
AHB仲裁信号
- HBUSREQ 总线请求
- HLOCKx 高电平:主设备请求锁定总线
- HGRANTx 指出主设备x可访问总线,主设备x控制总线:HGRANTx=1且HREADY=1
- HMASTER[3:0] 指出那个主设备总在进行传输
- HMASTLOCK 指出主设备正在进行一次锁定传输
- HSPLITx 从设备用这个信号告诉仲裁器那个主设备允许重新尝试一次split传输
每一位对应一个主设备
失去grant之后,还可以再传一个地址+数据
总线主设备GRANT信号
- 对于固定长度的burst传输,不必持续请求总线
- 对于未定义长度的burst传输,主设备应该持续送出HBUSREQ信号,直到开始最后一次传输
- 如果没有主设备请求总线,则给缺省主设备grant信号,且HTRANS=IDLE
- 建议主设备在锁定总线传输结束之后IDLE传输,以重新仲裁优先级。
Split传输过程
- 由主设备开始传输
- 如果从设备需要多个周期才能获取数据,则从设备给出一个SPLIT传输响应。从设备记录主设备号:HMASTER。接着仲裁器改变主设备的优先级。
- 仲裁器grant其它的主设备,总线主设备移交
- 当从设备准备结束本次传输,将设置给仲裁器的HSPLITx信号的相应位
- 仲裁器恢复优先级
- 仲裁器grant主设备,这样主设备可以重新开始传输
- 结束
防止Deadlock
- 当多个不同的主设备试图访问同一个从设备,这个从设备发出了SPLIT或RETRY信号,这时很可能发生deadlock
- 从设备最多可以接收系统中16个主设备的请求。只需要记录主设备号(忽略地址和控制信号)
- 给出RETRY响应的从设备在某一时刻只能由一个主设备访问。
可以使用一些硬件保护机制,比如ERROR
AHB主设备接口
AHB从设备接口
AHB Arbiter
AHB Decoder
关注作者
- 自述
作者是一位中科大数字设计专业的研究生,水平有限,如有错误,请大家指正,想要与大家一同进步。 - 经历
曾获得国家奖学金,“高教社杯”数学建模国家二等奖等 - 陆续更新:
1.与verilog数字设计相关的一些基础模块设计
2.SV与UVM
3.数字IC设计/验证过程中一些工具及语言的用法
4.保研与竞赛经历等 - 微信公众号
欢迎大家关注公众号“数字IC小白的日常修炼”,期待与大家一同仗剑遨游数字IC世界。