cndm_micro_pcie_us代码架构和功能

Component Interconnect Express)接口实现。它是整个系统与主机 PCIe 总线的桥梁,负责处理 PCIe 事务、数据传输、中断和配置。该模块基于 TAXI(可能是项目内部的库或框架)构建,支持高性能网络应用,如 TSN(Time-Sensitive Networking)。

1. 整体架构

该模块采用模块化设计,主要由以下部分组成:

  • 参数配置:模块顶部定义了大量参数,用于定制化配置,包括模拟模式、供应商(默认 XILINX)、设备家族(默认 virtexuplus)、固件 ID(FW_ID)、端口数量(PORTS,默认 2)、队列宽度(WQN_W, CQN_W)、PTP(Precision Time Protocol)配置、PCIe 接口参数等。这些参数允许灵活调整模块行为。
  • 接口定义
    • PCIe 接口:包括时钟(pcie_clk)、重置(pcie_rst)、AXIS(Advanced eXtensible Interface)流接口用于完成队列(CQ)、完成确认(CC)、请求队列(RQ)和接收完成(RC)。还包括配置信号(如最大负载大小 cfg_max_payload)、流控制(FC)、MSI(Message Signaled Interrupt)中断信号。
    • PTP 接口:用于时钟同步,包括 PTP 时钟、PPS(Pulse Per Second)信号、时间戳等。
    • Ethernet 接口:支持多端口(PORTS 个)以太网 TX/RX AXIS 接口,用于数据包收发。
  • 内部逻辑
    • 使用本地参数定义 PCIe 数据宽度、地址宽度、RAM 配置等。
    • 定义 DMA(Direct Memory Access)描述符接口和 RAM 接口,用于高效数据传输。
    • 实例化多个子模块,处理不同功能。
  • 子模块实例化
    1. taxi_pcie_us_axil_master:将 PCIe CQ/CC 转换为 AXI Lite 接口,用于主机对 FPGA 控制寄存器的读写访问。
    2. taxi_dma_if_pcie_us:DMA 接口模块,处理 PCIe 读写请求,支持流控制、标签管理和操作表。连接到 PCIe RQ/RC 接口,实现主机内存与 FPGA RAM 之间的数据传输。
    3. taxi_pcie_us_cfg:PCIe 配置模块,通过 PCIe 配置空间管理接口(cfg_mgmt_*)读取/写入配置寄存器,如扩展标签使能(ext_tag_en)。
    4. taxi_pcie_us_msi:MSI 中断处理模块,将内部中断请求转换为 PCIe MSI 信号,支持 32 个中断向量。
    5. cndm_micro_core:核心模块,集成以太网处理、PTP 时钟同步、DMA 管理等。是整个系统的控制中心。
  • 时序和同步:使用 always_ff 块注册 PCIe 序列号(rq_seq_num),以打破高速时钟域(500 MHz)的时序路径。

2. 主要功能

  • PCIe 事务处理
    • 接收主机发来的 PCIe 请求(通过 CQ),发送完成确认(CC)。
    • 发起 PCIe 读写请求(RQ),接收响应(RC)。
    • 支持流控制(FC),管理传输队列,避免拥塞。
    • 处理配置事务,如最大读请求大小、负载大小等。
  • DMA 数据传输
    • 支持主机到 FPGA 的读操作(dma_rd_desc)和 FPGA 到主机的写操作(dma_wr_desc)。
    • 使用 RAM 接口(dma_ram)管理 FPGA 内部缓冲区,支持分段数据传输。
    • 提供状态信号,如忙碌状态(stat_rd_busy, stat_wr_busy)、错误状态(stat_err_cor, stat_err_uncor)、操作完成标签等,用于监控和调试。
  • 中断管理
    • 通过 MSI 接口处理中断请求,支持多向量中断,用于通知主机异步事件(如数据包到达、错误等)。
  • 集成外围功能
    • PTP 时钟同步:连接 PTP 接口,实现高精度时钟同步,支持 TOD(Time of Day)格式时间戳。
    • 以太网数据处理:连接多端口以太网 AXIS 接口,支持数据包 TX/RX,与核心模块协同工作。
    • 控制接口:通过 AXI Lite 提供主机对 FPGA 的配置和监控访问。
  • 性能和可靠性
    • 支持扩展标签(ext_tag_en)、RCB(Read Completion Boundary)128B 等 PCIe 高级特性。
    • 提供统计信息,如读写操作计数、超时检测、流控制限制等,便于性能调优。
    • 兼容 UltraScale FPGA,适用于高带宽、低延迟的应用场景,如数据中心网络或实时通信。

3. 设计亮点和注意事项

  • 模块化:通过子模块分工,实现功能解耦,便于维护和扩展。
  • 时钟域管理:PCIe 时钟域与其他域(如 PTP、以太网)分离,使用接口进行跨域通信。
  • 参数化:高度可配置,支持不同 FPGA 家族和应用需求。
  • 兼容性:基于 TAXI 库,遵循 PCIe 规范,支持 MSI-X 等中断机制。
  • 潜在扩展:代码中注释“TODO”,表明某些功能(如 IMM_EN)可能未完全实现,可根据需求添加。

cndm_micro_pcie_us代码架构和功能
http://witbit.cn/FPGA/taxi/cndm_micro_pcie_us代码架构和功能.html
作者
朝彻
发布于
2026年3月19日
许可协议