基于 Xilinx 7 系列 FPGA,使用 PCIE_2_1 Hard Block 和 GTP 的 PCIe Endpoint 实现

regymm/pcie_7x

基于 PCIE_2_1 hard block 和 GTP 收发器的 Xilinx 7 系列 FPGA 上的 PCIe Endpoint 实现。不包含专有的 Vivado IP 核! 兼容 openXC7!

时钟结构

src/pipe_clock.v 生成所有时钟。

             +-------------+
(PCIe refclk) sys_clk_p>--| IBUFDS_GTE2 |
100 MHz    sys_clk_n>--|       |--> sys_clk --> Goes to GTPE2_COMMON
             +-------------+
             
(from GTPE2_CHANNEL) +------+          BUFG
TXOUTCLK ---|>-------| MMCM |-->125 MHz-----------|>---+--DCLK (动态重配置)
100 MHz  BUFG   |   |          BUFGCTRL
           |   |-->125 MHz-Gen1------+\___+--RXUSRCLK (RX 数据时钟)               
           |   |-->250 MHz-Gen2------+/  +--OOBCLK (带外时钟)
           |   |             +--PCLK (主 PCIe 逻辑时钟)
           |   |-->user1* 
           |   |-->user2* 
           +------+
                  *通常为 Gen1/Gen2 的 62.5 MHz/125 MHz

模块结构

src/pipe_wrapper.v 包含 GTP 收发器。它通过 PIPE 接口 连接到 PCIE_2_1 src/pcie_block.v。PCIE_2_1 处理从上层物理层、数据链路层到事务层的所有内容。

 To User Design                             To PCIe Lane
           +---------------+ PIPE interface +---------------+ TX pair
AXIS TX/RX +------+ | PCIE_2_1   |-------/---------| GTPE2_CHANNEL |------/-----
=/==========| TRN2 |=| Hard Block  |         |        |------/-----
=/==========| AXIS |=|        |       +--|        | RX pair
      +------+ |        |       | +---------------+ CLK pair
-/-------------------|        |       |+--| GTPE2_COMMON |------/-----
Configs       +---------------+       || |       |
           | RX  | TX  |       || +--------------+
           | BRAMS | BRAMS |       ||
           +---------------+       +-------+
Reset                       | Reset |
---------------------------------------------------|    |
                          +-------+

有关 PCIE_2_1 参数和端口定义,请参阅 UG477

支持的模式

PCIe Gen1 x1, PCIe Gen2 x1

支持的开发板

Alinx AC7100B SoM (Artix 7 100t), Wavelet uSDR (Artix 7 35t)

通过 openXC7 快速启动的 Bitstream!

docker run -it --rm -v .:/mnt regymm/openxc7 make -C /mnt -f Makefile.alinx_100t.openxc7

文档

构建和运行: Artix 7 PCIe

PCIe Gen2 / 无复位电路板: uSDR Guide

MSI 中断 / 内核驱动: MSI Interrupt

资金

这个项目由 NGI0 Entrust 资助, 该基金由 NLnet 建立, 并获得欧盟委员会 Next Generation Internet 计划的财政支持。 更多信息请访问 NLnet project page

NLnet foundation logo NGI Zero Logo