AXI4-Stream Accelerator Adapter IP (PG081) 详细介绍
概述
AXI4-Stream Accelerator Adapter 用于连接硬件加速器与嵌入式 CPU。它通过提供 AXI4-Stream 接口与 AXI4 基础设施组件相连,同时为加速器 IP 提供 BRAM/FIFO 接口,从而提升 FPGA 逻辑中硬件加速器的整体系统级性能。该 IP 核广泛应用于需要高性能硬件加速的场景,例如 Zynq-7000 SoC 系列和其他 FPGA 平台。
该 IP 核的主要功能包括:
- 连接性:在 AXI4-Stream 协议和加速器 IP 之间提供桥梁,支持高效数据传输。
- 多通道支持:支持多达 8 个 Stream-to-Memory(S2M)、Memory-to-Stream(M2S)和 Memory-to-Memory(M2M)通道。
- 灵活的接口:支持多种数据宽度和标量接口,适应不同应用需求。
- 任务流水线:与 Vivado HLS 结合,支持任务流水线化,提升加速器效率。
主要特性
AXI4-Stream Accelerator Adapter IP 具有以下关键特性:
-
接口支持:
- AXI4-Stream 接口:连接 AXI4 基础设施组件,支持 32、64、128 和 256 位数据宽度。
- BRAM/FIFO 接口:面向加速器 IP,支持 8、16、32 和 64 位数据宽度。
- AXI4-Lite 接口:作为 32 位从接口,用于配置和控制。
- 标量接口:支持多达 8 个输入标量、8 个输出标量和 8 个输入/输出标量。
-
多缓冲支持:
- 支持非对称多缓冲数据宽度,允许 AXI4-Stream 和 BRAM/FIFO 接口之间的灵活数据宽度转换。
- 提供多缓冲功能,包括:
- AXI4-Stream 到块存储器多缓冲(S2M)
- 块存储器到 AXI4-Stream 多缓冲(M2S)
- 存储器到存储器多缓冲(M2M)
- AXI4-Stream 到加速器 FIFO(F2F)
- 加速器 FIFO 到 AXI4-Stream
-
数据传输控制:
- M2S 多缓冲:通过 AXI4-Stream 主接口传输加速器输出数据,需等待加速器通过
acc_handshake
接口发出ap_done
信号后才开始传输(通过TVALID
信号),并在最后一个数据节拍上置位TLAST
。 - F2F 通信:支持加速器之间的流式通信,数据可用时立即启动 AXI4-Stream 传输,单数据节拍的延迟,
TLAST
由加速器通过acc_handshake
信号触发。
- M2S 多缓冲:通过 AXI4-Stream 主接口传输加速器输出数据,需等待加速器通过
-
时钟域支持:
- 支持加速器逻辑与 AXI4-Stream 时钟域异步运行,适用于加速器逻辑运行速度快于 AXI4 基础设施或直接连接外部 I/O 模块的场景。
-
工具与设备支持:
- 设计工具: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 Accelerator Adapter IP 的功能模块主要围绕数据传输和接口转换,具体包括以下几个方面:
1. AXI4-Stream 到块存储器多缓冲(S2M)
- 功能:将 AXI4-Stream 数据流存储到块存储器(BRAM)中。
- 接口:AXI4-Stream 从接口接收数据,BRAM 从接口向加速器提供数据。
- 应用:适用于需要将输入数据流存储到本地缓冲区以供加速器处理的场景。
2. 块存储器到 AXI4-Stream 多缓冲(M2S)
- 功能:将加速器生成的输出数据从 BRAM 传输到 AXI4-Stream 主接口。
- 接口:BRAM 从接口接收加速器数据,AXI4-Stream 主接口输出数据。
- 控制:需加速器通过
acc_handshake
接口发出ap_done
信号,传输完成后置位TLAST
。 - 数据宽度转换:支持 BRAM 和 AXI4-Stream 数据通道之间的数据宽度转换,提高系统性能和效率。
3. 存储器到存储器多缓冲(M2M)
- 功能:在 BRAM 缓冲区之间直接传输数据,适用于加速器内部数据处理。
- 接口:双 BRAM 接口(读写)。
- 控制:传输需等待加速器完成任务(通过
acc_handshake
信号)。
4. AXI4-Stream 到加速器 FIFO(F2F)
- 功能:支持加速器之间的流式通信,数据通过 FIFO 传输。
- 接口:AXI4-Stream 主/从接口,加速器 FIFO 接口。
- 特点:数据可用时立即传输,延迟仅为单数据节拍,
TLAST
由加速器触发。 - 应用:适用于 Vivado HLS 创建的加速器,具有
acc_fifo
接口,无需硬件缓冲或数据包化。
5. 标量接口
- 功能:通过 AXI4-Lite 接口支持标量参数的传递。
- 支持:8 个输入标量、8 个输出标量和 8 个输入/输出标量。
- 应用:用于配置加速器参数或传递控制信号。
应用场景
AXI4-Stream Accelerator Adapter IP 适用于以下场景:
-
硬件加速器与嵌入式 CPU 的集成:
- 通过 AXI4-Stream 接口连接到 Zynq-7000 或其他 SoC 的处理系统(PS),实现硬件加速器与 CPU 的高效通信。
- 适用于视频处理、信号处理、机器学习等需要高性能计算的场景。
-
任务流水线化:
- 与 Vivado HLS 结合,通过任务流水线支持高吞吐量加速器设计。
- 适用于需要连续处理数据流的实时应用,例如图像处理或数据包处理。
-
异步时钟域处理:
- 支持加速器逻辑与 AXI4-Stream 时钟域异步运行,适用于外部 I/O 模块或高速加速器逻辑。
-
多通道数据处理:
- 支持多达 8 个 S2M、M2S 和 M2M 通道,适合多任务并行处理场景。
接口说明
以下是 AXI4-Stream Accelerator Adapter IP 的主要接口及其功能:
-
AXI4-Stream 接口:
- 主接口:用于输出数据(M2S、F2F),包括
TVALID
、TLAST
、TDATA
等信号。 - 从接口:用于接收数据(S2M、F2F),包括
TREADY
、TDATA
等信号。 - 数据宽度:支持 32、64、128、256 位。
- 主接口:用于输出数据(M2S、F2F),包括
-
BRAM/FIFO 接口:
- BRAM 接口:提供随机访问数据,支持
bram_rtl
IP-XACT 总线定义。 - FIFO 接口:用于流式数据传输,支持
acc_fifo
接口。 - 数据宽度:支持 8、16、32、64 位。
- BRAM 接口:提供随机访问数据,支持
-
AXI4-Lite 接口:
- 32 位从接口,用于配置 IP 核和传递标量参数。
- 支持读写操作,典型用于初始化和状态监控。
-
acc_handshake 接口:
- 用于加速器任务完成信号(
ap_done
)的传递,触发 AXI4-Stream 数据传输。
- 用于加速器任务完成信号(
资源利用情况
根据 PG081 和相关资源利用文档(、),AXI4-Stream Accelerator Adapter IP 的资源占用取决于配置参数(如通道数、数据宽度等)。以下是一些典型配置的资源利用情况(基于 Vivado IP 核生成数据):
- 设备系列:Artix-7、Kintex-7、Zynq-7000 等。
- 资源类型:
- LUT(查找表):随通道数和数据宽度增加而增加,典型值为数百到数千。
- FF(触发器):类似 LUT,随配置复杂度变化。
- BRAM:依赖于缓冲区深度和通道数,典型为 1-8 个 36Kb BRAM。
- DSP 切片:通常不使用,除非启用特定数据宽度转换。
- 配置示例:
- 单通道、32 位 AXI4-Stream 和 32 位 BRAM:约 500 LUT、600 FF、1-2 BRAM。
- 8 通道、256 位 AXI4-Stream 和 64 位 BRAM:约 3000 LUT、3500 FF、4-8 BRAM。
具体资源利用数据需参考 Vivado IP 核生成报告,建议用户在设计时根据目标设备和配置参数进行验证。
使用方法
1. 在 Vivado 中添加 IP
- 打开 Vivado 的 Block Design,右键选择 Add IP。
- 搜索 AXI4-Stream Accelerator Adapter,将其拖入设计。
- 双击 IP 核,配置以下参数:
- 通道数:选择 S2M、M2S、M2M 或 F2F 通道数量(1-8)。
- 数据宽度:设置 AXI4-Stream(32/64/128/256 位)和 BRAM/FIFO(8/16/32/64 位)数据宽度。
- 标量接口:配置输入/输出标量数量。
- 时钟域:指定 AXI4-Stream 和加速器时钟。
2. 与 Vivado HLS 集成
- 在 Vivado HLS 中设计加速器,使用
#pragma
定义acc_fifo
或 BRAM 接口。 - 将 HLS 生成的加速器 IP 与 AXI4-Stream Accelerator Adapter 连接,确保接口兼容。
- 配置
acc_handshake
接口以支持任务完成信号。
3. 验证与调试
- 使用 Vivado 的仿真工具验证数据流和任务流水线。
- 检查 AXI4-Stream 信号(
TVALID
、TREADY
、TLAST
)和acc_handshake
信号的时序。 - 参考 PG081 文档中的示例设计()。
注意事项
-
时钟域配置:
-
数据宽度匹配:
-
TREADY 信号:
-
文档参考:
- 主要参考 PG081(AXI4-Stream Accelerator Adapter v2.1 产品指南)。
- 辅助参考 PG085(AXI4-Stream Infrastructure IP Suite)和其他相关文档。
总结
AXI4-Stream Accelerator Adapter IP (PG081) 是一款功能强大且灵活的基础设施 IP 核,专为硬件加速器与嵌入式 CPU 的高效连接而设计。它通过 AXI4-Stream 和 BRAM/FIFO 接口支持多种数据传输模式,适用于高性能 FPGA 和 SoC 应用。凭借多通道支持、灵活的数据宽度配置和与 Vivado HLS 的无缝集成,该 IP 核在视频处理、信号处理和机器学习等领域具有广泛应用前景。
FPGA设计工具推荐
-
SZ901:
SZ901 是一款基于XVC协议的FPGA网络下载器。- 最高支持53M
- 支持4路JTAG独立使用
- 支持端口合并
- 支持国产FLASH烧写
- 下载器无限扩展
- 配备专属程序固化软件,一键烧写,能大大减小程序固化时间!
-
SZ501(PRO_A7):
- SZ501 是一款适合初学者FPGA开发板,包含低速高速接口!
- 双网口(RGMII)
- 双SFP+
- DDR
- UART
- IIC