AXI4 是一种 FPGA 中常用的片内高速总线协议,其分为三种总线接口:AXI4 Stream(即 AXIS)、AXI4 Lite 和 AXI4 (Full)。(以下简称为 AXIS、AXI Lite 和 AXI)
1.三种接口的区分
三种总线接口之间的区别也非常明显,他们各自的职能如下:
AXI 是按地址可以批量读写,适合 DDR、大块数据搬运
AXI Lite 是按地址单次单包读写,适合配置和读取寄存器、状态
AXIS 是连续数据流传输,适合包传输和流水线传输
三者的对比可以直观列表如下:
2.AXI的工作原理
三者也有共同点,他们都是依靠 valid 和 ready 信号握手来工作的,valid 表示数据是否有效,ready 表示是否可以接收。AXIS 通道较为简单就以 AXIS 为例,发送端数据准备妥当后 valid 信号置 1,接收端准备接收数据时 ready 置 1,ready 信号由接收端发送给发送端,valid 信号则是由发送端发送给接收端;valid 和 ready 均为 1 时开始传输数据。一方结束时将自己的信号置 0 表示目前不参与传输;其中,valid 置 0 表示当前没有有效数据,ready 置 0 表示接收端暂时不接收数据,特别的,ready 置 0 而 valid 仍为 1 的情况被称为反压。通过反压可以控制数据流中的数据传输节奏。在有些设计中会启用 LAST 信号,LAST 信号主要用于标注写边界,在 AXI 突发传输和 AXIS 传输中 LAST 用于表示该次传输的最后一包。
尽管 AXI 和 AXI Lite 比 AXIS 通道多,但是其工作原理依然相通,其五个通道及通道职能如下:
值得注意的是 AW 和 W 通道是独立握手的,二者数据都可能先到。一次完整的突发写入过程如下:
AW 发送起始地址、写入长度、每拍大小和突发类型;W 逐拍发送数据,可以使用 WLAST 标注数据边界;B 负责接收写入响应,用于检测是否成功写入。读的过程也类似,只不过读响应从 R 通道直接接收。
AXI 和 AXI Lite 的区别主要是在工作效率上,AXI Lite 每次仅能操作一包数据,AXI 则支持一次操作多包数据(即 burst 模式)
默认评论
Halo系统提供的评论