[AXI] AXI Firewall

概述

AXI Firewall 专为保护 AXI 内存映射接口设计,旨在防止下游网络(Master Interface,MI)的协议违规或超时挂起(Timeout Hangs)对上游网络(Slave Interface,SI)造成影响,避免主机系统崩溃。它在 FPGA 和 SoC 系统设计中广泛应用,特别是在需要高可靠性和容错能力的场景,如 PCIe 通信、DMA 传输和复杂多核系统。

AXI Firewall 的核心功能是通过实时监控 AXI 接口的事务,检测协议违规、超时或用户触发的软阻塞(Soft Block),并在必要时阻断进一步的事务传输,同时为未完成的事务生成协议合规的响应。它通过 AXI4-Lite 控制接口提供灵活的配置和状态监控,适用于 AXI3、AXI4 和 AXI4-Lite 协议。

该 IP 核的主要功能包括:

  • 协议保护:检测下游 AXI 接口的协议违规(如非法响应、信号不稳定)并阻断事务。
  • 超时保护:监控响应超时,防止系统挂起。
  • 事务隔离:在下游故障时保护上游网络,生成合规响应以维持系统稳定性。
  • 灵活控制:通过 AXI4-Lite 接口配置阻塞/解锁条件和超时参数。

主要特性

AXI Firewall IP 具有以下关键特性:

  1. 协议支持

    • 支持 AMBA AXI3AXI4AXI4-Lite 协议的内存映射接口(参考 ARM AMBA AXI 规范,IHI0022)。
    • 通过单一 IP 核适配不同协议,简化设计集成。
    • 不支持 AXI4-Stream 协议(需使用其他 IP,如 AXI4-Stream Interconnect)。
  2. 保护机制

    • 协议违规检测
      • 监控下游接口(MI)的读响应(RRESP)和写响应(BRESP),检测非法响应(如 SLVERR、DECERR)。
      • 检查信号稳定性(如 RVALIDWVALIDREADY 低电平时是否保持稳定)。
    • 超时保护
      • 检测响应超时(默认 1024 个时钟周期,可配置)。
      • 支持用户定义的超时周期,通过 AXI4-Lite 寄存器设置。
    • 软阻塞
      • 允许通过 AXI4-Lite 控制接口触发软阻塞(Soft Block),用于调试或故障隔离。
    • 自动响应生成
      • 在阻断状态下,为未完成的事务生成协议合规的响应(读响应返回全 1 数据,RRESPBRESP 设置为 SLVERR)。
  3. 阻塞与解锁

    • 阻塞触发条件
      • 下游接口(MI)检测到致命协议违规(如非法 RRESP)。
      • 响应超时(Timeout)。
      • 用户通过 AXI4-Lite 接口触发软阻塞。
    • 解锁触发条件
      • 用户通过 AXI4-Lite 接口请求解锁。
      • 全局复位(aresetn 低电平有效)。
    • 阻塞期间,上游接口(SI)继续接收命令,存储在内部命令队列中,并在解锁后按序处理。
  4. 控制与状态

    • 通过 AXI4-Lite 控制接口配置超时周期、触发软阻塞和解锁操作。
    • 提供故障状态寄存器(Fault Status Register),记录阻塞原因(协议违规、超时等)。
    • 支持中断信号(mi_r_errormi_w_error),通知读/写通道的阻塞状态。
  5. 时钟与复位

    • 使用单一时钟(aclk)驱动所有接口,支持同步设计。
    • 支持低电平有效复位(aresetn),与 AXI 接口同步。
    • 最大频率:250 MHz(7 系列,-1 速度等级),更高频率支持 UltraScale+ 设备。
  6. 工具与设备支持

    • 设计工具:Vivado Design Suite。
    • 支持设备:Artix-7、Kintex-7、Virtex-7、Zynq-7000、Kintex UltraScale、Virtex UltraScale、Zynq UltraScale+ MPSoC、Versal AI Core、Versal Premium、Versal Prime。

功能模块

AXI Firewall IP 的功能模块围绕事务监控、阻塞管理和响应生成设计,核心包括协议检查、命令队列和控制逻辑。以下是主要模块及其功能:

1. 协议检查模块

  • 功能:监控下游接口(MI)的 AXI 事务,检测协议违规和超时。
  • 机制
    • 检查读通道(M_AXI_RVALIDRRESP)和写通道(M_AXI_BVALIDBRESP)的信号行为。
    • 验证信号稳定性(如 RDATARVALID 高且 RREADY 低时是否保持)。
    • 监控响应超时,使用内部计数器比较实际响应时间与配置的超时周期。
    • 检测非法响应(如 RRESPBRESP 为 SLVERR 或 DECERR)。
  • 应用:识别下游网络的故障,触发阻塞保护。

