作者:Fisher Yang,文章来源:FPGA FAE技术分享选集
前言
PCIe(Peripheral Component Interconnect Express)是当今高性能计算领域最重要的高速串行总线标准之一,广泛应用于GPU、NVMe SSD、FPGA加速卡、网卡等高带宽外设的互联。随着数据中心、AI推理、边缘计算等应用对带宽需求的持续增长,PCIe标准也在不断演进,从Gen1的2.5 GT/s发展到Gen5的32 GT/s,单通道带宽提升了近13倍。
开普勒KPL3858评估板搭载AMD Versal Gen2系列器件2VE3858,集成了两种PCIe硬核:MDB5(PS侧PCIe集成块)和PL PCIE5(PL侧PCIe集成块)。MDB5在KPL3858板上以Gen5 x2规格驱动M.2 M Key接口,可接入高速NVMe SSD;PL PCIE5支持PCIe Gen5 x4(或Gen4 x8),通过板载PCIe金手指可将KPL3858插入PC主板PCIe插槽,实现FPGA加速卡功能。
本文将介绍PCIe的技术优势与演进历程,详细讲解KPL3858板上两种PCIe集成块的架构特点,并通过实际操作演示MDB5的Vivado配置、PL PCIE5的XDMA示例工程搭建,以及使用工具测试查看PCIe链路信息。
一、PCIe简介
1.1 为什么选择PCIe
PCIe之所以成为高性能计算领域的主流互联标准,源于其在以下几个维度的突出优势:
• 高带宽:PCIe采用点对点串行差分信号,每条Lane双向独立传输,Gen5 x16理论带宽高达约128 GB/s(PCIe 5.0),远超USB 3.2(20 Gbps)、SATA 3.0(6 Gbps)等传统接口。
• 低延迟:PCIe直连CPU/SoC内存控制器,无需经过额外的协议转换层,端到端延迟极低,适合对时延敏感的AI推理、实时信号处理等场景。
• 高扩展性:通过PCIe Switch可将一个Root Port扩展为多个Endpoint,支持多设备并行挂载,灵活适应不同系统拓扑。
• 生态成熟:PCIe是业界标准,GPU、NVMe SSD、FPGA加速卡、网卡等几乎所有高性能外设均支持PCIe接口,软件驱动和工具链完善。
与其他常见接口的对比如下:

1.2 PCIe各代规格对比
PCIe标准由PCI-SIG组织制定,自2003年PCIe 1.0发布以来,每隔约3~4年推出新一代标准,每代速率翻倍。下表列出了各代PCIe的关键参数:

说明:PCIe 1.0/2.0采用8b/10b编码,开销20%;PCIe 3.0起改用128b/130b编码,开销仅约1.5%,因此从Gen2到Gen3速率翻倍,编码开销也降低了很多。PCIe 6.0引入PAM4调制和FLIT(Fixed-Length Flow Control Unit)机制,采用242/256编码,开销约5.5%。目前主流服务器和高端PC平台已全面支持PCIe 5.0,AMD Versal Gen2系列也集成了PCIe 5.0硬核。
二、Versal Gen2 PCIe集成块
2.1 PCIe集成块演进
AMD Versal系列在PS侧和PL侧均集成了PCIe硬核,随着器件代际演进,PCIe集成块的能力持续提升。
UltraScale+/Versal Gen1系列(PCIE4/PCIE4C/PCIE4CE/CPM4/PL PCIE4/CPM5/PL PCIE5):

注:Versal AI Edge Series VE2XXX器件不支持32 GT/s(Gen5)速率。
Versal Gen2系列(MDB5/PL PCIE5/CPM6):

注:MDB5和PL PCIE5(Gen2器件版本)均存在于Versal AI Edge Gen2(2VE3XXX)和Versal Prime Gen2(2VM3XXX)器件中;CPM6仅存在于Versal Premium Gen2(2VP3XXX)器件中。KPL3858搭载的2VE3858属于Versal AI Edge Gen2系列,同时具备MDB5和PL PCIE5。
2.2 MDB5与PL PCIE5的优势对比
根据AMD官方资料,MDB5和PL PCIE5各有其适用场景:

