AMBA2 AHB 相关理解(二)
1. Slave的两个HREADY信号
- 仲裁器给从机的HREADY_IN信号,通知这个从机是否有其它从机还未完成传输。
- 从机给主机HREADY_OUT信号,通知主机,从机传输的情况。
- 从机可以拉低HREADY_OUT信号,反压主机,插入等待状态,主机信号不变,等待从机可以继续进行传输。
- 注意:AHB2中只有HREADY信号,指的是HREADY_OUT信号。在AHB3 和 5才出现了HREADY_OUT信号。
- 为什么需要HREADY_IN信号? 将所有从机反馈给主机的HREADY_OUT信号&在一起,作为slave的HREADY_IN,那么就可以判断出是否存在slave还没有传输完成。
2. 传输类型
- AHB 的传输类型分为四种类型,由HTRANS[1:0]表示。
- (1)IDLE('b00):
- 在主机不想进行数据传输时,会使用IDLE类型的数据传输。从机必须为IDLE类型提供零等待状态的OKAY响应,举例:如下图所示。
- 在主机不想进行数据传输时,会使用IDLE类型的数据传输。从机必须为IDLE类型提供零等待状态的OKAY响应,举例:如下图所示。
- (2)BUSY('b01):
- 当主机无法立即执行一次突发传输中的某个beat的传输,主机可以使用BUSY来延缓下一个beat的传输。
- 只有未定义长度的突发传输才可以将BUSY作为突发传输最后一个cycle。
- 从机必须对BUSY状态提供零等待状态的OKAY响应。
- (3)NONSEQ('b10):
- 单次传输或者突发传输的首次传输。
- (4)SEQ('b11)
- 地址和上1个beat传输相关,控制信息与上1个beat相同。
- (1)IDLE('b00):
3. 回环突发传输(WRAP)
- 用途:可以用于Cache读写内存,因为cache是按照cache line进行操作,采用wrap传输可以方便的实现从内存中取回整个cache line。
- 我的计算方法是:使用拍数 * 传送大小,得到的值A。依照回环突发传输的起点,决定传送起点为n*A。之后回环突发要保持最高位不变。
- 举例:WRAP4,传输大小(HSIZE)为4Bytes,起点为0x38.
- 所以得到的A = 16,16 - 5'b1_0000,依据起点,选择回环突发传输的起点为 6'b10_0000,保持最高位不变可以得到的最大值为0x3f。因此回环传输遍历的几个地址为0x38,0x3C,0x30,0x34.
- 举例:WRAP4,传输大小(HSIZE)为4Bytes,起点为0x38.
4. 复位信号
- 复位期间,HTRANS[1:0]指示为IDLE。从机反馈给主机的HREADYOUT信号拉高。
5. Locked Transfer
- 需求:很多汇编指令有原子操作指令。
- 原子操作就是不可中断的一个或者一系列操作,不会被线程调度机制打断的操作。
- AHB中举例:主机1去写数据,还没写完,主机2就去读数据,读出的并不是想要的数据。此时可以拉高HMASTERLOCK信号锁住主机1的写传输,不让主机2进行打断。
- 大部分的slave不会被多个master访问,并不需要HMASTERLOCK信号。常见的多端口Memory Controller,就必须实现HMASTERLOCK信号的机制。
6. 突发传输 和 流水线形式的SINGLE TRANSFER是一样快的吗?
- 对于紧耦合SRAM来说,两者都是N+1个周期。
- 对于DDR来说,突发传输只需要发一次命令,就可以得到连续的数据。
- 但是多比特Single Transfer传输,DDR并不知道两笔Transfer之间的地址关系,DDR的读取时序并不是完全的流水线式,这中间可能会阻塞很多个周期。
7. AHB总线矩阵系统
- 单层AHB缺点:多个主设备需要等待使用一条总线,影响了数据访问时间和吞吐量。
- 需求:多个master和多个slave之间进行通信时,可以使用matrix进行互联。可以提高访问带宽。
- 使用多条AHB总线互联体系,从机前面的仲裁器用来防止多个主机同时访问同一个从设备。
8. AHB_Lite
- 只支持一个主设备,相较于AHB2总线没有仲裁模块。
- HRESP信号不支持分块和重试响应。
- 相较于AHB2,AHB_LITE具有两个HREADY信号:HREADY和HREADYOUT信号。
如有错误,请指正!!