AXI Protocol Converter IP 详细介绍
概述
AXI Protocol Converter 专为在不同 AXI 协议版本之间实现无缝转换设计,支持 AXI4、AXI3 和 AXI4-Lite 协议的互操作。它在 FPGA 和 SoC 系统设计中广泛应用,用于连接采用不同 AXI 协议的模块,如将 AXI4 主设备连接到 AXI3 从设备,或将 AXI4 模块适配到 AXI4-Lite 控制接口。
AXI Protocol Converter 的核心功能是通过协议转换、信号映射和事务调整,确保主设备和从设备之间的正确通信。其 RTL 实现基于模块化架构,支持灵活的配置选项,如协议类型、数据宽度和突发长度调整,适用于视频处理、信号处理、嵌入式系统和多核处理器等复杂场景。
该 IP 核的主要功能包括:
- 协议转换:支持 AXI4 到 AXI3、AXI4 到 AXI4-Lite、AXI3 到 AXI4-Lite 的双向转换。
- 突发长度调整:将 AXI4 的长突发(最大 256 节拍)分割为 AXI3 的短突发(最大 16 节拍)。
- 信号映射:适配不同协议的信号集(如 AXI4 的锁定信号到 AXI4-Lite 的单次传输)。
- 低延迟设计:优化事务处理,减少协议转换的性能开销。
主要特性
AXI Protocol Converter IP 具有以下关键特性:
-
协议支持:
- 支持 AXI4、AXI3 和 AXI4-Lite 协议的双向转换。
- 支持以下转换模式:
- AXI4 到 AXI3:处理长突发分割和信号兼容性。
- AXI4 到 AXI4-Lite:移除突发支持,适配单次传输。
- AXI3 到 AXI4-Lite:限制突发长度为 1,忽略不支持的信号。
- AXI3 到 AXI4(部分支持):调整信号和突发长度。
- 不支持 AXI4-Stream 协议。
-
突发长度调整:
- AXI4 到 AXI3:将 AXI4 长突发(最大 256 节拍)分割为多个 AXI3 短突发(最大 16 节拍)。
- AXI4/AXI3 到 AXI4-Lite:限制为单次传输(
ARLEN
、AWLEN
= 0)。 - 支持自动突发分割,保持数据完整性。
-
信号映射:
- 自动映射 AXI4 和 AXI3 的信号(如
ARLOCK
、AWLOCK
到 AXI3 的锁定机制)。 - 对于 AXI4-Lite,忽略不支持的信号(如
ARLEN
、AWLEN
、ARLOCK
)。 - 支持事务 ID(
ARID
、AWID
)的传递或重新分配。
- 自动映射 AXI4 和 AXI3 的信号(如
-
数据宽度兼容:
- 支持主接口和从接口的相同数据宽度(32、64、128、256、512、1024 位)。
- 若需数据宽度转换,需配合 AXI Data Width Converter IP。
-
时钟与复位:
- 使用单一时钟(
aclk
)驱动所有接口,支持同步设计。 - 支持低电平有效复位(
aresetn
),与 AXI 接口同步。 - 最大频率:250 MHz(7 系列,-1 速度等级),更高频率支持 UltraScale+ 设备。
- 使用单一时钟(
-
工具与设备支持:
- 设计工具:Vivado Design Suite、ISE Design Suite。
- 支持设备:Artix-7、Kintex-7、Virtex-7、Zynq-7000、Kintex UltraScale、Virtex UltraScale、Zynq UltraScale+ MPSoC、Versal。
功能模块
AXI Protocol Converter IP 的功能模块围绕协议转换和事务处理设计,核心包括信号映射、突发分割和控制逻辑。以下是主要模块及其功能:
1. 协议转换控制模块
- 功能:协调主从接口之间的协议转换。
- 机制:
- 解析主接口的协议类型(AXI4、AXI3)并适配从接口的协议(AXI3、AXI4-Lite)。
- 使用有限状态机(FSM)管理事务转换的时序。
- 确保 AXI Valid-Ready 握手(
ARVALID
、RVALID
等)在转换过程中正确传递。
- 应用:实现协议兼容性,如 AXI4 主设备到 AXI3 从设备的连接。
2. 突发分割模块
- 功能:处理 AXI4 长突发到 AXI3 短突发的分割。
- 机制:
- 对于 AXI4 到 AXI3:
- 将长突发(
ARLEN
或AWLEN
> 15)分割为多个短突发(每个ARLEN
或AWLEN
≤ 15)。 - 使用计数器和缓冲区跟踪数据量,确保等效数据传输(例如,256 节拍拆分为 16 个 16 节拍)。
- 调整地址增量(
ARADDR
或AWADDR
)和字节选通(WSTRB
)。
- 将长突发(
- 对于 AXI4/AXI3 到 AXI4-Lite:
- 限制为单次传输(
ARLEN
、AWLEN
= 0)。 - 每次传输仅一个数据节拍。
- 限制为单次传输(
- 文件:典型模块名为
axi_protocol_converter_v2_2_b2s
(突发到单次)。
- 对于 AXI4 到 AXI3:
- 应用:适配 AXI3 从设备,支持高吞吐量 AXI4 主设备。
3. 信号映射模块
- 功能:映射主从接口之间的信号集。
- 机制:
- AXI4 到 AXI3:
- 映射
ARLOCK
、AWLOCK
到 AXI3 的锁定信号。 - 保持事务 ID(
ARID
、AWID
)一致。
- 映射
- AXI4/AXI3 到 AXI4-Lite:
- 忽略突发相关信号(
ARLEN
、AWLEN
、ARBURST
)。 - 移除锁定信号(
ARLOCK
、AWLOCK
)。 - 将响应信号(
RRESP
、BRESP
)映射为 AXI4-Lite 的 OKAY、SLVERR 或 DECERR。
- 忽略突发相关信号(
- 使用多路复用器(MUX)动态路由信号。
- AXI4 到 AXI3:
- 应用:确保信号兼容性,适配不同协议的接口。
4. 数据通路模块
- 功能:传输读写数据,保持数据完整性。
- 机制:
- 读数据通路:
- 从从接口(
M_AXI_RDATA
)接收数据,传递到主接口(S_AXI_RDATA
)。 - 调整
RRESP
和RID
以符合主接口协议。
- 从从接口(
- 写数据通路:
- 将主接口的写数据(
S_AXI_WDATA
、WSTRB
)传递到从接口(M_AXI_WDATA
)。 - 确保写响应(
BRESP
)正确映射。
- 将主接口的写数据(
- 使用寄存器缓冲数据,优化时序。
- 读数据通路:
- 应用:支持高吞吐量数据传输。
5. 时钟与复位模块
- 功能:管理时钟和复位信号。
- 机制:
- 时钟:
aclk
,驱动所有逻辑,与主从接口同步。 - 复位:
aresetn
,低电平有效,同步复位所有寄存器。 - 支持单一时钟域设计,无跨时钟域复杂性。
- 时钟:
- 应用:确保与 AXI 系统时钟和复位一致。
接口信号
以下是 AXI Protocol Converter IP 的主要接口信号及其功能:
-
AXI 主接口(S_AXI):
- 类型:AXI4、AXI3 或 AXI4-Lite 从接口,接收主设备的请求。
- 信号(以 AXI4 为例,AXI3 和 AXI4-Lite 为子集):
- 读地址通道:
S_AXI_ARADDR[C_ADDR_WIDTH-1:0]
:读地址(32 或 64 位)。S_AXI_ARVALID
、ARREADY
:读地址握手。S_AXI_ARLEN[7:0]
:突发长度(AXI4:0-255;AXI3:0-15)。S_AXI_ARSIZE[2:0]
:传输大小。S_AXI_ARBURST[1:0]
:突发类型(INCR、WRAP、FIXED)。S_AXI_ARLOCK[0]
:锁定信号(AXI4/AXI3)。S_AXI_ARID[C_ID_WIDTH-1:0]
:事务 ID。
- 读数据通道:
S_AXI_RDATA[C_DATA_WIDTH-1:0]
:读数据(32-1024 位)。S_AXI_RRESP[1:0]
:读响应(OKAY、SLVERR、DECERR)。S_AXI_RVALID
、RREADY
:读数据握手。S_AXI_RID[C_ID_WIDTH-1:0]
:读事务 ID。
- 写地址通道:
S_AXI_AWADDR
、AWVALID
、AWREADY
、AWLEN
、AWSIZE
、AWBURST
、AWLOCK
、AWID
:写地址参数。
- 写数据通道:
S_AXI_WDATA
、WVALID
、WREADY
:写数据握手。S_AXI_WSTRB[C_DATA_WIDTH/8-1:0]
:写选通。S_AXI_WLAST
:突发最后一拍。
- 写响应通道:
S_AXI_BRESP
、BVALID
、BREADY
:写响应。S_AXI_BID
:写事务 ID。
- 读地址通道:
- 功能:接收主设备的事务请求。
- 参数:
C_S_AXI_PROTOCOL
:主接口协议(0=AXI4,1=AXI3,2=AXI4-Lite)。C_ADDR_WIDTH
:地址宽度。C_DATA_WIDTH
:数据宽度。C_ID_WIDTH
:事务 ID 宽度。
-
AXI 从接口(M_AXI):
- 类型:AXI4、AXI3 或 AXI4-Lite 主接口,输出转换后的事务。
- 信号:与
S_AXI
类似,但方向相反。 - 功能:发送转换后的事务到从设备。
- 参数:
C_M_AXI_PROTOCOL
:从接口协议。
-
时钟与复位接口:
aclk
:全局时钟,驱动所有接口。aresetn
:低电平有效复位,同步到aclk
。- 功能:提供时钟和复位控制。
配置方法
1. 在 Vivado 中添加 IP
- 添加 AXI Protocol Converter:
- 在 Vivado IP Catalog 中搜索 AXI Protocol Converter,添加到设计。
- 双击 IP 核,打开定制化对话框。
- 配置参数:
- 协议类型:
SI Protocol
:主接口协议(AXI4、AXI3)。MI Protocol
:从接口协议(AXI3、AXI4-Lite)。
- 接口参数:
Data Width
:数据宽度(32、64、128、256、512、1024 位,主从接口相同)。Address Width
:地址宽度(默认 32 或 64 位)。ID Width
:事务 ID 宽度(默认 4 位)。
- 突发设置:
Maximum Burst Length
:限制 AXI3 突发的最大长度(默认 16)。
- 转换选项:
Enable AXI3 Conversion
:启用 AXI4 到 AXI3 的突发分割。Enable AXI4-Lite Conversion
:启用 AXI4/AXI3 到 AXI4-Lite 的单次传输。
- 协议类型:
- RTL 生成:
- Vivado 根据配置生成 Verilog 代码,实例化转换模块。
- 输出文件位于项目目录(如
project_name.srcs/sources_1/ip/axi_protocol_converter
)。
2. 连接与驱动
- 硬件连接:
- S_AXI:
- 连接到 AXI 主设备(如 Zynq PS、MicroBlaze、AXI DMA)。
- M_AXI:
- 连接到 AXI 从设备(如 AXI3 外设、AXI4-Lite 控制器)。
- 分配时钟和复位:
aclk
:连接到主从接口的时钟源。aresetn
:连接到主从接口的复位信号。
- 使用 Vivado 地址编辑器为
M_AXI
分配地址空间。
- S_AXI:
- 驱动程序:
- AXI Protocol Converter 通常无需专用驱动,依赖主从设备的驱动。
- 若从设备为 AXI4-Lite 外设,处理器通过 AXI4-Lite 寄存器访问其功能。
- 参考 Xilinx 示例设计(如 Zynq AXI 参考设计)实现系统集成。
3. 仿真与验证
- 仿真环境:
- 使用 Vivado Simulator 或 ModelSim 进行 RTL 仿真。
- 编写 Verilog 测试平台,驱动主接口信号(如
S_AXI_ARADDR
、S_AXI_WDATA
)。 - 使用 AXI Verification IP(PG267)生成激励,验证协议转换。
- 验证内容:
- 检查 AXI4 到 AXI3 的突发分割(长突发拆分为短突发)。
- 验证 AXI4/AXI3 到 AXI4-Lite 的单次传输(
ARLEN
、AWLEN
= 0)。 - 确保信号映射正确(如
ARLOCK
、RRESP
)。 - 测试数据完整性,确认读写事务无丢失或错误。
- 验证 Valid-Ready 握手的时序一致性。
- 波形分析:
- 使用 Vivado 波形查看器分析主从接口信号。
- 确认突发分割和信号映射的正确性。
- 检查响应信号(
RRESP
、BRESP
)是否符合预期。
资源利用情况
AXI Protocol Converter 的资源占用取决于协议类型、数据宽度和转换模式。以下是典型资源利用情况(基于 7 系列、UltraScale 和 Zynq 设备,Vivado 综合):
- 资源类型:
- LUT(查找表):300-2000,取决于数据宽度和转换复杂性。
- FF(触发器):400-3000,与 LUT 占用相关。
- BRAM:0(无需 BRAM)。
- DSP 切片:0(不使用)。
- 配置示例:
- AXI4 到 AXI3,64 位数据宽度,突发分割:约 500 LUT、700 FF。
- AXI4 到 AXI4-Lite,32 位数据宽度,单次传输:约 300 LUT、400 FF。
- AXI3 到 AXI4-Lite,128 位数据宽度:约 800 LUT、1200 FF。
- 最大频率:
- 7 系列(-1 速度等级):250 MHz。
- UltraScale+:300 MHz 或更高。
具体资源利用需参考 Vivado 综合报告,建议根据目标设备和配置验证资源占用。
应用场景
AXI Protocol Converter IP 适用于以下场景:
-
混合协议系统:
- 连接 AXI4 主设备(如 Zynq PS、AXI DMA)到 AXI3 从设备(如旧版外设)。
- 适配 AXI4/AXI3 模块到 AXI4-Lite 控制接口(如 GPIO、UART)。
-
视频处理:
- 将 AXI4 视频 DMA 连接到 AXI3 视频外设,处理高带宽视频流。
- 使用 AXI4-Lite 控制视频处理模块的配置寄存器。
-
Zynq SoC 集成:
- 在 Zynq-7000 或 UltraScale+ MPSoC 中,桥接 PS(AXI4)与 PL 的 AXI3 或 AXI4-Lite 外设。
- 配合 AXI Interconnect 实现多协议系统。
-
遗留系统升级:
- 在现有 AXI3 系统上集成 AXI4 模块,通过协议转换实现兼容性。
- 支持新旧设备的混合设计,延长系统生命周期。
-
低功耗设计:
- 使用 AXI4-Lite 简化控制接口,降低功耗和资源占用。
注意事项
-
协议兼容性:
- 确保主接口(
C_S_AXI_PROTOCOL
)和从接口(C_M_AXI_PROTOCOL
)的协议组合受支持。 - AXI4-Lite 仅支持单次传输,勿配置突发相关参数。
- 确保主接口(
-
数据宽度一致性:
- 主从接口数据宽度需相同(
C_S_AXI_DATA_WIDTH
=C_M_AXI_DATA_WIDTH
)。 - 若需宽度转换,需添加 AXI Data Width Converter。
- 主从接口数据宽度需相同(
-
突发分割:
- AXI4 到 AXI3 的长突发分割可能增加延迟,需根据带宽需求调整突发长度。
- 确保从设备支持短突发(AXI3 最大 16 节拍)。
-
时钟与复位:
- 确保
aclk
与主从接口时钟同步,避免时序问题。 aresetn
需保持至少 16 个时钟周期,同步释放以防亚稳态。
- 确保
-
事务 ID 管理:
- AXI4-Lite 不支持事务 ID(
ARID
、AWID
),确保主设备正确处理。 - AXI3 和 AXI4 的事务 ID 需保持一致,避免事务乱序 。
- AXI4-Lite 不支持事务 ID(
总结
AXI Protocol Converter IP(PG199)是一款高效的协议转换软核,支持 AXI4、AXI3 和 AXI4-Lite 协议之间的无缝互操作,通过突发分割、信号映射和数据通路优化,确保主从设备之间的正确通信。其低延迟设计、灵活配置和广泛兼容性使其成为 FPGA 和 SoC 设计中的关键组件,广泛应用于混合协议系统、视频处理、Zynq SoC 集成和遗留系统升级。
用户在配置时需注意协议类型、数据宽度和突发设置,合理连接主从接口,并通过仿真验证转换正确性和数据完整性。结合 Vivado 工具和 Xilinx 示例设计,AXI Protocol Converter 可显著提升系统兼容性和设计效率。
FPGA设计工具推荐
-
SZ901:
SZ901 是一款基于XVC协议的FPGA网络下载器。- 最高支持53M
- 支持4路JTAG独立使用
- 支持端口合并
- 支持国产FLASH烧写
- 下载器无限扩展
- 配备专属程序固化软件,一键烧写,能大大减小程序固化时间!
-
SZ501(PRO_A7):
- SZ501 是一款适合初学者FPGA开发板,包含低速高速接口!
- 双网口(RGMII)
- 双SFP+
- DDR
- UART
- IIC