AXI Stream(AXI4-Stream)总线是 ARM 公司推出的 AXI(Advanced eXtensible Interface)协议家族中的一员,专门用于高速、连续的流式数据传输,广泛应用于 FPGA、SoC 等嵌入式系统中,例如视频处理、音频传输、高速接口(如 Ethernet、PCIe)的数据交换等场景。
与 AXI4(面向地址映射的存储访问)不同,AXI Stream 取消了地址线,专注于 “无地址” 的流式数据传输,通过简化信号和握手机制,实现高带宽、低延迟的数据流转。
一、AXI Stream 的核心特点
无地址传输数据以 “流” 的形式连续传输,无需地址指定(区别于 AXI4 的地址 - 数据分离传输),适合连续数据流(如视频帧、数据包)。
单向性总线分为 “主设备(Master)” 和 “从设备(Slave)”,数据只能从主设备流向从设备(单方向),若需双向传输,需两条独立的 AXI Stream 总线。
灵活的数据宽度支持任意数据宽度(如 8bit、32bit、64bit 等),主从设备可通过协商适配不同宽度(需硬件设计保证兼容性)。
支持突发传输与帧标记可通过信号标记 “帧的开始 / 结束”“数据有效范围” 等,适合按 “帧” 或 “包” 传输的数据(如网络数据包、视频帧)。
简单的握手机制仅通过
valid和ready信号实现握手,确保数据可靠传输,无复杂的地址或响应信号,降低延迟。
二、AXI Stream 的关键信号
AXI Stream 的信号集精简且灵活,核心信号如下(以标准 32bit 数据总线为例):
|
|
|
|
|---|---|---|
TDATA |
|
|
TVALID |
|
TVALID=1表示TDATA上的数据有效,主设备已准备好发送。
|
TREADY |
|
TREADY=1表示从设备已准备好接收,可接收TDATA的数据。
|
TLAST |
|
TLAST=1表示当前TDATA是一帧 / 一包数据的最后一个数据单元。
|
TUSER
|
|
|
TKEEP
|
|
TDATA宽度大于 8bit 时,标记哪些字节有效(如 32bit 总线中,TKEEP=4'b1100表示高 2 字节有效)。
|
TSTRB
|
|
TKEEP类似,通常用于指示哪些字节需要被写入(较少使用)。
|
TID
|
|
|
TDEST
|
|
|
三、核心握手机制(TVALID & TREADY)
AXI Stream 的传输通过TVALID和TREADY的握手实现,规则如下:
-
当且仅当 TVALID=1且TREADY=1时,在时钟上升沿完成一次数据传输。 -
主设备可在 TREADY=0时保持TVALID=1(数据保持有效),等待从设备就绪。 -
从设备可在 TVALID=0时保持TREADY=1(始终就绪),等待主设备发送数据。
这种机制允许主从设备以各自的速率传输数据(“异步” 适配),避免因速度不匹配导致的数据丢失。
四、帧传输示例(带 TLAST)
以 “一帧数据包含 4 个 32bit 数据单元” 为例,传输时序如下:
-
主设备发送第 1 个数据: TVALID=1,TDATA=D1,TLAST=0;从设备TREADY=1,握手成功,D1 被接收。 -
主设备发送第 2 个数据: TVALID=1,TDATA=D2,TLAST=0;从设备TREADY=1,D2 被接收。 -
主设备发送第 3 个数据: TVALID=1,TDATA=D3,TLAST=0;从设备可能因内部缓冲满而TREADY=0,主设备保持TVALID=1等待。 -
从设备缓冲释放, TREADY=1,D3 被接收。 -
主设备发送第 4 个数据(最后一个): TVALID=1,TDATA=D4,TLAST=1;TREADY=1,握手成功,D4 被接收,同时TLAST=1标记帧结束。
通过TLAST,从设备可明确识别一帧数据的边界,便于后续处理(如帧缓存、校验等)。
五、可选信号的典型应用
- TKEEP
:用于数据宽度大于 8bit 的场景,例如 32bit 总线传输 “仅高 16bit 有效” 的数据时, TKEEP=4'b1100(高 2 字节有效)。 - TUSER
:携带辅助信息,例如视频传输中标记 “当前像素是否为关键帧”,或网络传输中携带 “数据包校验和”。 - TID
:多流复用场景,例如同一总线上传输摄像头 A 和摄像头 B 的视频流, TID=0表示 A 的流,TID=1表示 B 的流。
六、与 AXI4 的对比
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
七、AXI Stream 的优势与适用场景
- 优势
:结构简单、延迟低、带宽高,适合连续数据流;灵活的可选信号支持复杂场景;握手机制适配主从设备速度差异。 - 适用场景
: -
视频 / 图像处理(如 HDMI、MIPI 数据传输); -
高速通信接口(如 Ethernet、PCIe、USB 的数据包传输); -
音频编解码、雷达信号处理等流式数据场景; -
FPGA 内部 IP 核间的数据交互(如 DMA 与外设、DSP 与 ADC/DAC)。
总结
AXI Stream 是为 “连续流式数据” 设计的高效传输协议,通过精简信号和灵活的握手机制,在高速数据传输场景中表现优异。其核心是TVALID/TREADY握手和TLAST帧标记,配合可选信号可满足从简单到复杂的各类流式传输需求,是 FPGA 和 SoC 设计中不可或缺的总线协议。
🌻亲爱的读者们,今天的分享就到这里啦!如果今天的内容对你有启发
记得点亮右下角的“❤️”或转发给需要的朋友,让温暖传递的更远!
生活或许没有标准答案,但每一次【分享】和【点赞】,都是我们相遇的印记。你最近有哪些感悟或故事?欢迎留言区聊一聊~~~
你的认可,是我们深夜码字的充电桩🔋
明天见!保持好奇,永远鲜活~
🔍关注我们,不错过每一次相遇


扫码领取免费学习资料~~~
往期精彩部分