2. 命令队列模块

  • 功能:存储上游接口(SI)接收的命令,管理阻塞期间的事务。
  • 机制
    • 在正常状态下,命令直接从 SI 传递到 MI。
    • 在阻塞状态下,SI 的新命令(S_AXI_ARADDRS_AXI_AWADDR)存储在内部 FIFO 队列中。
    • 解锁后,按序处理队列中的命令,确保协议合规性。
  • 应用:维持事务顺序,防止数据丢失或乱序。

3. 响应生成模块

  • 功能:为阻塞期间的未完成事务生成协议合规的响应。
  • 机制
    • 读事务:生成全 1 数据(S_AXI_RDATA = 0xFF…FF),S_AXI_RRESP 设置为 SLVERR。
    • 写事务:生成 S_AXI_BRESP 为 SLVERR。
    • 确保响应顺序符合 AXI 协议(同一线程内事务顺序保持一致,多线程间顺序非确定性)。
    • 在阻塞期间,持续置位 MI 侧的 M_AXI_RREADYM_AXI_BREADY,以接收下游响应。
  • 应用:保护上游网络,防止事务挂起。

4. 控制与状态模块

  • 功能:通过 AXI4-Lite 接口配置和监控 Firewall 状态。
  • 机制
    • 配置寄存器
      • 设置超时周期(Timeout Limit)。
      • 触发软阻塞(Soft Block Request)。
      • 请求读/写通道解锁(Unblock Request)。
    • 状态寄存器
      • 记录阻塞状态(读/写通道是否阻塞)。
      • 提供故障原因(协议违规、超时、软阻塞)。
    • 中断信号
      • mi_r_error:读通道阻塞中断。
      • mi_w_error:写通道阻塞中断。
  • 应用:支持动态配置和故障诊断。

5. 时钟与复位模块

  • 功能:管理时钟和复位信号。
  • 机制
    • 时钟aclk,驱动所有逻辑,与 SI 和 MI 接口同步。
    • 复位aresetn,低电平有效,复位整个 IP 至非阻塞状态。
    • 支持单一时钟域设计,简化时序管理。
  • 应用:确保与 AXI 系统时钟和复位一致。

接口信号

以下是 AXI Firewall IP 的主要接口信号及其功能:

  1. AXI 从接口(S_AXI)

    • 类型:AXI3、AXI4 或 AXI4-Lite 从接口,接收主设备的请求。
    • 信号(以 AXI4 为例,AXI3 和 AXI4-Lite 为子集):
      • 读地址通道
        • S_AXI_ARADDR[C_ADDR_WIDTH-1:0]:读地址(32 或 64 位)。
        • S_AXI_ARVALIDARREADY:读地址握手。
        • 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_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_RVALIDRREADY:读数据握手。
        • S_AXI_RID[C_ID_WIDTH-1:0]:读事务 ID。
      • 写地址通道
        • S_AXI_AWADDRAWVALIDAWREADYAWLENAWSIZEAWBURSTAWID:写地址参数。
      • 写数据通道
        • S_AXI_WDATAWVALIDWREADY:写数据握手。
        • S_AXI_WSTRB[C_DATA_WIDTH/8-1:0]:写选通。
        • S_AXI_WLAST:突发最后一拍。
      • 写响应通道
        • S_AXI_BRESPBVALIDBREADY:写响应。
        • S_AXI_BID:写事务 ID。
    • 功能:接收主设备(如 AXI DMA)的事务请求。
    • 参数
      • C_S_AXI_PROTOCOL:协议类型(0=AXI4,1=AXI3,2=AXI4-Lite)。
      • C_ADDR_WIDTH:地址宽度。
      • C_DATA_WIDTH:数据宽度。
      • C_ID_WIDTH:事务 ID 宽度。
  2. AXI 主接口(M_AXI)

    • 类型:AXI3、AXI4 或 AXI4-Lite 主接口,输出事务到从设备。
    • 信号:与 S_AXI 类似,但方向相反。
    • 功能:将事务传递到下游网络(如 AXI Interconnect、外设)。
    • 参数:同 S_AXI
  3. AXI4-Lite 控制接口(S_AXI_CTL)

    • 类型:AXI4-Lite 从接口,用于配置和状态监控。
    • 信号
      • S_AXI_CTL_ARADDR[31:0]:读地址。
      • S_AXI_CTL_ARVALIDARREADY:读地址握手。
      • S_AXI_CTL_RDATA[31:0]:读数据(固定 32 位)。
      • S_AXI_CTL_RVALIDRREADY:读数据握手。
      • S_AXI_CTL_AWADDRAWVALIDAWREADY:写地址通道。
      • S_AXI_CTL_WDATAWVALIDWREADY:写数据通道。
      • S_AXI_CTL_BRESPBVALIDBREADY:写响应通道。
    • 功能:配置超时、触发阻塞/解锁、读取故障状态。
    • 时钟aclk
  4. 中断接口

    • mi_r_error:读通道阻塞中断。
    • mi_w_error:写通道阻塞中断。
    • 功能:通知处理器或调试工具阻塞事件。
  5. 时钟与复位接口

    • aclk:全局时钟,驱动所有接口。
    • aresetn:低电平有效复位,复位 IP 至非阻塞状态。
    • 功能:提供时钟和复位控制。

