PCIe
PCI-E总线是一种通用的总线规格,它由Intel所提倡和推广,其最终的设计目的是为了取代现有 电脑系统 内部的总线 传输接口 ,这不只包括 显示接口 ,还囊括了 CPU 、PCI、HDD、Network等多种应用接口。
PCIe特点
首先就是差分信号,其次就是全双工,有点422的味道了,还有就是支持热插拔,对了pci也是支持热插拔的,高速,多个设备等。
即允许在同一时刻,同时进行发送和接收数据。如下图所示,设备A和设备B之间通过双向的Link相连接,每个Link支持1到32个通道(Lane)PCIe使用的是8b/10b的编码。
为了实现直流均衡。在高速串行通信中,8B/10B编码是一种经常用到的编码方式。而高速串行总线中,通常采用交流耦合方式,即在发送端(TX)串接电容,根据电容“隔直流,通交流”的特性,或者理想电容的阻抗公式:
电容阻抗公式
信号频率越高,电容阻抗越低。当数据位流中出现多个连续的1或0时,可以认为该时间段信号是直流的,电容的损耗变大,导致信号的幅度降低,直流信号被滤除,到最后无法识别是1还是0。而且接收端收到连续的1或0时,没有充分的定时信息,对接收端的解码带来了困难。其原理如下图所示:
8B/10B编码以字节为单位,将数据映射成10位宽度的数据(具体映射方式可查表),使得编码后的二进制数据流中1和0的数量基本保持一致,同时确保字节同步易于实现。
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插槽和接口连接到计算机系统,实现数据和控制的交换。
PCIe层级
PCIe体系结构包括应用层、事务层(Transaction Layer)、数据链路层(Data Link Layer)和物理层(Physical Layer)。
PCIe接口版本
PCIe-x只是一个接口协议,如果大家都老老实实就好了,但是,这个接口而已嘛,想要干嘛就可以干嘛,只要两边对上引脚和协议就ok了。
PCIe协议版本
PCIE1.0/PCIE2.0/PCIE3.0/PCIE4.0/PCIE5.0
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的向下兼容性使得用户能够在升级或更换设备时更加灵活,无需担心新设备是否与旧设备兼容。这种特性有助于维持系统的稳定性和灵活性,同时节省了升级成本。
PCIe用途
显卡、固态硬盘(PCIe接口形式)、无线网卡、有线网卡、声卡、视频采集卡、PCIe转接M.2接口、PCIe转接USB接口、PCIe转接Tpye-C接口
PCIe自定义引脚和协议
因为,我们看到PCIe是有物理层的,所以,我们其实就可以单独使用物理层一个就可以了,什么意思就是,插口卡口是固定的,但是接的线是可以改动的,我不一定要按照它的协议进行设计,我也可以用我自己的接口引脚协议,只要两个设备统一引脚和接线协议就好了。
总结
PCIe是一个高级的协议和接口,它在iso层级中有4层使用方法,所以,它不但是硬件协议,还是软件协议,自然是只有高端的嵌入式设备或者高性能设备才有使用到的资格,但是,只是使用硬件协议,就是那些接口的话,啥地方都能用的。