第七篇:AXI4-Lite与AXI4-Stream
AXI4协议针对不同场景提供了两个关键子协议: AXI4-Lite (轻量级控制)和 AXI4-Stream (流式数据传输)。本篇将深入对比它们的特性、接口设计及应用场景,帮助读者灵活选择适配方案。
1. AXI4-Lite:轻量级控制接口
AXI4-Lite是AXI4的简化版本,专为低复杂度、低带宽的寄存器或控制接口设计。
1.1 核心特性
- 单次传输 :
不支持突发传输(AxLEN=1
),每次事务仅传输1拍数据。
地址必须按数据宽度对齐(如32位数据对应地址末2位为0)。 - 信号精简 :
移除AxLEN
、AxBURST
、AxCACHE
等复杂信号。
仅保留基础控制信号(AxADDR
、AxVALID
、AxREADY
等)。 - 资源占用低 :
逻辑复杂度较AXI4减少50%以上,适合FPGA资源受限场景。
1.2 接口信号
AXI4-Lite接口信号与AXI4对比(以写通道为例):
信号 | AXI4 | AXI4-Lite | 说明 |
---|---|---|---|
AWADDR | ✓ | ✓ | 写地址 |
AWLEN | ✓ | ✗ | 突发长度(AXI4-Lite固定为1) |
AWSIZE | ✓ | ✗ | 数据宽度(由总线宽度隐式定义) |
WSTRB | ✓ | ✓ | 字节使能 |
BVALID/BREADY | ✓ | ✓ | 写响应通道 |
1.3 典型应用场景
- 外设寄存器配置 :
通过AXI4-Lite访问GPIO、UART、SPI等外设的控制寄存器。 - 低带宽控制接口 :
传感器校准参数写入、状态寄存器读取。 - 硬件加速器控制 :
启动/停止命令、工作模式配置。
示例操作 (32位寄存器写入):
verilog
// 写入地址0x1000,数据0x12345678
assign AWADDR = 32'h1000;
assign WDATA = 32'h12345678;
assign AWVALID = 1'b1;
assign WVALID = 1'b1;
assign WSTRB = 4'b1111; // 4字节使能
// 等待AWREADY和WREADY握手
2. AXI4-Stream:无地址流式传输
AXI4-Stream专为高吞吐量、无地址的连续数据流设计,适用于实时数据传输。
2.1 核心特性
- 无地址机制 :
数据按顺序连续传输,无需指定目标地址。
接收端通过TLAST
标记数据包边界。 - 极简接口 :
仅包含数据通道(无地址、响应通道)。
支持背压机制(通过TVALID
/TREADY
握手)。 - 高实时性 :
数据流“即到即传”,无地址解析延迟。
2.2 接口信号
AXI4-Stream核心信号:
信号 | 方向 | 描述 |
---|---|---|
TVALID | 主→从 | 发送端数据有效 |
TREADY | 从→主 | 接收端准备好接收数据 |
TDATA[N:0] | 主→从 | 传输的数据(位宽可配置) |
TLAST | 主→从 | 标记数据包最后一拍 |
TKEEP[N/8-1:0] | 主→从 | 字节使能(可选) |
TUSER[M:0] | 主→从 | 用户自定义附加信息(可选) |
2.3 传输时序
- 基本握手规则 :
发送端在TVALID=1
时保持数据稳定,直到TREADY=1
完成传输。
TLAST=1
表示当前拍是数据包的结尾。
2.4 典型应用场景
- 视频流处理 :
摄像头数据通过AXI4-Stream传输到ISP(图像信号处理器)。 - 高速数据采集 :
ADC采样数据实时传输至FPGA处理模块。 - DMA传输 :
DMA控制器将内存数据以流形式推送至外设(如以太网MAC)。
示例操作 (视频行数据传输):
**verilog**
// 传输一行1920像素的RGB数据(每像素32位)
// 传输一行1920像素的RGB数据(每像素32位)
for (int i=0; i<1920; i++) begin
assign TDATA = rgb_data[i];
assign TVALID = 1'b1;
assign TLAST = (i == 1919) ? 1'b1 : 1'b0;
wait (TREADY); // 等待接收端准备
end
---
3. AXI4-Lite与AXI4-Stream对比
特性 | AXI4 | AXI4-Lite | AXI4-Stream |
---|---|---|---|
传输类型 | 地址映射读写 | 单次寄存器读写 | 无地址连续流 |
突发传输 | 支持(1~256) | 不支持(固定1拍) | 无地址,持续流 |
通道数量 | 5个独立通道 | 5个(简化版) | 1个数据通道 |
吞吐量 | 高 | 低 | 极高 |
典型应用 | 内存控制器 | 外设寄存器 | 视频/传感器数据流 |
4. 混合系统设计案例
4.1 视频处理系统
- AXI4-Stream :
摄像头输入 → 图像预处理模块 → HDMI输出。 - AXI4-Lite :
CPU通过AXI4-Lite配置预处理参数(如对比度、亮度)。 - AXI4 :
帧缓冲区通过AXI4接口连接DDR内存。
4.2 数据采集与控制系统
- AXI4-Stream :
ADC采集数据流 → FPGA滤波模块 → 实时显示。 - AXI4-Lite :
CPU通过AXI4-Lite配置ADC采样率、滤波系数。
5. 设计注意事项
5.1 AXI4-Lite的地址对齐
若主设备发送未对齐地址,从设备需返回 SLVERR
(或忽略未对齐位)。
5.2 AXI4-Stream的流控
接收端需及时置 TREADY=1
,避免数据丢失。若接收缓冲满,可暂停握手。
5.3 协议转换桥接
- AXI4-Stream转AXI4 :
添加地址生成逻辑,将数据流写入内存(如DMA控制器)。 - AXI4转AXI4-Stream :
从内存读取数据并转换为流格式(如视频帧读取)。
6. 总结
AXI4-Lite :轻量化控制接口,适合寄存器访问。
AXI4-Stream :高效流式传输,专为实时数据设计。
附录:协议转换代码片段
AXI4-Stream转AXI4写传输(Verilog片段) :
verilog
// 状态机控制流数据写入内存
always @(posedge ACLK) begin
case (state)
IDLE:
if (TVALID && TREADY) begin
AWADDR <= target_addr;
WDATA <= TDATA;
AWVALID <= 1'b1;
WVALID <= 1'b1;
state <= SEND_ADDR_DATA;
end
SEND_ADDR_DATA:
if (AWREADY && WREADY) begin
AWVALID <= 1'b0;
WVALID <= 1'b0;
target_addr <= target_addr + 4; // 32位数据,地址递增4
state <= IDLE;
end
endcase
end