在高速数据交换、服务器加速卡及嵌入式系统中,PCIe 接口几乎是必备组件。但对于许多 FPGA 工程师而言,从零实现一条 PCIe 通道依然充满挑战——涉及 TLP 层设计、BAR 映射、DMA 引擎、收发逻辑、时钟域交叉以及 PHY 配置等复杂环节。好消息是,开源项目 LitePCIe 为这条路径扫清了障碍。
项目简介
LitePCIe 是由 Enjoy-Digital 组织维护的轻量级且高度可配置的 PCIe 核心。其核心优势在于支持多种 FPGA 设备,包括 Xilinx 7 系列(最高 Gen2 x8)和 UltraScale(+) 系列(最高 Gen3 x16)。
该核内置了完整的 TLP 层、重排序机制 (reordering)、MSI/MSI-X 支持以及交叉开关 (crossbar) 结构。同时,它支持 DMA(Scatter-Gather)、映射接口 (MMAP) 以及 AXI/Wishbone 主从模式。值得注意的是,其逻辑描述采用 Python + Migen 工具链,不仅高度可配置,还能生成标准 Verilog 供传统 FPGA 流程使用。
这意味着,如果你需要在 FPGA 上构建高速 PCIe 数据通道或高性能加速器,LitePCIe 是一个能直接投入使用的起点方案。
架构亮点拆解
PHY 接口支持
LitePCIe 兼容多种物理层接口,兼顾高端扩展性与入门门槛:
- Xilinx Ultrascale(+):高带宽,支持 Gen3 及 x16 宽度。
- Xilinx 7 系列:支持 Gen2 x8。
- Intel Cyclone5:支持 Gen2 x4。
核心功能层
TLP 层、重排序、交叉开关及 MSI 支持是传统 PCIe 核中最难啃的部分,LitePCIe 将其模块化并开源化,使工程师能够直接复用并在基础上进行定制。
前端接口
支持 DMA + Scatter-Gather、MMAP (AXI/Wishbone) 等多种数据读写方式。这确保了该核不仅仅是为了'连通 PCIe',更是为了让你在 FPGA 内部高效完成数据搬运、加速与交互。
开源工具链与 RTL 生成
项目基于 Python + Migen 编写,用户既可以在 LiteX 生态中直接使用,也可以导出 Verilog 加入传统开发流程。对于国内团队而言,这种'开源 + 可定制 + 易迁移'的模式非常友好。
架构说明

上图直观展示了整个 LitePCIe 核心结构,涵盖 PHY 层、TLP 层、DMA 及跨总线模块。

此图展示了 LitePCIe 如何融入整个 LiteX 生态,与 LiteDRAM、LiteEth、LiteSDCard 等模块协同工作。


此外,实际测试板卡的实拍图也提供了硬件参考:





