AXI4-Stream
- 简介
- 信号
- 握手机制
- 字节类型
- TKEEP和TSTRB
- AXI4-Stream Data FIFO
- 正常模式
- packet模式
- AXI4-Stream Interconnect
简介
这是一种连续流接口,不需要地址线(很像 FIFO ,一直读或一直写就行)。对于这类 IP ,ARM 不能通过上面的内存映射方式控制( FIFO 根本没有地址的概念),必须有一个转换装置,例如 AXI DMA 模块来实现内存映射到流式接口的转换。 AXI Stream 适用的场合有很多:视频流处理;通信协议转换;数字信号处理;无线通信等。其本质都是针对数据流构建的数据通路,从信源(例如 ARM 内存、 DMA 、无线接收前端等)到信宿(例如 HDMI 显示器、高速 AD 音频输出,等)构建起连续的数据流。这种接口适合做实时信号处理。
信号
Signal | Source | Description | Default |
---|---|---|---|
ACLK | Clock source | 时钟,上升沿有效 | / |
ARESETn | Reset source | 复位,低有效 | / |
TVALID | Master | 高有效,表示 Master 已准备好数据。当 TVALID 和 TREADY 同时为高时传输数据 | 0 |
TREADY | Slave | 高有效,表示 Slave 可以接收数据 | 1 |
TDATA[(8n-1):0] | Master | 发送数据,位宽为字节整数倍 | 0 |
TSTRB[(n-1):0] | Master | TDATA 类型指示,1为数据字节(data byte),0为位置填充字节(position byte) | ①只有 TKEEP 时,TSTRB=TKEEP;②两者都没有时,默认全为1 |
TKEEP[(n-1):0] | Master | null bytes 指示。0为 null byte,可以从 stream 中删除;1为非 null byte | 没有 TKEEP 时,默认全为 1 |
TLAST | Master | 包的最后一个数据指示,高有效 | |
TID[(i-1):0] | Master | 用于指示不同类型 stream 数据 | 0 |
TDEST[(d-1):0] | Master | 提供 stream 路由信息 | 0 |
TUSER[(u-1):0] | Master | 用户自定义信号,直接透传 | 0 |
握手机制
数据在 TVALID 和 TREADY 同时有效时进行传输,常见几种握手情况如下所示:
- TVALID 先于 TREADY 有效
- TREADY 先于 TVALID 有效
- TVALID 和 TREADY 同时有效(Slave 判断到 TVALID 有效,立即置位 TREADY)
字节类型
分为 Data byte、Position byte、Null byte 三种。
- Data byte:该类型字节及其内容必须由 Master 传输到 Slave;
- Position byte:该类型字节必须由 Master 传输到 Slave,但是内容不要求收发一致,因为只需要位置信息;
- Null byte:该类型字节不包含任何信息。在传输过程中,可以插入或者删除 Null byte。
interconnect 不允许修改 Position byte,但允许插入或删除 Null byte。
TKEEP和TSTRB
TKEEP | TSTRB | Data Type | Description |
---|---|---|---|
1 | 1 | Data byte | 有效数据 |
1 | 0 | Position byte | 位置信息 |
0 | 0 | Null byte | 无效数据 |
0 | 1 | Reserved | 不适用 |
AXI4-Stream Data FIFO
该 IP 无法根据 TKEEP 和 TSTRB 自动丢数据。
正常模式
Master 从 Slave 收到数据后延迟 3个周期后输出
packet模式
Master 从 Slave 收到最后一个数据后延迟 3个周期后输出 TVALID
AXI4-Stream Interconnect
该 IP 可实现 TDEST 路由,但是无法根据 TKEEP 和 TSTRB 自动丢数据。