AXI4-Stream Clock Converter IP 详细介绍
概述
AXI4-Stream Clock Converter 属于 AXI4-Stream Infrastructure IP Suite(参考文档 PG085)的一部分。该 IP 核旨在实现 AXI4-Stream 数据流在不同时钟域之间的可靠传输,支持跨时钟域(Clock Domain Crossing, CDC)的场景。它通过内部 FIFO 或寄存器管道(Register Slice)实现数据同步,确保数据完整性和高性能,广泛应用于需要跨时钟域通信的 FPGA 和 SoC 系统,例如 Zynq-7000、Zynq UltraScale+ MPSoC 等。
该 IP 核的主要功能包括:
- 时钟域转换:支持 AXI4-Stream 数据流在不同时钟域之间的同步传输。
- 灵活的实现方式:提供 FIFO 和寄存器管道两种实现选项,适应不同延迟和资源需求。
- 高性能:支持高吞吐量传输,FIFO 模式下可实现背靠背数据传输。
- 协议兼容性:完全符合 AXI4-Stream 协议,支持所有标准信号。
主要特性
AXI4-Stream Clock Converter IP 具有以下关键特性:
-
AXI4-Stream 协议兼容性:
- 完全符合 AXI4-Stream 协议规范,支持所有 AXI4-Stream 定义的信号:
TVALID
、TREADY
、TDATA
、TSTRB
、TKEEP
、TLAST
、TID
、TDEST
和TUSER
。 TDATA
、TSTRB
、TKEEP
、TLAST
、TID
、TDEST
和TUSER
为可选信号,用户可根据需求配置。- 支持可编程的
TDATA
宽度(8-512 位)、TUSER
宽度(1-128 位)、TID
和TDEST
宽度(1-32 位)。
- 完全符合 AXI4-Stream 协议规范,支持所有 AXI4-Stream 定义的信号:
-
跨时钟域支持:
- 支持输入(S00_AXIS)和输出(M00_AXIS)接口运行在不同时钟域(
S_ACLK
和M_ACLK
)。 - 提供两种实现方式:
- FIFO 模式:使用异步 FIFO 缓冲数据,支持高吞吐量和深度可配置的缓冲区。
- 寄存器管道模式:使用寄存器切片(Register Slice)进行同步,适用于低延迟需求。
- 支持输入(S00_AXIS)和输出(M00_AXIS)接口运行在不同时钟域(
-
FIFO 配置:
- FIFO 深度可配置,支持 16、32、64、128、256、512、1024、2048 字(word)。
- FIFO 宽度等于 AXI4-Stream 数据宽度(包括
TDATA
、TSTRB
、TKEEP
、TLAST
、TID
、TDEST
和TUSER
的总和)。 - 支持独立读写时钟,适用于异步时钟域。
-
性能优化:
- FIFO 模式支持背靠背传输,最大吞吐量接近时钟频率。
- 寄存器管道模式提供最低延迟(通常为 1-2 个时钟周期),适合对延迟敏感的应用。
- 支持时钟使能信号(
ACLKEN
),用于精细化时钟控制。
-
时钟与复位:
- 支持独立的输入时钟(
S_ACLK
)和输出时钟(M_ACLK
)。 - 提供独立的复位信号(
S_ARESETn
和M_ARESETn
),支持异步复位同步释放(Asynchronous Reset Synchronous Release)。 - 可选的全局复位信号(
ARESETn
)。
- 支持独立的输入时钟(
-
工具与设备支持:
- 设计工具: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。
- 该 IP 核随 Vivado 和 ISE 设计套件免费提供,无需额外费用。
功能模块
AXI4-Stream Clock Converter IP 的核心功能是在不同时钟域之间同步 AXI4-Stream 数据流,其功能模块包括以下几个方面:
1. 数据同步
- 功能:将来自输入接口(S00_AXIS)的 AXI4-Stream 数据流同步到输出接口(M00_AXIS)的时钟域。
- 机制:
- FIFO 模式:输入数据写入异步 FIFO,输出接口从 FIFO 读取数据,FIFO 提供跨时钟域的缓冲和同步。
- 寄存器管道模式:通过寄存器切片进行数据同步,数据在输入时钟域采样后通过同步电路传递到输出时钟域。
- 控制:通过
TVALID
和TREADY
信号实现 AXI4-Stream 协议的握手机制,确保数据传输的完整性。
2. FIFO 缓冲
- 功能:在 FIFO 模式下,异步 FIFO 用于缓冲输入数据,防止数据丢失。
- 配置:FIFO 深度可配置,适合不同吞吐量和突发传输需求。
- 特点:支持高吞吐量,FIFO 接近满或空时会通过
TREADY
信号控制背压。
3. 寄存器管道
- 功能:在寄存器管道模式下,使用寄存器切片实现低延迟的跨时钟域传输。
- 特点:延迟固定(通常为 1-2 个时钟周期),适合对延迟敏感但吞吐量要求不高的场景。
- 限制:无缓冲能力,输入和输出接口必须以相同速率处理数据。
4. 信号支持
- 必选信号:
TVALID
、TREADY
。 - 可选信号:
TDATA
、TSTRB
、TKEEP
、TLAST
、TID
、TDEST
、TUSER
,可通过配置启用或禁用。 - 信号宽度:与输入接口一致,输出接口直接继承输入接口的信号宽度。
接口说明
以下是 AXI4-Stream Clock Converter IP 的主要接口及其功能:
-
输入接口(S00_AXIS):
- 类型:AXI4-Stream 主接口。
- 信号:
S00_AXIS_TVALID
:输入数据有效信号。S00_AXIS_TREADY
:输入接口准备好信号(由 FIFO 或寄存器管道状态决定)。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 从接口。
- 信号:与输入接口类似,包括
M00_AXIS_TVALID
、TREADY
、TDATA
、TSTRB
、TKEEP
、TLAST
、TID
、TDEST
和TUSER
。 - 功能:将同步后的数据流发送到下游 AXI4-Stream 主设备。
-
时钟与复位接口:
S_ACLK
:输入接口的时钟信号。M_ACLK
:输出接口的时钟信号。S_ARESETn
:输入接口的低电平有效复位信号。M_ARESETn
:输出接口的低电平有效复位信号。ARESETn
(可选):全局低电平有效复位信号。ACLKEN
(可选):时钟使能信号,用于控制数据传输的时序。
配置方法
1. 在 Vivado 中添加 IP
- 打开 Vivado 的 Block Design,右键选择 Add IP。
- 搜索 AXI4-Stream Clock Converter,将其拖入设计。
- 双击 IP 核,打开定制化对话框(参考 PG085,图 4-3),配置以下参数:
- 实现方式:选择 FIFO 或寄存器管道模式。
- FIFO 深度(仅 FIFO 模式):选择 16、32、64、128、256、512、1024 或 2048 字。
- TDATA 宽度:设置输入和输出
TDATA
宽度(8-512 位)。 - TUSER 宽度:设置
TUSER
宽度(1-128 位,可选)。 - TID/TDEST 宽度:设置流标识和目标标识宽度(1-32 位,可选)。
- 信号使能:启用或禁用
TSTRB
、TKEEP
、TLAST
、TID
、TDEST
和TUSER
。 - 时钟使能:启用或禁用
ACLKEN
信号。 - 复位配置:选择独立复位(
S_ARESETn
和M_ARESETn
)或全局复位(ARESETn
)。
2. 连接与验证
- 将输入接口(S00_AXIS)连接到上游 AXI4-Stream 从设备,并分配输入时钟(
S_ACLK
)和复位(S_ARESETn
)。 - 将输出接口(M00_AXIS)连接到下游 AXI4-Stream 主设备,并分配输出时钟(
M_ACLK
)和复位(M_ARESETn
)。 - 使用 Vivado 仿真工具验证跨时钟域传输,检查
TVALID
、TREADY
和TLAST
信号的时序。 - 监控 FIFO 模式下的背压行为,确保 FIFO 深度足够支持突发传输。
资源利用情况
根据 PG085 和相关资源利用数据,AXI4-Stream Clock Converter IP 的资源占用取决于配置参数(如实现方式、FIFO 深度、数据宽度等)。以下是一些典型配置的资源利用情况(基于 Vivado 生成数据):
- 设备系列:Artix-7、Kintex-7、Zynq-7000 等。
- 资源类型:
- LUT(查找表):FIFO 模式随 FIFO 深度和数据宽度增加,寄存器管道模式较少。
- FF(触发器):FIFO 模式用于 FIFO 控制逻辑,寄存器管道模式用于同步寄存器。
- BRAM:FIFO 模式可能使用 BRAM(深度 ≥ 512 时),寄存器管道模式不使用。
- DSP 切片:不使用。
- 配置示例:
- 寄存器管道模式、32 位 TDATA:约 100 LUT、150 FF、无 BRAM。
- FIFO 模式、32 位 TDATA、512 字深度:约 300 LUT、400 FF、1-2 BRAM。
- FIFO 模式、256 位 TDATA、1024 字深度:约 600 LUT、800 FF、4-6 BRAM。
具体资源利用数据需参考 Vivado IP 核生成报告,建议用户在设计时根据目标设备和配置参数进行验证。
应用场景
AXI4-Stream Clock Converter IP 适用于以下场景:
-
跨时钟域数据传输:
- 在不同时钟域之间传输 AXI4-Stream 数据流,例如 Zynq-7000 处理系统(PS)与可编程逻辑(PL)之间的通信。
- 适用于视频处理、信号处理和网络数据包处理。
-
高吞吐量系统:
- 使用 FIFO 模式支持高吞吐量和突发传输,适用于实时视频流或大数据量处理。
- 确保数据流在不同时钟频率下无丢失。
-
低延迟系统:
- 使用寄存器管道模式支持低延迟传输,适用于对时序要求严格的应用,例如控制系统或实时信号处理。
-
SoC 集成:
- 在 Zynq 或 UltraScale+ MPSoC 系统中,将高速 PL 模块的 AXI4-Stream 数据流同步到低速 PS 时钟域,或反之。
注意事项
-
时钟频率关系:
- FIFO 模式下,输入和输出时钟频率无需严格匹配,但建议输出时钟频率不低于输入时钟频率的 75%,以避免 FIFO 溢出(参考 PG085)。
- 寄存器管道模式要求输入和输出时钟频率相近,以确保数据同步的可靠性。
-
FIFO 深度选择:
- FIFO 深度需根据数据突发长度和时钟频率差选择,过小的深度可能导致背压或数据丢失。
- 建议通过仿真验证 FIFO 深度是否满足应用需求。
-
复位同步:
- 确保
S_ARESETn
和M_ARESETn
信号在各自时钟域内正确同步,推荐使用异步复位同步释放机制(参考 UG761)。 - 全局复位(
ARESETn
)需谨慎使用,确保所有时钟域同时复位。
- 确保
-
背压管理:
- 监控下游设备的
TREADY
信号,确保输出接口不会因背压导致 FIFO 溢出。 - 在 FIFO 模式下,可通过增加 FIFO 深度缓解背压问题。
- 监控下游设备的
。
总结
AXI4-Stream Clock Converter IP 是一款功能强大且灵活的 AXI4-Stream 基础设施 IP 核,专为跨时钟域数据传输而设计。其支持 FIFO 和寄存器管道两种实现方式,能够满足高吞吐量和低延迟的不同应用需求。凭借对 AXI4-Stream 协议的完整支持、可配置的信号宽度和深度,该 IP 核在视频处理、信号处理和 SoC 集成等领域具有广泛应用前景。
FPGA设计工具推荐
-
SZ901:
SZ901 是一款基于XVC协议的FPGA网络下载器。- 最高支持53M
- 支持4路JTAG独立使用
- 支持端口合并
- 支持国产FLASH烧写
- 下载器无限扩展
- 配备专属程序固化软件,一键烧写,能大大减小程序固化时间!
-
SZ501(PRO_A7):
- SZ501 是一款适合初学者FPGA开发板,包含低速高速接口!
- 双网口(RGMII)
- 双SFP+
- DDR
- UART
- IIC