AXI 协议
XI 协议主要描述了主设备和从设备之间的数据传输方式,主设备和从设备之间通过握手信
号建立连接。当从设备准备好接收数据时,会发出 READY 信号。当主设备的数据准备好时, 会
发出和维持 VALID 信号,表示数据有效。数据只有在 VALID 和 READY 信号都有效的时候才开始
传输。当这两个信号持续保持有效,主设备会继续传输下一个数据。主设备可以撤销 VALID 信
号,或者从设备撤销 READY 信号终止传输。 AXI 的协议如图, T2 时,从设备的 READY 信号有效,
T3 时主设备的 VILID 信号有效,数据传输开始。
在 ZYNQ 中,支持 AXI-Lite, AXI4 和 AXI-Stream 三种总线,通过表 5-1,我们可以看到这三中
AXI 接口的特性。
AXI4-Lite:
具有轻量级,结构简单的特点,适合小批量数据、简单控制场合。不支持批量传输,读写时一次只能读写一个字(32bit)。主要用于访问一些低速外设和外设的控制。
AXI4:
接口和 AXI-Lite 差不多,只是增加了一项功能就是批量传输,可以连续对一片地址进行一次性读写。也就是说具有数据读写的 burst 功能。
上面两种均采用内存映射控制方式,即 ARM 将用户自定义 IP 编入某一地址进行访问,读写时就像在读写自己的片内 RAM,编程也很方便,开发难度较低。代价就是资源占用过多,需要额外的读地址线、写地址线、读数据线、写数据线、写应答线这些信号线。
AXI4-Stream:
这是一种连续流接口,不需要地址线(很像 FIFO,一直读或一直写就行)。对于这类 IP, ARM不能通过上面的内存映射方式控制(FIFO 根本没有地址的概念),必须有一个转换装置,例如AXI-DMA 模块来实现内存映射到流式接口的转换。 AXI-Stream 适用的场合有很多:视频流处理;通信协议转换;数字信号处理;无线通信等。其本质都是针对数值流构建的数据通路,从信源
(例如 ARM 内存、 DMA、无线接收前端等)到信宿(例如 HDMI 显示器、高速 AD 音频输出,等)构建起连续的数据流。这种接口适合做实时信号处理。
AXI4 和 AXI4-Lite 接口包含 5 个不同的通道:
Read Address Channel
Write Address Channel
Read Data Channel
Write Data Channel
Write Response Channel
其中每个通道都是一个独立的 AXI 握手协议。下面两个图分别显示了读和写的模型: