《深入理解AXI4协议:从入门到实践》 -- 第七篇:AXI4-Lite与AXI4-Stream

第七篇:AXI4-Lite与AXI4-Stream

AXI4协议针对不同场景提供了两个关键子协议: AXI4-Lite (轻量级控制)和 AXI4-Stream (流式数据传输)。本篇将深入对比它们的特性、接口设计及应用场景,帮助读者灵活选择适配方案。


1. AXI4-Lite:轻量级控制接口

AXI4-Lite是AXI4的简化版本,专为低复杂度、低带宽的寄存器或控制接口设计。

1.1 核心特性
  • 单次传输
    不支持突发传输(AxLEN=1),每次事务仅传输1拍数据。
    地址必须按数据宽度对齐(如32位数据对应地址末2位为0)。
  • 信号精简
    移除 AxLENAxBURSTAxCACHE等复杂信号。
    仅保留基础控制信号(AxADDRAxVALIDAxREADY等)。
  • 资源占用低
    逻辑复杂度较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  

你可能感兴趣的:(AXI4,协议,fpga开发,开源协议)