AMD官方建议:如果器件中有MDB或CPM,优先使用它们(Not every device has MDB or CPM but use them if available!)。MDB5的优势在于:硬核方案减少PL资源占用、降低时序收敛难度;上电后无需PL即可快速配置运行,直接解决配置时序问题。
2.3 MDB5架构详解
MDB5是Versal Gen2系列PS侧集成的PCIe硬核,架构特点如下:
• 收发器:4个专用但共享的GTYP收发器(通过Lane MUX与HSDP共享,详见本文第三章)
• 链路配置:支持Gen5 x4、2×Gen5 x2、Gen5 x2三种配置
• 控制器:最多两个PCIe控制器(Controller 0和Controller 1),支持Root Port和Endpoint两种端口类型
• DMA/Bridge:两个硬化的DMA/Bridge,Bridge为必须配置,DMA为可选(8路读通道+8路写通道)
• 接口:仅支持AXI4-MM接口,不支持AXI4-Stream;通过PS NoC与PL、DDR等互联
• SR-IOV:支持最多8个Physical Function(PF)和64个Virtual Function(VF)
• 不直连PL:MDB5不能像CPM5那样直接通过PL连接,只能通过NoC互联访问PL资源
• 无CXL支持:MDB5仅支持PCIe协议,不支持CXL(CXL支持需要CPM6)

2.4 PL PCIE5架构详解
PL PCIE5是Versal PL侧的PCIe集成块,相比MDB5更加灵活:
• 支持PCIe Gen5 x4、Gen4 x8、Gen3 x16,可根据应用需求选择
• 支持三种功能模式:XDMA(DMA/Bridge Subsystem)、QDMA(队列式DMA)、纯Bridge模式
• XDMA模式:4路H2C(Host to Card)+ 4路C2H(Card to Host)DMA通道,支持AXI4-MM和AXI4-Stream接口
• QDMA模式:支持数千个队列,SR-IOV 8PF/4KVF,适合高吞吐量数据中心应用
• 使用UltraRAM进行协议缓冲,直接连接PL逻辑,可与用户自定义IP无缝集成
• 上层DMA/Bridge子系统(QDMA/Bridge、XDMA等)为软IP,需要消耗PL资源,且需要PL比特流加载后才可用
三、GTYP MUX共享机制
2VE3858的GTYP收发器(共4个Lane)由多个控制器共享,通过PHY MUX最多可同时使用其中两个控制器块:
• 2路PCIe Gen5 x4控制器(MDB5,即PCIe0和PCIe1)
• 高速调试端口(HSDP,High-Speed Debug Port)
• 10G以太网(10 GbE)
注意:各种单控制器配置以及"无控制器"配置也是支持的。常用配置组合如下:

在开普勒KPL3858板上,MDB5以Gen5 x2规格连接M.2 M Key插槽(使用PCIe0 x2,占用GT_0和GT_1),因此剩余的GT_2/GT_3可用于10GbE(SFP28接口)或HSDP。这正是KPL3858同时具备M.2 NVMe接口和SFP28 10G以太网接口的硬件基础。
四、开普勒KPL3858板卡PCIe接口
4.1 板卡PCIe接口概览
开普勒KPL3858评估板提供两个PCIe接口,分别由MDB5和PL PCIE5驱动:

说明:VEK385官方评估板的M.2插槽同样由MDB5以Gen5 x2规格驱动("M.2 socket for SSD, etc. hosted by MDB5 RP Gen5x2 Link"),开普勒KPL3858与官方VEK385保持一致。
4.2 开普勒KPL3858插入NVMe SSD实物图

图4-1 KPL3858评估板M.2插槽(已插入NVMe SSD)
4.3 MDB5硬件原理图
下图为KPL3858板卡MDB5(M.2 M Key接口)的硬件原理图,展示了PCIe Gen5 x2差分信号对的连接关系:

图4-2 MDB5 PCIe Gen5 x2原理图
4.4 PL PCIE5硬件原理图
下图为KPL3858板卡PL PCIE5(PCIe金手指接口)的硬件原理图,展示了PCIe差分信号对及参考时钟的连接关系:

图4-3 PL PCIE5 PCIe 原理图
五、开普勒KPL3858 MDB5配置与测试
5.1 MDB5使用场景
MDB5支持两种典型使用场景:
• Root Port(RP)场景:Versal作为PCIe主机,连接NVMe SSD、网卡等Endpoint设备。KPL3858板上M.2插槽即为此场景,Versal APU运行Linux,通过MDB5 Root Port驱动访问NVMe SSD。
• Endpoint(EP)场景:Versal作为PCIe设备,插入x86主机的PCIe插槽。x86运行Linux,通过AMD提供的EP驱动管理MDB5 DMA/Bridge,实现x86与Versal之间的数据传输。
注意:MDB5不能像CPM5那样直接通过PL连接,MDB5控制器只能通过NoC互联访问PS内存和PL资源。
5.2 Vivado中配置MDB5
MDB5通过Vivado的Processing System Wizard(PS Wizard)进行配置,无需单独添加IP核。配置步骤如下:
步骤1:在Vivado Block Design中双击Versal PS Wizard IP,打开PS Wizard配置界面。
步骤2:在左侧导航栏选择MMI Peripherals,然后找到PCIe Controller 0配置项。

