AXI4-Stream Switch IP 详细介绍
概述
AXI4-Stream Switch 属于 AXI4-Stream Infrastructure IP Suite的一部分。该 IP 核设计用于在 AXI4-Stream 协议系统中实现多个主设备(Master)和从设备(Slave)之间的高效数据路由,支持动态或静态路由选择。它广泛应用于 FPGA 和 SoC 系统设计,特别是在需要高带宽、单向数据流的场景,如视频处理、信号处理、网络数据包处理和硬件加速器集成。
该 IP 核的主要功能包括:
- 多路复用与解复用:支持多个输入流到多个输出流的灵活路由。
- 路由方式:支持基于
TDEST
信号的静态路由或通过 AXI4-Lite 接口的控制寄存器动态路由。 - 高性能:提供低延迟、高吞吐量的数据传输,适用于实时应用。
- 灵活配置:支持多种信号宽度、端口数量和路由模式。
。
主要特性
-
AXI4-Stream 协议兼容性:
- 完全符合 ARM AMBA 4 AXI4-Stream 协议规范,支持标准信号:
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 协议规范,支持标准信号:
-
多路路由支持:
- 支持 1-16 个主接口(Sxx_AXIS)和 1-16 个从接口(Mxx_AXIS),实现 N×M 路由矩阵。
- 提供两种路由模式:
- TDEST 路由:基于
TDEST
信号的静态路由,硬件预定义路由表。 - 控制寄存器路由:通过 AXI4-Lite 接口动态配置路由表。
- TDEST 路由:基于
- 支持单播和广播路由(单播:一对一;广播:一对多)。
-
高性能设计:
- 最大工作频率:最高 250 MHz(Kintex-7,-1 速度等级,-2 或 -3 速度等级可提高 5-10%。
- 低延迟:组合逻辑路由延迟接近 0 周期,启用输出管道寄存器增加 1 周期延迟。
- 支持背靠背传输,最大吞吐量接近时钟频率(假设
TREADY
始终为高)。
-
低资源占用:
- 资源占用与端口数量和信号宽度相关,典型配置下 LUT 和 FF 占用适中。
- 不使用 BRAM 或 DSP 切片。
- 可选输出管道寄存器(Output Pipeline Register)以优化时序,增加少量 FF。
-
时钟与复位:
- 支持单一时钟域(
ACLK
),所有接口共享同一时钟。 - 提供低电平有效复位信号(
ARESETn
),同步到ACLK
。 - 可选时钟使能信号(
ACLKEN
),提供精细化时钟控制。
- 支持单一时钟域(
-
控制接口:
- 可选 AXI4-Lite 从接口(S_AXI_CTRL),用于动态配置路由表和读取状态。
- AXI4-Lite 接口异步于 AXI4-Stream 时钟,支持独立时钟域。
-
工具与设备支持:
- 设计工具: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. 数据路由
- 功能:将输入主接口(Sxx_AXIS)的 AXI4-Stream 数据流路由到指定从接口(Mxx_AXIS)。
- 机制:
- TDEST 路由:根据输入流的
TDEST
信号查找预定义路由表,确定目标从接口。 - 控制寄存器路由:通过 AXI4-Lite 接口写入路由表(MI_MUX 寄存器),动态指定主接口到从接口的映射。
- TDEST 路由:根据输入流的
- 支持模式:
- 单播:一个主接口路由到一个从接口。
- 广播:一个主接口路由到多个从接口(需启用广播模式)。
- 路由表更新:在控制寄存器模式下,写入
REG_UPDATE
位(地址 0x0,位 1)触发路由表更新。
2. 信号传递
- 功能:透明传递 AXI4-Stream 信号(
TDATA
、TSTRB
、TKEEP
、TLAST
、TID
、TDEST
、TUSER
),保持协议完整性。 - 机制:所有信号从输入接口直接映射到输出接口,无修改。
- 注意:若输出接口不支持某些信号(如
TSTRB
),需配合 AXI4-Stream Subset Converter IP。
3. 背压管理
- 功能:通过
TVALID
和TREADY
信号实现 AXI4-Stream 协议的握手机制。 - 机制:
- 输入
TREADY
由目标从接口的TREADY
和路由逻辑决定。 - 输出
TVALID
在路由完成且输入数据有效时置高。
- 输入
- 注意:无内置 FIFO 缓冲,背压直接传递至上游。
4. 时序优化
- 功能:可选输出管道寄存器(Output Pipeline Register)以缩短关键路径,提高最大时钟频率(Fmax)。
- 机制:在每个从接口的输出端添加一级寄存器,增加 1 周期延迟。
- 应用:解决高频设计中的时序违例问题。
接口说明
以下是 AXI4-Stream Switch IP 的主要接口及其功能:
-
输入主接口(Sxx_AXIS,x=0到15):
- 类型:AXI4-Stream 主接口。
- 信号:
Sxx_AXIS_TVALID
:输入数据有效信号(必选)。Sxx_AXIS_TREADY
:输入接口准备好信号(必选)。Sxx_AXIS_TDATA
:输入数据,宽度可配置(8-512 位,可选)。Sxx_AXIS_TSTRB
、TKEEP
:字节选通信号,宽度为TDATA
的 1/8(可选)。Sxx_AXIS_TLAST
:数据流结束信号(可选)。Sxx_AXIS_TID
、TDEST
:流标识和目标标识信号(可选,TDEST 路由模式下需启用)。Sxx_AXIS_TUSER
:用户定义信号,宽度可配置(1-128 位,可选)。
- 功能:接收来自上游 AXI4-Stream 从设备的数据流。
-
输出从接口(Mxx_AXIS,x=0到15):
- 类型:AXI4-Stream 从接口。
- 信号:与输入接口类似,具体信号集取决于配置。
- 功能:将路由后的数据流发送到下游 AXI4-Stream 主设备。
-
AXI4-Lite 控制接口(S_AXI_CTRL,可选):
- 类型:32 位 AXI4-Lite 从接口。
- 信号:包括
S_AXI_AWADDR
、AWVALID
、AWREADY
、WDATA
、WVALID
、WREADY
、BRESP
、BVALID
、BREADY
、ARADDR
、ARVALID
、ARREADY
、RDATA
、RRESP
、RVALID
、RREADY
。 - 功能:
- 写入路由表(MI_MUX 寄存器,地址 0x40 起,每端口 4 字节)。
- 触发路由表更新(REG_UPDATE,地址 0x0,位 1)。
- 读取状态或错误信息。
- 地址空间:4 KB。
-
时钟与复位接口:
ACLK
:全局时钟信号,所有 AXI4-Stream 接口共享。ARESETn
:全局低电平有效复位信号,同步到ACLK
。ACLKEN
(可选):时钟使能信号,控制数据传输时序。S_AXI_ACLK
:AXI4-Lite 接口时钟,异步于ACLK
。
配置方法
1. 在 Vivado 中添加 IP
- 打开 Vivado 的 Block Design,右键选择 Add IP。
- 搜索 AXI4-Stream Switch,将其拖入设计。
- 双击 IP 核,打开定制化对话框,配置以下参数:
- 端口数量:
- 主接口数(Number of SI):1-16。
- 从接口数(Number of MI):1-16。
- 信号使能:启用或禁用
TDATA
、TSTRB
、TKEEP
、TLAST
、TID
、TDEST
、TUSER
。 - 信号宽度:
TDATA
宽度:8-512 位。TUSER
宽度:1-128 位。TID
/TDEST
宽度:1-32 位。
- 路由模式:
- TDEST 路由:启用
TDEST
信号,配置路由表(静态)。 - 控制寄存器路由:启用 AXI4-Lite 接口,动态配置 MI_MUX 寄存器。
- TDEST 路由:启用
- 输出管道寄存器:启用或禁用(默认禁用)。
- 时钟使能:启用或禁用
ACLKEN
。 - TDEST 宽度:配置
TDEST
位数,需足够区分所有从接口(例如,4 个从接口需 2 位)。
- 端口数量:
2. 路由表配置(控制寄存器模式)
- 寄存器地址:
- 控制寄存器(地址 0x0):
- 位 0:ENABLE(启用/禁用开关)。
- 位 1:REG_UPDATE(触发路由表更新)。
- MI_MUX 寄存器(地址 0x40 起,每端口 4 字节):指定主接口到从接口的映射。
- 控制寄存器(地址 0x0):
- 配置步骤:
- 写入 MI_MUX 寄存器(例如,写入 0x2 到 0x40 表示 S00_AXIS 路由到 M02_AXIS)。
- 写入 0x2 到 0x0(置 REG_UPDATE=1),更新路由表。
- 注意:控制寄存器路由要求主接口和从接口之间只有单一路径。
3. 连接与验证
- 将输入主接口(Sxx_AXIS)连接到上游 AXI4-Stream 从设备。
- 将输出从接口(Mxx_AXIS)连接到下游 AXI4-Stream 主设备。
- 若启用 AXI4-Lite 接口,将 S_AXI_CTRL 连接到控制处理器(如 Zynq PS 或 MicroBlaze)。
- 分配时钟(
ACLK
、S_AXI_ACLK
)和复位(ARESETn
)信号。 - 使用 Vivado 仿真工具验证路由功能:
- 检查
TVALID
、TREADY
和TLAST
的时序。 - 验证路由正确性(例如,S00_AXIS 数据是否到达指定的 Mxx_AXIS)。
- 在控制寄存器模式下,验证 MI_MUX 配置和 REG_UPDATE 触发。
- 检查
- 检查时序报告,确认最大时钟频率(Fmax)满足要求。
资源利用情况
- 资源类型:
- LUT(查找表):100-1000,取决于端口数量和信号复杂性。
- FF(触发器):50-500,启用输出管道寄存器增加 FF。
- BRAM:不使用。
- DSP 切片:不使用。
- 配置示例:
- 2×2 端口,32 位 TDATA,无管道寄存器:约 150 LUT、100 FF。
- 4×4 端口,64 位 TDATA,启用管道寄存器:约 400 LUT、300 FF。
- 8×8 端口,128 位 TDATA:约 800 LUT、400 FF,Fmax 降低 20-25%。
- 最大频率:最高 250 MHz(4×4 以下配置),8×8 配置降至约 187.5-200 MHz。
具体资源利用数据需参考 Vivado IP 核生成报告,建议用户根据目标设备和配置参数进行验证。
应用场景
AXI4-Stream Switch IP 适用于以下场景:
-
多路数据流路由:
- 将多个输入流(如传感器数据、网络数据包)路由到不同处理模块。
- 适用于网络处理器或数据中心应用。
-
视频处理:
- 路由视频流到多个显示设备或处理单元(如编码器、解码器)。
- 配合 AXI4-Stream to Video Out IP实现视频输出。
-
信号处理:
- 分配多通道信号数据流到不同处理核心(如 FFT、滤波器)。
- 适用于雷达、通信或音频处理系统。
-
硬件加速器集成:
- 在 SoC 系统中将数据流路由到加速器模块(如 Zynq UltraScale+ MPSoC)。
- 配合 AXI4-Stream Accelerator Adapter。
-
调试与验证:
- 动态调整路由以监控或验证不同数据路径。
- 配合 AXI4-Stream Protocol Checker IP(PG145)确保协议合规性。
注意事项
-
路由配置:
- TDEST 路由:确保
TDEST
宽度足够区分所有从接口(例如,8 个从接口需 3 位)。 - 控制寄存器路由:每次更改 MI_MUX 后需写入 REG_UPDATE 触发更新。
- 控制寄存器模式下,同一从接口只能映射到一个主接口。
- TDEST 路由:确保
-
背压管理:
- 无内置 FIFO 缓冲,背压直接传递,需确保下游设备的
TREADY
及时响应。 - 若需缓冲,配合 AXI4-Stream Data FIFO IP 使用。
- 无内置 FIFO 缓冲,背压直接传递,需确保下游设备的
-
复位要求:
ARESETn
需同步到ACLK
,保持至少 16 个周期。- 复位期间,
TREADY
和TVALID
置低,直到所有接口退出复位状态。
-
时序与频率:
- 端口数量超过 4×4 时,Fmax 降低 20-25%,建议启用输出管道寄存器。
- 检查 Vivado 时序报告,确保无时序违例。
-
TDEST 生成:
- 该 IP 核不生成
TDEST
信号,需上游模块提供或通过 AXI4-Stream Subset Converter IP 重新映射(如使用TUSER
替代TDEST
)。 - 若需多路复用,需手动配置
TDEST
或TUSER
。
- 该 IP 核不生成
总结
AXI4-Stream Switch IP 是一款功能强大且灵活的 AXI4-Stream 基础设施 IP 核,专为多路数据流路由设计。其支持 TDEST 和控制寄存器两种路由模式,低延迟、高吞吐量的特性,以及与 AXI4-Stream 协议的完全兼容性,使其在视频处理、信号处理、网络数据包处理和 SoC 集成等领域具有广泛应用前景。
FPGA设计工具推荐
-
SZ901:
SZ901 是一款基于XVC协议的FPGA网络下载器。- 最高支持53M
- 支持4路JTAG独立使用
- 支持端口合并
- 支持国产FLASH烧写
- 下载器无限扩展
- 配备专属程序固化软件,一键烧写,能大大减小程序固化时间!
-
SZ501(PRO_A7):
- SZ501 是一款适合初学者FPGA开发板,包含低速高速接口!
- 双网口(RGMII)
- 双SFP+
- DDR
- UART
- IIC