AHB协议中的回环传输(WRAP)和自增传输(INCR)
AMBA解读可参考: https://www.cnblogs.com/icwangpu/p/16535941.html
AMBA AHB协议支持不同类型的突发传输,包括
| HBURST[2:0] | 类型 | 描述 |
|---|---|---|
| 000 | single | 单拍传输 |
| 001 | incr | 未定义长度的自增传输 |
| 010 | wrap4 | 4拍回绕传输 |
| 011 | incr4 | 4拍自增传输 |
| 100 | wrap8 | 8拍回绕传输 |
| 101 | incr8 | 8拍自增传输 |
| 110 | wrap16 | 16拍回绕传输 |
| 111 | incr16 | 16拍自增传输 |
其中single比较好理解,代表只在HADDR上发送或接收一个HSIZE数据的传输;
INCR4表示总共将发送4个HSIZE大小的数据,按照当前的HADDR,后续依次增加地址即可
WARP8表示总共将发送8个HSIZE大小的数据,并且将在地址边界处回环。

如上图,初始地址在0x34,发送wrap8将在越过0x3c处环回到0x20,这里环回地址的计算方法是将总共要发送的数据8*每个数据大小Word(4B)
也就是总共会有32B的数据,需要占据总共0x20位地址。将初始地址0x34除以对齐地址0x20商1余0x14,因此总共的环回地址区间就 [0X20: 0X40)
这种burst传输方式一般可以用在对cache line的读取上,每次NONSEQ先取目标地址的数据,后续SEQ把地址附近连带的数据都取出来
下面以INCR为例解释下时序信号

如上图是一个AHB 传输BURST类型是未定义的自增传输(INCR)的时序图,AHB每次传输分为两个阶段,地址阶段和数据阶段,可以流水线(在上次传输的数据阶段直接断言下次的地址阶段)
1、在T0时刻
master获取到了总线使用权,准备发送一次BURST,因此在该时刻内master断言了各种总线控制信号:BURST类型置为了INCR,因为是该BURST的第一个传输,HTRANS置为了NSEQ,操作类型为写入,拉高HWRITE,传输的数据大小是半字(2Byte),因此地址要求是低两位只能为10,00,首个地址是0x20,后面递增就是0x20+2,+4,+6...
2、在T1时刻
master进入第一次传输的数据阶段,将要写入的数据放在HWDATA上,由于HREADYOUT信号为高,同时进入第二个传输的地址阶段,将地址及控制信号断言,此时HTRANS传输类型应是SEQ,地址递增;
slave在HCLK上升沿到了总线上master传递的地址及控制信号,可以进行传输,就拉高HREADYOUT,并将在下个时钟沿采样数据
3、在T2时刻
master采样到了HREADYOUT上的拉高信号,表明第一次传输结束,进行第二次传输的数据阶段,在HWDATA总线上写上数据。同时本次INCR的突发传输完毕了,开始断言下一次传输的控制信号。是每次4Byte的读操作INCR突发。
slave在边沿采样了HWDATA总线上的数据,第一次传输完成;并且采样了控制信号,可以进行数据传输,拉高HREADYOUT信号,等待下次在总线采样数据
4、在T3时刻
master采样到了HREADYOUT上的拉高信号,表明第二次数据传输成功,开始进行读操作的第一个传输的数据阶段,将在下周期采样数据;同时断言第二次读操作的地址阶段信号
slave在边沿采样了HWDATA总线上的数据,第二次传输完成;同时采样到了master断言的读操作地址信号,发现自身无法在下个周期完成,就将HREADYOUT信号拉低要求延长读操作的数据周期
5、在T4时刻
master采样到了HREADYOUT上的低信号,由于此时HTRANS是SEQ,无法进行新的控制信号的断言,保持控制信号直到HREADY拉高
slave此时可以完成第一次读操作,就将HREADYOUT信号拉高,并把相应数据放入HRDATA总线上
6、在T5时刻
master采样到HREADYOUT上的拉高信号,HRDATA上的数据有效,第一次读完成,master进入第二次读的数据阶段,将在下个时钟沿采样数据,同时流水线进入第三次读的地址阶段
slave采样到第二次读的控制信号,判断自身可以完成,就拉高HREADYOUT信号拉高,并把相应数据放入HRDATA总线上
7、在T6时刻
master采样到HREADYOUT上的拉高信号,HRDATA上的数据有效,第二次读完成,master进入第三次读的数据阶段,将在下个时钟沿采样数据;
slave采样到第二次读的控制信号,判断自身可以完成,就拉高HREADYOUT信号拉高,并把相应数据放入HRDATA总线上
8、在T7时刻
master采样到HREADYOUT上的拉高信号,HRDATA上的数据有效,第三次读完成,本次INCR突发完成
注意:
1 master判断数据有效不仅采样HREADY,还会采样HRESP,只有HRESP为OKEY才可以,如果是ERROR则会花费两周期响应进行地址修改
2 slave可以在任意突发中拉低HREADY以延长数据周期
浙公网安备 33010602011771号