AXI4-Stream Protocol Checker IP (PG145) 详细介绍
概述
AXI4-Stream Protocol Checker 专为监控 AXI4-Stream 接口的协议合规性而设计。该 IP 核能够实时检测 AXI4-Stream 接口上的协议违规行为,并通过状态寄存器或信号指示具体的违规类型。它是 FPGA 和 SoC 系统设计中调试和验证 AXI4-Stream 数据流的重要工具,广泛应用于视频处理、信号处理、网络数据包处理和硬件加速器集成等领域。
该 IP 核的主要功能包括:
- 协议检查:监控 AXI4-Stream 接口,检测协议违规(如
TVALID
和TREADY
握手错误)。 - 违规报告:通过状态寄存器、外部信号或仿真消息指示违规类型。
- 可合成检查:基于 ARM AMBA 4 AXI4-Stream 协议断言(SystemVerilog 格式)实现,适用于硬件合成。
- 灵活配置:支持多种信号宽度和检查模式,适应不同应用需求。
主要特性
-
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 协议规范,支持标准信号:
-
协议检查功能:
- 检查内容包括:
TVALID
和TREADY
握手协议(例如,TVALID
不得在TREADY
为低时改变)。- 信号稳定性(例如,
TDATA
、TLAST
等在TVALID
高且TREADY
低时必须保持稳定)。 - 数据包边界(
TLAST
的正确使用)。 - 可选信号的合法性(例如,
TSTRB
和TKEEP
的字节对齐)。
- 支持检测多种违规类型,并通过状态寄存器或信号报告具体违规。
- 检查内容包括:
-
违规报告机制:
- 硬件报告:通过状态寄存器(AXI4-Lite 接口)或外部信号(
pc_status
)指示违规类型。 - 仿真消息:在仿真环境中输出可编程的消息级别(INFO、WARNING、ERROR),包括违规的实例路径和时间戳。
- 状态信号:提供
pc_status
输出向量(宽度可配置,最大 64 位),每位对应一种违规类型。
- 硬件报告:通过状态寄存器(AXI4-Lite 接口)或外部信号(
-
高性能与低资源占用:
- 最大工作频率:最高支持 225 MHz。
- 资源占用低,典型配置下 LUT 和 FF 数量在 100-300 范围内。
- 不使用 BRAM 或 DSP 切片。
-
灵活配置:
- 支持通过 Vivado GUI 或 AXI4-Lite 控制接口配置检查规则和消息级别。
- 可启用或禁用特定检查(如
TSTRB
、TKEEP
相关检查)。 - 支持动态控制协议检查的开启/关闭(通过 AXI4-Lite 接口)。
-
时钟与复位:
- 支持单一时钟域(
ACLK
),与被监控的 AXI4-Stream 接口共享。 - 提供低电平有效复位信号(
ARESETn
),同步到ACLK
。
- 支持单一时钟域(
-
工具与设备支持:
- 设计工具: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 Protocol Checker IP 的核心功能是实时监控 AXI4-Stream 接口并检测协议违规,其功能模块包括以下几个方面
1. 协议检查
- 功能:监控 AXI4-Stream 接口上的信号,检测协议违规。
- 机制:基于 ARM 提供的 SystemVerilog 协议断言实现,转换为可合成的 RTL 逻辑。
- 检查内容:
- 握手协议:
TVALID
在TREADY
为低时不得改变;TREADY
不得依赖TVALID
。 - 信号稳定性:
TDATA
、TSTRB
、TKEEP
、TLAST
、TID
、TDEST
和TUSER
在TVALID
高且TREADY
低时必须保持稳定。 - 数据包完整性:
TLAST
必须正确指示数据包结束。 - 信号合法性:
TSTRB
和TKEEP
的值必须与TDATA
字节对齐。
- 握手协议:
- 应用:确保 AXI4-Stream 数据流的协议合规性,减少调试时间。
2. 违规报告
- 硬件报告:
- 通过 AXI4-Lite 接口访问状态寄存器,记录违规类型和计数。
- 提供
pc_status
输出信号(向量),每位对应一种违规(如TVALID
不稳定、TLAST
错误等)。
- 仿真消息:
- 支持三种消息级别:INFO(信息)、WARNING(警告)、ERROR(错误)。
- 消息格式包括实例路径(
instance_path
)、违规类型和时间戳,便于定位问题。 - 可通过参数配置消息输出级别。
- 应用:在硬件运行或仿真中快速识别和定位协议问题。
3. 动态控制
- 功能:通过 AXI4-Lite 接口动态启用或禁用协议检查。
- 机制:写入控制寄存器以开启/关闭特定检查规则或调整消息级别。
- 应用:在不同调试阶段选择性地监控协议,优化性能或资源。
4. 信号支持
- 必选信号:
TVALID
、TREADY
。 - 可选信号:
TDATA
、TSTRB
、TKEEP
、TLAST
、TID
、TDEST
、TUSER
,可通过配置启用监控。 - 信号宽度:支持灵活配置,适应不同数据流需求。
接口说明
以下是 AXI4-Stream Protocol Checker IP 的主要接口及其功能
-
监控接口(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 接口,捕获信号状态。
-
状态输出接口:
pc_status
:协议违规状态向量(1-64 位),每位对应一种违规类型。- 功能:实时指示检测到的违规,供外部逻辑或处理器读取。
-
AXI4-Lite 控制接口(可选):
- 类型:32 位 AXI4-Lite 从接口。
- 信号:包括
S_AXI_AWADDR
、AWVALID
、AWREADY
、WDATA
、WVALID
、WREADY
、BRESP
、BVALID
、BREADY
、ARADDR
、ARVALID
、ARREADY
、RDATA
、RRESP
、RVALID
、RREADY
。 - 功能:
- 读取状态寄存器,获取违规详情和计数。
- 写入控制寄存器,动态配置检查规则或消息级别。
- 地址空间:支持 4 KB 地址空间,包含状态和控制寄存器。
-
时钟与复位接口:
ACLK
:全局时钟信号,与被监控的 AXI4-Stream 接口共享。ARESETn
:全局低电平有效复位信号,同步到ACLK
。
配置方法
1. 在 Vivado 中添加 IP
- 打开 Vivado 的 Block Design,右键选择 Add IP。
- 搜索 AXI4-Stream Protocol Checker,将其拖入设计。
- 双击 IP 核,打开定制化对话框,配置以下参数:
- 信号使能:选择需要监控的信号(如
TSTRB
、TKEEP
、TLAST
、TID
、TDEST
、TUSER
)。 - TDATA 宽度:设置
TDATA
宽度(8-512 位)。 - TUSER 宽度:设置
TUSER
宽度(1-128 位,可选)。 - TID/TDEST 宽度:设置流标识和目标标识宽度(1-32 位,可选)。
- 状态向量宽度:设置
pc_status
宽度(1-64 位,默认 64 位)。 - AXI4-Lite 接口:启用或禁用 AXI4-Lite 控制接口。
- 消息级别:选择仿真消息级别(INFO、WARNING、ERROR 或组合)。
- 检查规则:启用或禁用特定协议检查(如
TSTRB
合法性检查)。
- 信号使能:选择需要监控的信号(如
2. 连接与验证
- 将监控接口(S00_AXIS)连接到被监控的 AXI4-Stream 接口(主接口或从接口)。
- 若启用 AXI4-Lite 接口,将其连接到控制处理器(如 Zynq PS 或 MicroBlaze)。
- 连接
pc_status
信号到外部逻辑或调试模块。 - 分配时钟(
ACLK
)和复位(ARESETn
)信号,确保与被监控接口同步。 - 使用 Vivado 仿真工具验证协议检查:
- 配置仿真消息级别,观察输出消息。
- 检查
pc_status
信号或状态寄存器,确认违规类型。
- 使用 AXI4-Stream Verification IP生成测试用例,模拟协议违规以验证检查功能。
3. 约束与生成
- 无需特定时序约束,IP 核与被监控接口共享时钟。
- 在 Vivado 中生成 IP 输出产品 。
资源利用情况
AXI4-Stream Protocol Checker IP 的资源占用取决于配置参数(如信号宽度、检查规则、AXI4-Lite 接口)。以下是典型资源利用情况(基于 Virtex-7 XC7VX485T FPGA,Vivado 生成):
- 资源类型:
- LUT(查找表):100-300,具体取决于信号数量和检查复杂性。
- FF(触发器):100-250,用于状态寄存器和控制逻辑。
- BRAM:不使用。
- DSP 切片:不使用。
- 配置示例:
- 32 位 TDATA、无 AXI4-Lite 接口:约 120 LUT、100 FF。
- 64 位 TDATA、启用所有信号和 AXI4-Lite 接口:约 250 LUT、200 FF。
- 最大频率:最高 225 MHz。
具体资源利用数据需参考 Vivado IP 核生成报告,建议用户在设计时根据目标设备和配置参数进行验证。
应用场景
AXI4-Stream Protocol Checker IP 适用于以下场景
-
接口调试:
- 监控 AXI4-Stream 接口,检测协议违规,快速定位设计问题。
- 适用于复杂系统中的多模块互联,如视频处理流水线。
-
系统验证:
- 在硬件仿真或原型验证中确保 AXI4-Stream 数据流的协议合规性。
- 与 AXI4-Stream Verification IP(PG277)配合,生成测试用例。
-
视频处理:
- 验证视频流(如 RGB 或 YUV 数据流)的协议正确性,确保
TLAST
和数据包边界的准确性。 - 适用于实时视频编码、解码或显示系统。
- 验证视频流(如 RGB 或 YUV 数据流)的协议正确性,确保
-
信号处理:
- 检查多通道信号数据流的协议一致性,特别是在高吞吐量应用中。
- 适用于雷达、通信和音频处理系统。
-
网络数据包处理:
- 监控高速数据包流的 AXI4-Stream 接口,确保数据传输无协议错误。
- 适用于数据中心或网络处理器设计。
注意事项
-
协议检查范围:
- 该 IP 核仅检查 AXI4-Stream 协议的信号行为,不验证数据内容或功能正确性。
- 需结合其他验证工具(如 AXI4-Stream Verification IP)进行功能测试。
-
仿真消息配置:
- 默认消息级别可能产生大量输出,建议根据调试需求选择适当级别(INFO、WARNING、ERROR)。
- 在生产环境中禁用仿真消息以减少日志开销。
-
AXI4-Lite 接口:
- 启用 AXI4-Lite 接口会增加约 50-100 LUT 和 FF 的资源占用,建议仅在需要动态控制时使用。
- 确保 AXI4-Lite 接口的时钟与
ACLK
同步。
-
时钟与复位:
- 确保
ACLK
和ARESETn
与被监控的 AXI4-Stream 接口一致,避免时序问题。 - 复位信号需同步到
ACLK
,推荐使用异步复位同步释放机制。
- 确保
-
资源与性能:
- 对于资源受限的设备(如 Artix-7),建议禁用不必要的信号检查(如
TSTRB
、TKEEP
)以减少 LUT/FF 占用。 - 验证最大频率是否满足设计需求(最高 225 MHz)。
- 对于资源受限的设备(如 Artix-7),建议禁用不必要的信号检查(如
总结
AXI4-Stream Protocol Checker IP(PG145)是一款功能强大且高效的 AXI4-Stream 协议验证工具,专为监控和检测 AXI4-Stream 接口的协议违规而设计。其基于 ARM AMBA 4 协议断言的可合成实现、低资源占用和高性能特性,以及灵活的配置和报告机制,使其在视频处理、信号处理、网络数据包处理和 SoC 集成等领域成为不可或缺的调试工具。
FPGA设计工具推荐
-
SZ901:
SZ901 是一款基于XVC协议的FPGA网络下载器。- 最高支持53M
- 支持4路JTAG独立使用
- 支持端口合并
- 支持国产FLASH烧写
- 下载器无限扩展
- 配备专属程序固化软件,一键烧写,能大大减小程序固化时间!
-
SZ501(PRO_A7):
- SZ501 是一款适合初学者FPGA开发板,包含低速高速接口!
- 双网口(RGMII)
- 双SFP+
- DDR
- UART
- IIC