配置方法

1. 在 Vivado 中添加 IP

  • 添加 AXI Firewall
    • 在 Vivado IP Catalog 中搜索 AXI Firewall,添加到设计。
    • 双击 IP 核,打开定制化对话框。
  • 配置参数
    • 协议类型
      • C_S_AXI_PROTOCOL:主接口协议(AXI4、AXI3、AXI4-Lite)。
      • C_M_AXI_PROTOCOL:从接口协议(通常与主接口相同)。
    • 接口参数
      • C_DATA_WIDTH:数据宽度(32、64、128、256、512、1024 位)。
      • C_ADDR_WIDTH:地址宽度(默认 32 或 64 位)。
      • C_ID_WIDTH:事务 ID 宽度(默认 4 位)。
    • 超时设置
      • C_TIMEOUT_CYCLES:超时周期(默认 1024 周期,可配置 1-65535)。
    • 控制接口
      • C_S_AXI_CTL_BASEADDR:AXI4-Lite 控制接口基地址。
    • 阻塞选项
      • 启用/禁用协议违规检测。
      • 启用/禁用超时检测。
  • RTL 生成
    • Vivado 生成 SystemVerilog 代码,实例化协议检查和阻塞逻辑。
    • 输出文件位于项目目录(如 project_name.srcs/sources_1/ip/axi_firewall)。

2. 连接与驱动

  • 硬件连接
    • S_AXI
      • 连接到 AXI 主设备(如 AXI DMA、Zynq PS)。
    • M_AXI
      • 连接到 AXI 从设备(如 AXI Interconnect、DDR 控制器)。
    • S_AXI_CTL
      • 连接到处理器(如 Zynq PS、MicroBlaze)通过 AXI Interconnect。
    • 中断
      • 连接 mi_r_errormi_w_error 到中断控制器(如 Zynq GIC)。
    • 分配时钟和复位:
      • aclk:连接到主从接口的时钟源。
      • aresetn:连接到主从接口的复位信号。
    • 使用 Vivado 地址编辑器为 M_AXIS_AXI_CTL 分配地址空间。
  • 驱动程序
    • 裸机驱动
      • 通过 AXI4-Lite 接口访问控制寄存器,配置超时、触发阻塞/解锁。
      • Xilinx 提供示例代码(embeddedsw/XilinxProcessorIPLib/drivers)。
    • Linux 驱动
      • 通常通过 devmem 或用户态程序访问 AXI4-Lite 寄存器。
      • 可参考 Xilinx Linux 文档配置 Device Tree。
    • 调试支持
      • 使用 Vivado ILA(集成逻辑分析仪)捕获 S_AXIM_AXImi_r_error/mi_w_error 信号,分析阻塞事件。
      • 读取故障状态寄存器,定位阻塞原因。

3. 仿真与验证

  • 仿真环境
    • 使用 Vivado Simulator 或 ModelSim 进行 RTL 仿真。
    • 编写 SystemVerilog 测试平台,驱动 S_AXI 信号,模拟下游故障(如超时、非法 RRESP)。
    • 使用 AXI Verification IP(PG267)生成激励,验证协议合规性。
  • 验证内容
    • 模拟协议违规(如 M_AXI_RRESP = SLVERR),检查 mi_r_error 触发和阻塞状态。
    • 测试超时检测,验证阻塞后 S_AXI_RDATA 返回全 1 和 RRESP = SLVERR。
    • 验证软阻塞和解锁功能,通过 AXI4-Lite 接口触发。
    • 确保命令队列按序处理阻塞期间的命令。
    • 检查响应顺序符合 AXI 协议(同一线程内一致)。
  • 波形分析
    • 使用 Vivado 波形查看器分析 S_AXIM_AXI 信号。
    • 确认阻塞期间 M_AXI_RREADYM_AXI_BREADY 持续置位。
    • 检查中断信号(mi_r_errormi_w_error)的触发时序。

