PCIe简单介绍

参考书籍《Xilinx FPGA高速串行传输技术与应用》

编著 黄万伟

出版社 电子工业出版社
仅供学习交流所用

PCIe优势

  • 采用点对点的互联技术。为每一个设备单独分配共享的通道带宽,保证了多设备的带宽资源,大幅度提高了数据的传输速率。
  • 采用双通道技术。在传输模式上,PCI-Express采用与全双工通信技术类似的双通道传输模式,在速度方面,PCI-Express v1.0a 为每个通道提供了2.5Gb/s的传输速率。
  • 扩展灵活。PCI-Express总线可以延伸到系统之外,采用专用线缆将各种外设直接与系统内部的PCI-Express连接到一起。
  • 支持热插拔和热交换。
  • 另外还具有如软件层与PCI兼容、先进错误报告、链路级数据完整性等技术优势。

PCIe各版本传输速度

版本数据原始传输速率数据传输速率编码方式
PCIe 1.02.5GT/s8GB/s8b/10b
PCIe 2.05GT/s16GB/s8b/10b
PCIe 3.08GT/s32GB/s128b/130b
PCIe 4.016GT/s64GB/s128b/130b

PCIe协议分层模型

PCIe协议是多层协议,由事物层、数据链路层、物理层组成。

物理层分为逻辑子层核电气子层。
逻辑子层又分为物理代码子层(PCS)和介质接入控制子层(MAC)。

  • 事物层

    主要负责事物层包(TLP)的封装和解封装。TLP包用于事物的交互,如读、写和特定类型的事件。事物层也负责管理TLP包基于信用的流控和软硬件能耗管理。

  • 数据链路层

    数据链路层作为事物层和物理层的中间层,主要负责链路管理和保证数据的完整性,包括错误检测和数据恢复。
    发送端的数据链路层接收事物层发来的TLP包,计算数据保护吗和TLP序列号并加到TLP上,然后提交给物理层进行传输。接收端的数据链路层检查接收到的TLP的数据完整性,然后提交给事物层进行进一步处理。当检测到TLP错误时,数据链路层发出重传请求。
    数据链路层也产生和消费包用于链路管理。为了与事物层的TLP相区分,使用数据链路层包(DLLP)术语指代数据链路层产生和消费的包。

  • 物理层

    物理层包括所有的接口操作电路,如驱动和缓冲区、并/串转换和串/并转换、PLL和阻抗匹配电路,也包括与接口初始化和维护相关的逻辑功能。
    物理层主要负责将从数据链路层收到的信息转换成合适的串行格式,并以特定的频率和宽度通过PCIe链路传输。

数据包格式示意图:帧信息 | 序列号 | 事物层头 | 数据 | ECRC | LCRC | 帧信息

PCIe的三个协议层(事物层、数据链路层和物理层)在数据传输中的作用,数据流从一个设备的事物层发起,经过数据链路层到物理层的总线接口设备,然后通过相应的PCIe数据电缆传输到另一个设备的物理层设备,经过另一个设备的数据链路层再传输到事物层进行处理,每一层都代表一个协议栈。

PCIe物理接口

PCIe物理接口包括数据线,控制线,电源线和复位线。

  • 数据线

    与PCI总线使用的单端信号不同,PCIe链路使用差分信号进行数据传递,链路的最大宽度是x32,但在实际使用中,一般处理器系统最多提供x16的PCIe插槽,并使用PETp0~PETp15、PETn0~PETn15和PERp0~PERp15、PERn0~PERn15共64根数据信号线组成32对差分信号进行数据传输,其中16对PETxx信号用于发送数据,另外16对PERxx信号用于接收数据。

  • 控制线

    当PCIe设备进入休眠状态,主电源Vcc已经停止供电时,PCIe设备可以通过WAKE#信号向处理器系统提交设备唤醒请求,使处理器系统重新为PCIe设备提供主电源Vcc。
    由此可见,产生该信号的硬件逻辑必须由辅助电源Vaux供电。在PCIe总线中,WAKE#信号是可选的,因此使用WAKE#信号唤醒PCIe设备的机制也是可选的。当某个设备需要被唤醒时,该设备首先将WAKE#信号置位,然后经过一段时延后,处理器系统开始位该设备提供主电源Vcc,并使用PERST#信号对该设备进行复位操作。此时WAKE#信号时钟保持为低,当Vcc上电完成后,PERST#信号也将置位为无效并结束复位,WAKE#信号也将随之置为无效,结束整个唤醒过程。

  • 电源线

    PCIe设备使用两种电源信号供电,分别是Vcc和Vaux,额定电压均是3.3V。其中Vcc为主电源,PCIe设备的主要逻辑模块均使用Vcc供电,Vaux是辅助电源,另外一些与电源管理相关的逻辑及一些特殊的的寄存器使用Vaux供电,这样即使Vcc被移除,与电源管理相关的逻辑状态及特殊的寄存器内容也不会发生改变,从而保证Vcc恢复后,设备可以很快地恢复到正常工作状态。

  • 复位线

    PERST#信号为全局复位信号,处理器系统需要为PCIe插槽和PCIe设备提供该复位信号。PCIe设备使用该信号复位内部逻辑。当该信号有效时,PCIe设备将进行复位操作。

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PCI Express(简称 PCIe)是一种计算机总线标准,用于连接计算机的主板和外部设备,特别是用于高带宽和低延迟的数据传输。Linux 是一个自由、开放源代码的操作系统,具有广泛的应用领域和强大的可定制性。在 Linux 系统中,PCIe 被广泛用于连接各种外设,如网卡、显卡、声卡等。 Linux 提供了专门的驱动程序和内核模块,来支持 PCIe 总线。这些驱动程序可将 PCIe 外设识别并与其进行通信。Linux 内核会通过检测 PCIe总线的拓扑结构来自动加载适当的驱动程序。同时,Linux 提供了一种称为“设备树”的机制,用于描述 PCIe 设备的硬件属性,从而更好地管理和配置硬件资源。 对于开发者来说,Linux 提供了一套完善的工具和接口,用于开发和调试 PCIe 设备驱动程序。这些工具包括 lspci 命令(用于列出和管理 PCIe 设备)、PCIe 总线处理函数(用于访问和控制 PCIe 设备的寄存器)以及 PCIe 驱动开发框架(用于编写自定义驱动程序)等。此外,开发者还可以使用 PCIe 性能分析工具,来监测和优化 PCIe 数据传输性能。 总而言之,Linux 提供了强大的 PCIe 支持,可以方便地连接和管理各种外设。同时,开发者也可以利用 Linux 提供的工具和接口,进行 PCIe 驱动程序的开发和调试。这使得 Linux 成为一个理想的操作系统选择,以满足高性能计算和数据传输的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值