AXI4-Stream 格式:高性能流式数据传输的标准化协议(上)
扫描二维码
随时随地手机看文章
在现代数字系统设计中,流式数据传输(如视频、音频、传感器数据流)的高效性和可靠性直接决定了系统性能。AXI4-Stream 作为 ARM 公司 AMBA(Advanced Microcontroller Bus Architecture)协议家族的重要成员,专为连续流式数据传输设计,已成为片上系统(SoC)和 FPGA 中高速数据链路的事实标准。本文将系统解析 AXI4-Stream 格式的协议规范、技术特性及应用实践。
一、AXI4-Stream 格式的核心定义与设计目标
AXI4-Stream 是一种面向无地址、连续数据流的点对点传输协议,与面向存储器映射的 AXI4 协议不同,它取消了地址通道,专注于数据的高效流式传输。其核心设计目标包括:
高带宽利用率:通过简化控制信号和支持突发传输,最大化数据传输效率
灵活性:适应不同类型的流式数据(从低速传感器数据到高速视频流)
可扩展性:支持宽数据总线(8 位至 1024 位)和多种扩展信号
简单性:减少协议开销,降低硬件实现复杂度
AXI4-Stream 格式的本质是定义了一套数据帧结构和传输规则,使发送端(Source)和接收端(Sink)能够无缝协作,实现数据的有序、高效传输。
二、AXI4-Stream 的信号组成与帧结构
1. 基础信号集
AXI4-Stream 的核心信号包括数据传输和控制两类,构成了协议的基础框架:
TDATA:数据总线,宽度可配置(8/16/32/64/128/256/512/1024 位),承载实际传输的数据
TVALID:发送端有效信号,高电平表示 TDATA 上的数据有效
TREADY:接收端就绪信号,高电平表示接收端可接收数据
TLAST:帧结束标志,高电平标识当前数据是一个数据帧的最后一个传输单元
这四个信号构成了 AXI4-Stream 的最小实现集,其中 TVALID 和 TREADY 组成握手机制:只有当 TVALID 和 TREADY 同时为高电平时,数据传输才会发生。
2. 扩展信号集
为满足复杂场景需求,AXI4-Stream 定义了可选的扩展信号:
TUSER:用户自定义信号,可携带元数据(如视频同步信号、错误标记),宽度可配置
TID:事务标识,用于多流复用场景下的流识别,支持乱序传输的重新排序
TDEST:目标标识,用于路由控制,指示数据应发送到的目标节点
TKEEP:字节使能信号,每 bit 对应 TDATA 的一个字节,高电平表示该字节有效
TSTRB:字节选通信号,功能与 TKEEP 类似,主要用于写操作的数据掩码
这些扩展信号使 AXI4-Stream 能够适应从简单到复杂的各类应用场景,例如 TUSER 在视频传输中可携带 HSYNC/VSYNC 信号,TID 和 TDEST 则支持多通道数据的并行传输与路由。
3. 帧结构定义
AXI4-Stream 的数据以 "帧(Frame)" 为基本传输单元,每个帧由一个或多个 "传输单元(Transfer)" 组成:
传输单元:单次握手中传输的数据,对应 TDATA 的宽度(如 32 位 TDATA 一次传输 32 位数据)
帧:由 TLAST 信号界定的一组传输单元,TLAST=1 标识帧结束
子帧:复杂场景中可通过 TUSER 信号定义更小的逻辑单元(如视频的一行像素)
典型的视频帧结构示例:
[行1像素数据] → [TLAST=0] → [行2像素数据] → ... → [行n像素数据] → [TLAST=1]
这种帧结构使 AXI4-Stream 既能支持连续无界数据流(如音频),也能支持有明确边界的块数据(如视频帧、网络包)。