FPGA 和 PCIe 开关

FPGA and PCIe Swich

我们计划用一个Xilinx FPGA 开发一个独立板,需要与多个板载模块进行通信。其中一些模块具有 PCIe 接口,因此可以用作 PCIe 端点。我们在这个领域没有太多经验,但到目前为止我们知道的是我们需要使用 FPGA 内部的 PCIe IP 内核,作为根端口,与这些芯片进行通信。据我了解,我们还需要在 FPGA 和端点之间使用 PCIe 开关来扩展 PCIe 总线。为了管理这些设备之间的所有通信,我们正在考虑实施 MicroBlaze CPU 软核和 PetaLinux。

我的问题是:

  1. 谁负责 PCIe 端点枚举,PetaLinux OS 或根端口 IP 核?

  2. 中间有 PCIe 开关,我是否需要某种驱动程序才能工作,或者它是完全透明的,OS 或 Root 端口只能看到所有 PCIe 端点连接到下游端口?

PCIe 根联合体背后的操作系统、驱动程序和所谓的 PCIe 子系统进行枚举。

正如名字"switch"所说,它是透明的。尽管如此,一些交换机具有额外的功能来编程 link 计数、通道计数、QoS、热故障转移,...

PCIe 开关在 PCIe 子系统驱动程序枚举时也已配置。

这本书可能有帮助:PCI Express Technology 3.0 来自 Mindshare Press。