图5-1 PS Wizard中MMI Peripherals配置界面
步骤3:配置PCIe Controller 0参数:
• Port Type:Root Port of PCIe Root Complex(RP模式,连接NVMe SSD等EP设备)
• Lane Width:x2(KPL3858板上MDB5以Gen5 x2连接M.2插槽)
• Link Speed:Gen5(32 GT/s)
步骤4:确认参考时钟配置(100 MHz),保存并关闭PS Wizard。

图5-2 PS Wizard中MDB5(PCIe Controller 0)配置界面
注:AMD已提供MDB5的CED(Customizable Example Design),在Vivado 2025.1以上版本中可直接使用:
• MMI_PCIe_RP_Design:Root Port示例工程,适用于M.2 NVMe SSD场景,KPL3858适用此场景
• MMI_PCIe_EP_Design:Endpoint示例工程,适用于插入x86主机场景
两个CED的IPI(IP Integrator)构建方式相似,可参考AMD官方文档进行定制。
5.3 驱动与软件栈
AMD为MDB5提供了完整的Linux驱动支持(Linux Driver Support Current):
• Root Port驱动:嵌入式Linux内核驱动,负责初始化MDB5、枚举PCIe Endpoint设备等
• Endpoint驱动:x86 Linux内核驱动,由AMD提供,用于管理和操作MDB5 DMA/Bridge
• 驱动以源码形式提供,设计者可集成到完整驱动开发中
5.4 烧录镜像并验证
按照之前开普勒KPL3858开箱及烧录启动文章写的步骤烧录官方的BIN和镜像文件,插入NVMe SSD,上电启动进入Linux系统,可通过lspci命令查看PCIe设备信息:
# 查看所有PCIe设备和Slot
lspci
# 查看Slot详细信息
lspci -vv -s "Slot"
正常情况下可以看到NVMe SSD以PCIe Gen5 x2链路连接,Current Link Speed显示为32.0 GT/s,Negotiated Link Width为x2。笔者插入的M.2 NVMe SSD是Gen4的,所以Link Speed显示为16.0 GT/s。

图5-3 lspci查看PCIe设备信息
六、开普勒KPL3858 PL PCIE5 XDMA示例工程
6.1 工程概述
XDMA(DMA/Bridge Subsystem for PCI Express)是AMD提供的PCIe DMA IP核,支持PL PCIE5,可实现主机(Host)与FPGA之间的高效DMA数据传输。本节基于PG344(DMA/Bridge Subsystem for PCI Express v2.0)介绍如何在Vivado中搭建XDMA示例工程,详细的说明参考AMD的PG344文档。
XDMA主要特性:
• 4路H2C(Host to Card)+ 4路C2H(Card to Host)DMA通道
• 支持AXI4-MM(Memory Mapped)和AXI4-Stream两种接口
• 开普勒KPL3858评估板金手指支持PCIe Gen5 x4和Gen4 x8
• 提供完整的Linux驱动和测试工具

图6-1 XDMA 系统架构框图
6.2 Vivado IP配置
在Vivado中添加并配置DMA/Bridge Subsystem for PCI Express IP核,步骤如下:
步骤1:在Block Design中点击"+"添加IP,搜索"DMA/Bridge Subsystem for PCI Express",双击添加。
步骤2:双击IP核打开配置界面,在Basic Tab中设置:
• Functional Mode:DMA
• Device/Port Type:PCI Express Endpoint device
• PCIe Block Location:KPL3858评估板为X0Y2
• Lane Width:这里选X4(选X8最大速度只能到16.0GT/s)
• Maximum Link Speed:32.0 GT/s(Gen5)
• DMA Interface Mapped:AXI Memory Mapped选择用户接口是AXI内存映射的接口,常见用于对接DDR、RAM等有地址寻址的外设。AXI Stream的用户接口是流接口,类似于一段数据包,FIFO流等。IP只能支持其中一种选择,不能说多通道混合使用不同的用户接口,所以用户需要分析自己的数据接入方式,慎重选择。常见的,例如ADC采集,如果带DDR,则可以把ADC暂存在DDR中,XDMA使用AXI-MM的方式读取DDR数据;也可以ADC通过FIFO缓存后,XDMA使用AXI-Stream读取FIFO,不过需要注意ADC速度非常高的时候容易溢出。例如,读取外部网络报文,报文长短不一,使用AXI-Stream接口方式比较合适。

