AXI4-Stream Subset Converter IP 详细介绍
概述
AXI4-Stream Subset Converter 属于 AXI4-Stream Infrastructure IP Suite的一部分。该 IP 核旨在解决 AXI4-Stream 接口之间信号集的轻微不兼容问题,通过配置信号的添加、删除或重新映射,实现不同信号子集之间的无缝连接。它广泛应用于 FPGA 和 SoC 系统设计,特别是在需要信号格式转换或协议适配的场景,如视频处理、信号处理、网络数据包处理和硬件加速器集成。
该 IP 核的主要功能包括:
- 信号转换:将一个 AXI4-Stream 信号集转换为另一个信号集,支持信号的添加、删除或重新映射。
- 协议兼容:保持 AXI4-Stream 协议的完整性,确保数据流传输的正确性。
- 灵活配置:支持多种信号宽度和重新映射规则,适应不同应用需求。
- 低资源占用:采用组合逻辑设计,延迟极低,资源占用最小。
主要特性
-
AXI4-Stream 协议兼容性:
- 完全符合 ARM AMBA 4 AXI4-Stream 协议规范(参考 UG761),支持标准信号:
TVALID
、TREADY
、TDATA
、TSTRB
、TKEEP
、TLAST
、TID
、TDEST
和TUSER
。 - 支持可选信号配置,用户可通过配置启用或禁用
TDATA
、TSTRB
、TKEEP
、TLAST
、TID
、TDEST
和TUSER
。 - 支持可编程的信号宽度:
TDATA
:8-512 位(1-64 字节)。TUSER
:1-128 位。TID
和TDEST
:1-32 位。
- 完全符合 ARM AMBA 4 AXI4-Stream 协议规范(参考 UG761),支持标准信号:
-
信号集转换:
- 信号删除:移除不需要的信号(如
TSTRB
、TKEEP
),简化输出接口。 - 信号添加:为输出接口添加缺失的信号,分配默认值(符合 AMBA 规范)。
- 信号重新映射:重新排序或调整
TDATA
、TUSER
、TSTRB
、TKEEP
、TID
、TDEST
和TLAST
的位分配。 - 支持
TLAST
信号的自动生成,通过可配置的计数器实现数据打包。
- 信号删除:移除不需要的信号(如
-
低延迟设计:
- 采用组合逻辑实现,延迟为 0-1 时钟周期(取决于
TREADY
信号配置)。 - 支持背靠背传输,最大吞吐量接近时钟频率(假设
TREADY
始终为高)。 - 无寄存器管道,适合对延迟敏感的应用。
- 采用组合逻辑实现,延迟为 0-1 时钟周期(取决于
-
低资源占用:
- 主要使用 LUT 实现信号映射逻辑,触发器(FF)使用量极少。
- 不使用 BRAM 或 DSP 切片。
- 典型配置下,LUT 占用约为 10-100,FF 占用为 0-50(参考 PG085 表 2-6)。
-
时钟与复位:
- 支持单一时钟域(
ACLK
),输入和输出接口共享同一时钟。 - 提供低电平有效复位信号(
ARESETn
),同步到ACLK
。 - 可选的时钟使能信号(
ACLKEN
),用于精细化时钟控制。
- 支持单一时钟域(
-
工具与设备支持:
- 设计工具:Vivado Design Suite、ISE Design Suite。
- 支持设备:Artix-7、Kintex-7、Kintex UltraScale、Kintex UltraScale+、Virtex-7、Virtex UltraScale、Virtex UltraScale+、Zynq-7000、Zynq UltraScale+ MPSoC。
功能模块
1. 信号删除
- 功能:移除输入接口中不需要的 AXI4-Stream 信号(如
TSTRB
、TKEEP
、TUSER
)。 - 机制:通过配置将指定信号置为未连接状态,输出接口不包含这些信号。
- 注意:删除信号可能导致数据丢失,需确保下游模块不依赖这些信号。
- 应用:简化接口,减少资源占用。
2. 信号添加
- 功能:为输出接口添加缺失的 AXI4-Stream 信号,分配默认值。
- 机制:
- 按照 AMBA 规范为添加的信号设置默认值(例如,
TSTRB
和TKEEP
置为全 1,TID
和TDEST
置为 0)。 TLAST
可通过计数器生成,基于用户定义的包长度。
- 按照 AMBA 规范为添加的信号设置默认值(例如,
- 示例:输入接口无
TLAST
,输出接口添加TLAST
,每 64 个传输置高一次。 - 应用:适配需要完整信号集的下游模块。
3. 信号重新映射
- 功能:重新排序或调整
TDATA
、TUSER
、TSTRB
、TKEEP
、TID
、TDEST
和TLAST
的位分配。 - 机制:通过配置字符串(REMAP)指定信号的位映射规则,例如将
TDATA[31:0]
映射到TDATA[63:32]
。 - 示例:将输入
TUSER[3:0]
映射到输出TUSER[0:3]
,或重新排列TDATA
字节顺序。 - 应用:调整数据格式,如视频流通道重排或信号处理中的数据重组。
4. 背压管理
- 功能:通过
TVALID
和TREADY
信号实现 AXI4-Stream 协议的握手机制。 - 机制:
- 输入
TREADY
由输出TREADY
直接控制(组合逻辑)。 - 若输入无
TREADY
信号,IP 核自动生成以避免协议违例。
- 输入
- 注意:无缓冲机制,背压直接传递至上游。
5. TLAST 生成
- 功能:为输出接口生成
TLAST
信号,基于可配置的计数器。 - 机制:用户指定数据包长度(传输次数),IP 核在达到指定次数时置高
TLAST
。 - 应用:将连续数据流打包为固定长度的数据包。
接口说明
-
输入接口(S00_AXIS):
- 类型:AXI4-Stream 主接口。
- 信号:
S00_AXIS_TVALID
:输入数据有效信号(必选)。S00_AXIS_TREADY
:输入接口准备好信号(可选,取决于配置)。S00_AXIS_TDATA
:输入数据,宽度可配置(8-512 位,可选)。S00_AXIS_TSTRB
、TKEEP
:字节选通信号,宽度为TDATA
的 1/8(可选)。S00_AXIS_TLAST
:数据流结束信号(可选)。S00_AXIS_TID
、TDEST
:流标识和目标标识信号(可选)。S00_AXIS_TUSER
:用户定义信号,宽度可配置(1-128 位,可选)。
- 功能:接收来自上游 AXI4-Stream 从设备的数据流。
-
输出接口(M00_AXIS):
- 类型:AXI4-Stream 从接口。
- 信号:与输入接口类似,具体信号集取决于配置。
- 功能:将转换后的数据流发送到下游 AXI4-Stream 主设备。
-
时钟与复位接口:
ACLK
:全局时钟信号,输入和输出接口共享同一时钟域。ARESETn
:全局低电平有效复位信号,同步到ACLK
。ACLKEN
(可选):时钟使能信号,用于控制数据传输的时序。
配置方法
1. 在 Vivado 中添加 IP
- 打开 Vivado 的 Block Design,右键选择 Add IP。
- 搜索 AXI4-Stream Subset Converter,将其拖入设计。
- 双击 IP 核,打开定制化对话框,配置以下参数:
- 输入信号集:选择输入接口的信号(
TDATA
、TSTRB
、TKEEP
、TLAST
、TID
、TDEST
、TUSER
)。 - 输出信号集:选择输出接口的信号,指定添加或删除的信号。
- 信号宽度:
TDATA
宽度:输入和输出分别配置(8-512 位)。TUSER
宽度:输入和输出分别配置(1-128 位)。TID
/TDEST
宽度:输入和输出分别配置(1-32 位)。
- REMAP 配置:指定信号重新映射规则(例如,
TDATA_REMAP=tdata[31:0]
或TUSER_REMAP=tuser[0:0]
)。 - TLAST 生成:启用
TLAST
计数器并设置包长度(可选)。 - 时钟使能:启用或禁用
ACLKEN
。
- 输入信号集:选择输入接口的信号(
2. 连接与验证
- 将输入接口(S00_AXIS)连接到上游 AXI4-Stream 从设备。
- 将输出接口(M00_AXIS)连接到下游 AXI4-Stream 主设备。
- 分配时钟(
ACLK
)和复位(ARESETn
)信号。 - 使用 Vivado 仿真工具验证信号转换:
- 检查输入和输出信号集是否匹配配置。
- 验证
TVALID
、TREADY
和TLAST
的时序正确性. - 验证重新映射规则(例如,
TDATA
或TUSER
的位顺序)。
- 检查资源利用报告,确保资源占用符合预期。
资源利用情况
- 资源类型:
- LUT(查找表):10-100,取决于信号数量和 REMAP 规则。
- FF(触发器):0-50,仅在复杂映射时使用少量 FF。
- BRAM:不使用。
- DSP 切片:不使用。
- 配置示例:
- 32 位 TDATA、无 REMAP:约 10 LUT、0 FF、无 BRAM。
- 64 位 TDATA、TUSER REMAP(4 位到 1 位):约 30 LUT、10 FF、无 BRAM。
- 256 位 TDATA、复杂 REMAP:约 80 LUT、20 FF、无 BRAM。
- 最大频率:最高 250 MHz(Kintex-7,-1 速度等级),-2 或 -3 速度等级可提高 5-10%
具体资源利用数据需参考 Vivado IP 核生成报告,建议用户在设计时根据目标设备和配置参数进行验证。
应用场景
AXI4-Stream Subset Converter IP 适用于以下场景:
-
信号格式转换:
- 调整 AXI4-Stream 信号集,例如将带
TSTRB
和TKEEP
的数据流转换为仅含TDATA
和TLAST
的流。 - 适用于视频流处理中的格式适配。
- 调整 AXI4-Stream 信号集,例如将带
-
数据重排:
- 重新映射
TDATA
或TUSER
的位顺序,例如将 RGB 通道顺序调整为 BGR。 - 适用于信号处理或图像处理中的数据重组。
- 重新映射
-
协议适配:
- 为不完整的 AXI4-Stream 输入流添加信号(如
TLAST
),确保下游模块兼容性。 - 适用于 SoC 系统中不同 IP 核的互联。
- 为不完整的 AXI4-Stream 输入流添加信号(如
-
数据打包:
- 使用
TLAST
计数器将连续数据流打包为固定长度的数据包。 - 适用于网络数据包处理或通信系统。
- 使用
-
调试与验证:
- 简化信号集以便于调试,或添加信号以适配验证工具。
- 配合 AXI4-Stream Protocol Checker IP(PG145)使用,确保协议合规性。
注意事项
-
信号丢失风险:
- 删除信号(如
TSTRB
、TKEEP
)可能导致数据丢失,需充分理解有效负载内容 - 在配置前,确认下游模块对信号的依赖性。
- 删除信号(如
-
REMAP 配置:
- REMAP 字符串需精确匹配信号宽度,例如
TUSER_REMAP=tuser[0:0]
表示提取 1 位,错误配置可能导致仿真错误。 - 使用 Vivado 的配置 GUI 验证 REMAP 规则。
- REMAP 字符串需精确匹配信号宽度,例如
-
背压管理:
- 由于无缓冲机制,背压直接传递,需确保下游设备的
TREADY
信号及时响应。 - 若需缓冲,建议配合 AXI4-Stream Data FIFO IP 使用
- 由于无缓冲机制,背压直接传递,需确保下游设备的
-
时钟域限制:
- 该 IP 核仅支持单一时钟域(
ACLK
),如需跨时钟域传输,需配合 AXI4-Stream Clock Converter IP 使用 - 确保
ACLK
满足上下游模块的时序要求。
- 该 IP 核仅支持单一时钟域(
-
复位同步:
- 确保
ARESETn
信号在ACLK
时钟域内正确同步,推荐使用异步复位同步释放机制。 - 复位期间,
TREADY
和TVALID
需置低至少 8 个时钟周期,ARESETn
保持至少 16 个周期
- 确保
总结
AXI4-Stream Subset Converter IP 是一款灵活且高效的 AXI4-Stream 基础设施 IP 核,专为解决信号集不兼容问题而设计。其支持信号的添加、删除和重新映射,低延迟的组合逻辑设计,以及与 AXI4-Stream 协议的完全兼容性,使其在视频处理、信号处理、网络数据包处理和 SoC 集成等领域具有广泛应用前景。
FPGA设计工具推荐
-
SZ901:
SZ901 是一款基于XVC协议的FPGA网络下载器。- 最高支持53M
- 支持4路JTAG独立使用
- 支持端口合并
- 支持国产FLASH烧写
- 下载器无限扩展
- 配备专属程序固化软件,一键烧写,能大大减小程序固化时间!
-
SZ501(PRO_A7):
- SZ501 是一款适合初学者FPGA开发板,包含低速高速接口!
- 双网口(RGMII)
- 双SFP+
- DDR
- UART
- IIC