PCIe Endpoint on Xilinx 7-Series FPGAs with PCIe_2_1 Hard Block and GTP
该项目基于 Xilinx 7 系列 FPGA,利用 PCIE_2_1 hard block 和 GTP 收发器实现 PCIe Endpoint。它不依赖专有 IP 核,兼容 [openXC7],支持 PCIe Gen1 x1 和 PCIe Gen2 x1 模式。项目包含时钟结构和模块结构,通过 PIPE 接口连接 GTP 和 PCIE_2_1。支持 [Alinx AC7100B SoM] 和 [Wavelet uSDR] 开发板,并提供快速启动的 Bitstream。该项目由 [NGI0 Entrust] 资助,并获得欧盟委员会 [Next Generation Internet] 计划的支持。
基于 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。