图6-2 IP 基本配置
步骤3:在PCIe ID配置中配置VID、DID、Class等选择,如果没有特殊的需要,这一页可以不变。尤其是Vendor ID,Device ID,尽量不修改,因为AMD提供的驱动是对应这些VID,DID的。
步骤4:在PCIe BARs Tab配置中配置BAR空间。
步骤5:在PCIe DMA Tab中配置DMA通道数量。
步骤6:点击OK完成配置,连接AXI接口到用户逻辑或Block RAM。
说明:DMA/Bridge Subsystem for PCI Express IP核页面的配置详情这边不一一介绍了,各配置页面参数的详细说明可参见FPGA FAE技术分享选集公众号PCIe XDMA使用指南这篇文章。
6.3 Open IP Example Design
完成IP配置后,在生成的IP上,右键点击,选择打开 Open IP Example Design。

图6-3 Vivado 中Open IP Example Design

图6-4 Vivado 生成的xdma Example Design
6.4 生成比特流
生成例程后,再生成.pdi文件,将KPL3858板卡插入PC主板PCIe插槽,PC上使用Vivado Hardware Manager通过JTAG将比特流下载到KPL3858板卡,然后重启电脑(不是断电关机)。
6.5 使用Telescan PE工具查看PCIe信息
步骤1:确保板卡已烧录刚刚IP Example Design生成的比特流。
步骤2:在Windows PC上安装并运行Telescan PE工具。
步骤3:在设备列表中找到Xilinx/AMD设备(Vendor ID: 10EE),点击查看详细信息。
步骤4:在PCIe Capability页面可以查看:
• Negotiated Link Width:协商后的链路宽度(应为x4)
• Current Link Speed:当前链路速度(Gen532.0 GT/s)
• Max Link Width / Max Link Speed:设备支持的最大规格(应为x4)
• Maximum Payload Size:最大载荷大小(通常256或512字节)
步骤5:通过对比Negotiated和Max参数,可以看到PCIe链路在PCIe Gen5 x4运行。

图6-5 Telescan PE工具查看PCIe设备信息
说明:Telescan PE是一款免费的PCIe信息查看工具,可以在Windows和Linux环境下直观显示PCIe设备的链路状态、寄存器、配置空间等详细信息,是PCIe调试和验证的实用工具。工具下载地址:https://gitcode.com/open-source-toolkit/a8f5b/
6.6 XDMA驱动安装与测试
XDMA驱动安装与测试可参见FPGA FAE技术分享选集公众号PCIe XDMA使用指南这篇文章。这里不再一一赘述。
总结
本文介绍了PCIe技术的演进历程和优势,详细讲解了开普勒KPL3858评估板上Versal Gen2 2VE3858器件集成的两种PCIe硬核:
• MDB5(PS侧):PCIe Gen5 x2(KPL3858板上),驱动M.2 M Key接口,通过PS Wizard配置,支持RP和EP两种模式,上电无需PL即可运行,AMD已提供CED示例工程(Vivado 2025.1以上版本)
• PL PCIE5(PL侧):PCIe Gen5 x4 / Gen4 x8(KPL3858板上),通过DMA/Bridge Subsystem for PCI Express IP实现高效DMA传输,适合FPGA加速卡应用,直接连接PL逻辑,灵活性更高
• GTYP MUX:4个GTYP收发器由MDB5(PCIe0/PCIe1)、HSDP、10GbE共享,最多同时使用两个控制器块,KPL3858使用PCIe0 x2(M.2)+ 10GbE(SFP28)的典型配置
通过实际操作演示,读者可以掌握MDB5的Vivado配置方法、XDMA示例工程的搭建流程,以及使用lspci和Telescan PE工具验证PCIe链路状态。KPL3858评估板凭借其丰富的PCIe接口和灵活的配置能力,为高性能计算和FPGA加速应用提供了强大的硬件平台。
下一篇预告:开普勒KPL3858(七)USB3.2及USB2.0接口的介绍和性能测试,敬请期待。
如果您对Versal Gen2及KPL3858开发板感兴趣,欢迎联系您身边的科通FAE及Sales,也欢迎邮件联系:
simonyang@comtech.cn
charlesxu@comtech.cn