资源利用情况

AXI Firewall 的资源占用取决于协议类型、数据宽度和超时周期配置。以下是典型资源利用情况(基于 7 系列、UltraScale 和 Zynq 设备,Vivado 2018.3 综合):

  • 资源类型
    • LUT(查找表):500-3000,取决于数据宽度和协议复杂性。
    • FF(触发器):700-4000,与 LUT 占用相关。
    • BRAM:0(无需 BRAM)。
    • DSP 切片:0(不使用)。
  • 配置示例
    • AXI4,64 位数据宽度,超时周期 1024:约 800 LUT、1000 FF。
    • AXI3,128 位数据宽度,超时周期 4096:约 1200 LUT、1500 FF。
    • AXI4-Lite,32 位数据宽度,超时周期 1024:约 500 LUT、700 FF。
  • 最大频率
    • 7 系列(-1 速度等级):250 MHz。
    • UltraScale+:350 MHz 或更高。

具体资源利用需参考 Vivado 综合报告,建议根据目标设备和配置验证资源占用。


应用场景

AXI Firewall IP 适用于以下场景:

  1. PCIe 通信保护

    • 在 Zynq SoC 或 Versal 设计中,放置于 PCIe 通道的 DMA 控制器与可编程逻辑(PL)之间,防止下游故障导致主机崩溃。
    • 检测 PL 侧外设的协议违规或超时,保护 PCIe 通信。
  2. DMA 传输保护

    • 保护 AXI DMA 或 MCDMA 免受下游外设(如 AXI Interconnect、内存控制器)的协议错误影响。
    • 确保 DMA 事务在下游故障时安全终止。
  3. 复杂 SoC 系统

    • 在多核处理器或多外设系统中,隔离故障区域,防止单一外设故障影响整个系统。
    • 支持高可靠性设计,如汽车电子和工业控制。
  4. 调试与验证

    • 在开发阶段,通过软阻塞功能模拟下游故障,验证系统容错能力。
    • 配合 Vivado ILA 捕获故障状态,定位协议问题。
  5. 高可用性系统

    • 在需要容错的嵌入式系统中(如航空航天、医疗设备),提供事务隔离和故障恢复机制。

注意事项

  1. 协议配置

    • 确保 C_S_AXI_PROTOCOLC_M_AXI_PROTOCOL 与主从设备匹配。
    • AXI4-Lite 不支持突发,勿配置突发相关参数(如 ARLENAWLEN)。
  2. 超时设置

    • 超时周期(C_TIMEOUT_CYCLES)需根据下游设备的响应时间合理配置,过短可能导致误阻塞,过长可能延迟故障检测。
    • 推荐值:1024-4096 周期,具体需根据系统时钟频率调整)。
  3. 阻塞管理

    • 阻塞期间,上游主设备应暂停新事务或正确处理 SLVERR 响应。
    • 解锁前,需确保下游网络已通过局部复位恢复正常)。
  4. 时钟与复位

    • 确保 aclk 与主从接口时钟同步,避免采样错误。
    • aresetn 需保持至少 16 个时钟周期,同步释放以防亚稳态。
  5. 中断处理

    • 配置中断控制器正确响应 mi_r_errormi_w_error,避免漏报阻塞事件。
    • 定期读取故障状态寄存器,分析阻塞原因。

总结

AXI Firewall IP是一款高可靠性 AXI 保护软核,支持 AXI3、AXI4 和 AXI4-Lite 协议,通过协议违规检测、超时保护和事务隔离,防止下游故障影响上游网络。其灵活的 AXI4-Lite 控制接口、低资源占用和高性能设计使其成为 PCIe 通信、DMA 传输和复杂 SoC 系统中的关键组件,广泛应用于高可用性嵌入式系统。

用户在配置时需注意协议类型、超时周期和中断设置,合理连接主从接口,并通过仿真验证阻塞和响应生成功能。结合 Vivado 工具、Vitis 驱动和 ILA 调试,AXI Firewall 可显著提升系统可靠性和容错能力。

FPGA设计工具推荐

  • SZ901
    SZ901 是一款基于XVC协议的FPGA网络下载器。

    • 最高支持53M
    • 支持4路JTAG独立使用
    • 支持端口合并
    • 支持国产FLASH烧写
    • 下载器无限扩展
    • 配备专属程序固化软件,一键烧写,能大大减小程序固化时间!
  • SZ501(PRO_A7)

    • SZ501 是一款适合初学者FPGA开发板,包含低速高速接口!
    • 双网口(RGMII)
    • 双SFP+
    • DDR
    • UART
    • IIC
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值