LitePCIe在真实开发板上跑起来:ACORN、KC705、KCU105、XCU1525完整实操清单
2026/8/23 12:20:57 网站建设 项目流程

LitePCIe在真实开发板上跑起来:ACORN、KC705、KCU105、XCU1525完整实操清单

【免费下载链接】litepcieSmall footprint and configurable PCIe core项目地址: https://gitcode.com/gh_mirrors/li/litepcie

LitePCIe 是一个用小 footprint、高可配置性著称的PCIe 核心(PCIe core),基于 Migen 与 LiteX 生态构建,让你无需庞大 IP 就能在 Xilinx FPGA 上快速搭建 PCIe Endpoint。本文面向新手,给出在 ACORN、KC705、KCU105、XCU1525 四块真实开发板上构建、烧录并验证 LitePCIe 的完整实操清单,帮助你在 FPGA 开发板上一次点亮 PCIe 链路。

一、先看懂LitePCIe PCIe核的三层架构

在动手之前,建议先花 2 分钟理解 LitePCIe 的结构,后面的构建脚本才有意义。整个核心分为三层:

  • PHY 层:负责物理层,支持 Xilinx 7-Series(Gen2 X8)、Ultrascale+(Gen3 X16)、Intel Cyclone5(Gen2 X4)以及 64/128/256/512-bit 数据通路;
  • Core 层:TLP 层处理、重排序、MSI/MSI-X 中断、Crossbar 交叉开关;
  • Frontend 层:DMA(带 Scatter-Gather)、MMAP(AXI/Wishbone 主从)、PTM 透传模式。

💡 这张架构图直观展示了 MMAP、DMA、TLP Packetizer/Depacketizer 到 PCIe PHY 的数据流向,调试时可以按图索骥。

二、四块开发板选型对照清单

项目bench/目录为每块板子都提供了独立的构建入口脚本,选型前先对照下表:

开发板FPGA 系列PCIe PHY支持速率/通道入口脚本
🟢 ACORNXilinx 7-SeriesS7PCIEPHYGen2 x4,125 MHzbench/acorn.py
🟢 KC705Xilinx 7-SeriesS7PCIEPHYGen2 x1/x4/x8bench/kc705.py
🔵 KCU105Xilinx UltrascaleUSPCIEPHYGen3 x4/x8bench/kcu105.py
🟣 XCU1525Xilinx Ultrascale+USPPCIEPHYGen3 x4/x8/x16bench/xcu1525.py

几点选择建议:

  • 预算有限、快速入门→ ACORN(Xilinx/SC 小型 PCIe 卡),配套配置文件为examples/acorn.yml
  • 经典学习平台→ KC705,脚本内建 UART、双路 DMA 与 MSI 中断,最适合教学;
  • 追求 Gen3 高速→ KCU105 或 XCU1525(XCU1525 可跑满 x16,系统时钟 300 MHz)。

三、环境准备:最快配置方法

  1. 安装 Python 3.8+ 与 FPGA 厂商开发工具(Vivado);
  2. 按 LiteX 官方 Wiki 安装 Migen、LiteX、LiteX-Boards 依赖栈;
  3. 获取 LitePCIe 仓库:
git clone https://gitcode.com/gh_mirrors/li/litepcie cd litepcie
  1. (可选)先跑一遍单元测试确认环境无误,测试用例位于test/目录:
python3 -m unittest test.test_examples

四、逐板实操:构建、烧录与驱动安装

4.1 ACORN:litepcie_gen 一键生成核心

ACORN 流程的特点是先用 YAML 配置生成 Verilog 核心,再与 SoC 集成:

python3 bench/acorn.py --build --load

脚本会自动执行litepcie_gen ../examples/acorn.yml生成litepcie_core,并按examples/acorn.yml中的参数(128-bit 数据宽度、4 条 DMA 通道、16 个 MSI 中断等)综合 PHY。配置项可直接编辑该 YAML 文件调整。

4.2 KC705:命令行参数切换通道数

KC705 是最完整的演示 SoC(UART + DMA0/DMA1 + MSI),命令示例:

python3 bench/kc705.py --build --load # 默认 Gen2 x4,200 MHz python3 bench/kc705.py --build --nlanes 8 # 切换到 x8 python3 bench/kc705.py --driver --output-dir build/kc705 # 生成 Linux 驱动

4.3 KCU105 与 XCU1525:Gen3 高速板通用流程

两块 UltraScale(+) 板的脚本结构一致,区别仅在 PHY 与默认配置:

python3 bench/kcu105.py --build --load --nlanes 4 # Gen3 x4 python3 bench/xcu1525.py --build --load --nlanes 16 # Gen3 x16

两板均默认小端模式(little endian),并开启 DMA 环回(loopback)功能,方便上机自检。

4.4 安装 Linux 驱动并上电验证

构建脚本加--driver后会输出完整的 Linux 驱动源码(位于litepcie/software/kernel/litepcie/software/user/),流程:

make # 编译内核模块 ./init.sh # 安装驱动并创建设备节点

若之前加载过旧驱动,先执行rmmod litepcie再重新加载。项目还提供了一个总线重扫工具litepcie/software/rescan.py,可自动卸载驱动、移除旧设备、重扫 PCIe 总线并重新加载模块,对 Xilinx 及部分 Lattice/Gowin 设备 ID 开箱即用:

python3 litepcie/software/rescan.py

五、上机排错速查清单

现象快速排查动作
lspci看不到设备rescan.py重扫总线;检查rst_n与参考时钟(100 MHz)
链路训练失败KC705/KCU105/XCU1525 脚本已内建 LTSSM 追踪器(add_ltssm_tracer),观察链路状态机卡在哪一态
DMA 不工作利用 SoC 的 DMA loopback 模式做环回自检,再比对csr.csv寄存器地址
时钟约束报错ACORN 示例已预置userclk2litepciesoc_clkout之间的 false path,自改设计时参考bench/acorn.py

六、总结

按照本文清单,你可以:

  1. ✅ 用examples/*.yml配置 +litepcie_gen快速定制核心;
  2. ✅ 通过bench/下四个脚本在 ACORN / KC705 / KCU105 / XCU1525 上构建烧录;
  3. ✅ 用--driver一键生成 Linux 驱动,配合rescan.py完成设备注册;
  4. ✅ 借助内建 LTSSM 追踪器与 DMA loopback 完成上机验证。

LitePCIe 采用宽松的 BSD 2-Clause 协议,允许用于闭源商业设计,从入门原型到量产 FPGA 设计都能平滑衔接。祝你第一次点亮 PCIe 链路顺利!🚀

【免费下载链接】litepcieSmall footprint and configurable PCIe core项目地址: https://gitcode.com/gh_mirrors/li/litepcie

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询