AXI4读操作
图 4‑15 读通道架构
如上图所示,主设备向从设备通过读地址通道指定读数据地址及控制信号,从设备通过读数据通道将指定地址上的数据传输给主设备。
图4‑16 Read Burst 流程
1、当状态机的当前状态为WAIT_START时,master将ARVALID拉高。
2、slave收到ARVALID信号后,将ARREADY拉高,持续到一次burst_len传完为止。master收到ARREADY拉高的信号后,将ARVALID拉低。
3、ARADDR在ARVALID为高时给定对应地址。
4、RREADY信号在收到RVALID信号为高时拉高,保持一个周期,读取出数据。
5、RVALID信号由slave控制,具体控制模式参考slave模块的设计。
6、当一次读取的最后一个数据包读取时将RLAST拉高,表示一次Burst读取完毕。
图4‑17 读操作信号依赖
如图可知,读操作的两个channel之间存在如下的依赖关系:必须等到ARVALID和ARREADY同时为High后,RVALID才能拉高。
AXI4写操作:
图4‑18 写通道架构
如上图所示,主设备向从设备通过写地址通道指定写数据地址及控制信号,从设备通过写数据通道将指定数据写到从设备的指定地址上。待数据写入完成后,从设备通过写响应通道向主设备传递写响应信号,表明写入完成。
图4‑19 Write Burst 流程
1、当状态机的当前状态为WAIT_START时,master将AWVALID拉高。
2、slave收到AWVALID信号后,将AWREADY拉高,持续到一次burst_len写完为止.master收到AWREADY拉高的信号后,将AWVALID拉低。
3、AWADDR在AWVALID为高时给定对应地址。
4、WREADY信号在收到WVALID信号为高时拉高,保持一个周期,写入数据。
5、WVALID信号由slave控制,具体控制模式参考slave模块说明。
6、当一次写入的最后一个数据包读取时将WLAST拉高,表示一次写入完毕。
7、BRESP和BVALID都由slave控制,当收到WLAST信号时,BVALID拉高。
8、BREADY可以一直拉高,也可以在AWREADY信号拉高后保持拉高。直到BVALID信号拉高时将其拉低即可。
其中写操作的信号依赖关系如下:
图4‑20 写操作依赖
如图可知,ADDR和DATA两个channel之间不存在依赖关系,需要满足的是必须等到WVALID和WREADY同时为High,且最后一次传输完成后,BVALID才能拉高,表明写操作结束。
通道握手信号之间的依赖关系
为了对VALID和READY之间的关系有更深刻理解,下面在展开说明一下。
为了防止发生死锁,必须重视握手信号之间的依赖关系。
任何交易中:
l一个 AXI 模块的VALID 信号不能依赖于另一个模块的READY 信号
lREADY 信号可以等待VALID 信号使能
-------------------注意---------------------------------------------
可以在使能 VALID 信号之后使能READY,也可以在使能VALID 信号之前将
READY 信号使能为默认值,这样设计更高效。.
--------------------------------------------------------------------
图4‑21和图4‑22为各握手信号之间的依赖关系图。单箭头指向的信号可以在指向它的信号未使能或使能后,它再使能;双箭头向的信号,必须在指向它的信号全都使能后,它再使能。
图4‑21中所示,在一次读交易中:
l从设备使能ARREADY 信号之前,可以在等待 ARVALID 信号被使能。
l从设备必须等待ARVALID 和ARREADY信号都有效后,再去使能RVALID 信号以返回读数据