初识PCIe协议——PCIe接口专栏(一)

本文转载自: FpgaHome微信公众号

1. 前言

最近几期,我们将通过专栏的方式向大家介绍一个更加常用的高速接口——PCIe接口。"Peripheral Component Interconnect Express"(PCIe或PCI-E)是一种串行扩展总线标准,计算机利用该接口可以扩展连接一个或多个外围设备。

在本专栏中,我们将由浅入深地讲述如何利用FPGA开发PCIe接口进行高速的数据传输。首先,我们将了解下PCIe协议的基本原理和工作机制;然后介绍FPGA开发PCIe接口时需要用到的IP核及使用方法;最后向大家介绍几种在FPGA中实用的PCIe接口应用方法。欢迎大家持续关注本公众号专栏。

2. 概述

PCIe协议是一种端对端的互连协议,提供了高速传输带宽的解决方案。与传统的并行总线标准如PCI和PCI-X相比,PCIe提供了更低的延迟和更高的数据传输速率。每个连接到主板上的设备都通过独立的点对点连接与之相连,这避免了设备之间因为共享同一总线而竞争带宽的情况。

目前市场上PCIe 4.0的设备已经很成熟了,并逐渐开始向PCIe 5.0协议的设备发展。

3.PCIe协议分类


PCIe的向下兼容性体现在以下几个方面:PCIe具有向下兼容的特性,这意味着较新版本的PCIe插槽和设备可以与较旧版本的PCIe插槽和设备进行互操作。这种兼容性确保了新设备可以与旧设备一起使用,从而减少了升级和更换设备时的不便。

插槽兼容性:较新版本的PCIe插槽通常可以容纳较旧版本的PCIe卡。例如,一个PCIe x16插槽通常可以容纳任何较小的PCIe卡,如PCIe x8、PCIe x4或PCIe x1。这意味着您可以将较旧的PCIe卡插入较新的插槽中,以实现互操作性。

带宽适配:如果您将一个使用较少通道的PCIe卡插入一个具有更多通道的PCIe插槽中,系统会自动适配带宽。例如,将一个PCIe x1卡插入PCIe x16插槽中,系统会将该卡的带宽限制为PCIe x1的速度。这确保了卡与插槽之间的通信不会出现不匹配问题。

协议兼容性:即使新版本的PCIe协议引入了一些新功能和特性,但它们通常会保持与旧版本的兼容性。这意味着使用旧版本PCIe设备的系统不会因为新版本PCIe插槽而出现兼容性问题。

供电兼容性:PCIe插槽还需要向下兼容供电。较新的PCIe插槽可以为较旧版本的PCIe卡提供适当的电源。这确保了即使插槽能够提供更高的电源能力,也不会损坏较旧的卡。

PCIe的向下兼容性使得用户能够在升级或更换设备时更加灵活,无需担心新设备是否与旧设备兼容。这种特性有助于维持系统的稳定性和灵活性,同时节省了升级成本。

4. PCIe架构

PCIe协议是一种端对端的互连协议,一个典型的PCIe系统框图如下:

与PCIe拓扑结构相关的其他术语如下:

  • 根复合体(Root Complex)
  • PCIe终端设备(PCIe Endpoint)
  • PCIe桥接器(PCIe bridge)
  • Root Complex我们简称为根复合体。根复合体将CPU和内存子系统(Memory)连接到由一个或多个PCIe或PCI设备组成的PCI Express交换结构。它是PCI反向树拓扑结构的“根”,代表CPU与其他设备进行通信。

    PCIe endpoint就是PCIe的终端设备/PCIe终结点。PCIe终端设备可以直接与根设备进行连接,也可以通过Swith交换设备与根设备连接(交换设备类似于接口扩展功能)。

    根据PCIe规范,在PCIe拓扑中可以有256个总线,每个总线上有32个设备,每个设备有8个功能。一个终节点最多可以支持8个功能,每个功能都有自己独立的配置空间。

    例如:基于PCIe的非易失性内存(NVM)和基于PCIe的固态硬盘(SSD)是计算机系统中的两种终节点设备。

    PCIe桥接器:桥接器可以将PCI设备的请求转换为PCIe x1规范的请求,并连接到计算机PCIe插槽上。工作流程如下:

  • 主设备发送带有必要参数的请求到PCIe桥接器。
  • PCIe桥接器接收请求并进行协议转换,将PCI请求转换为适合PCIe接口的形式。
  • 转换后的请求在PCIe接口上发起点对点传输。
  • 请求在接口通道上进行传输,通过PCIe总线连接到目标设备。
  • 通过这种方式,PCI设备能够利用PCIe插槽和接口连接到计算机系统,实现数据和控制的交换。

    5.总结

    本文向大家初步介绍了下PCIe协议,如果觉得我们原创或引用的文章写的还不错,帮忙点赞和推荐吧,谢谢您的关注。

    ---------------------------------------------
    参考文献:

    [1] 维基百科, https://en.wikipedia.org/wiki/Root_complex.
    [2] Stephen J. Bigelow, Peripheral Component Interconnect Express, https://www.techtarget.com/searchdatacenter/definition/PCI-Express
    [3] https://prodigytechno.com.

    最新文章

    最新文章