1.PCI
是一种高速串行计算机扩展总线标准。PCI 总线使用并行总线结构,在同一条总线上的所有外部设备共享总线带宽。PCIe 总线使用了高速差分总线,采用端到端的连接方式,因此在每一条 PCIe 链路中只能连接两个设备。PCIe 与 PCI 总线采用的拓扑结构有所不同。PCI 是并行数据传输, PCIe 是串行数据传输。
2.PCIE概述
PCIe 总线是连接外部设备的线路。
PCIe 通道是 PCIe 总线的组成部分,PCIe 总线包含一条或者多条 PCIe 通道。
PCIe 卡是一种具有 PCIe 接口的卡,在主板级连接中用作扩展端口。
3.特性
①点对点。PCIe 使用了高速差分总线端到端的方式进行连接,差分信号可以匹配更高的时钟频率,且信号传输时的抗干扰。
②双向(双单工)。“单工”是指物理连接上的单向通信,而“双”是指两个。
③PCIe 总线最多具有 32个通道,当不需要使用全部的数据吞吐量,可以使用部分通道。
④向后兼容之前的 PCIe 版本。
4. PCIe拓扑结构
Root Complex: 根桥设备,是PCIe最重要的一个组成部件;是CPU与总线的直接接口。 Root Complex主要负责PCIe报文的解析和生成。RC接受来自CPU的IO指令,生成对应的PCIe报文,或者接受来自设备的PCIe TLP报文,解析数据传输给CPU或者内存。
Switch: PCIe的转接器设备,目的是扩展PCIe总线。挂载更多的PCIe设备,那就需要用到switch转接器。扮演了数据包路由的功能。
PCIe endponit: PCIe终端设备,是PCIe树形结构的叶子节点。比如网卡,NVME卡,显卡都是PCIe ep设备。
5.PCIe速度
PCI Express版本 | 行代码 | 传输速率 | 吞吐量 | ||||
x1 | x4 | x8 | x16 | ||||
1.0 | 8b/10b | 2.5GT/s | 250MB/s | 1GB/s | 2GB/s | 4GB/s | |
2.0 | 8b/10b | 5GT/s | 500MB/s | 2GB/s | 4GB/s | 8GB/s | |
3.0 | 128b/130b | 8GT/s | 984.6MB/s | 3.938GB/s | 7.877GB/s | 15.754GB/s | |
4.0 | 128b/130b | 16GT/s | 1.969GB/s | 7.877GB/s | 15.754GB/s | 31.508GB/s | |
5.0 | 128b/130b | 32or25GT/s | 3.9GB/s | 15.8GB/s | 31.5GB/s | 63B/s |
GT/s:Giga transation per second (千兆传输/秒),即每一秒内传输的次数。重点在于描述物理层通信协议的速率属性,描述的是链路上传输的原始数据(单Lane的峰值带宽)。
Gbps:Giga Bits Per Second (千兆位/秒)。描述的是链路上传输的有效数据。GT/s 与 Gbps 之间不存在成比例的换算关系。
6.编码方式
吞吐量=传输速率*编码方案。
PCIe 3.0 协议支持 8.0GT/s, 即每一条 Lane 上支持每秒钟内传输 8G个Bit。而 PCIe 3.0 的物理层协议中使用的是 128b/130b 的编码方案。即每传输 128 个 Bit,需要发送 130 个 Bit。
PCIe 3.0 协议的每一条 Lane 支持 8*128/130=7.877Gbps=984.6MB/s 的速率。
7.接口类型
①金手指 Gold Finger。金手指最主要的作用是连接。
②PCIe socket 插槽。
8.管脚
电源: +12V 5个;+.3.3V 3个;3.3VAUX 1个。
PRSNT1#和 PRSNT2#信号
PCIe设备的热插拔。 Add-in卡中,PRSNT1#和PRSNT2#信号直接相连。处理器主板,PRSNT1#信号接地,而 PRSNT2#信号通过上拉电阻接为高。
原理:当 Add-In卡插入时主板的 PRSNT2#信号将与PRSNT1#信号通过Add-In卡连通,此时 PRSNT2#信号为低。处理器主板的热插拔控制逻辑将捕获这个“低电平”,得知 Add-In 卡已经插入。
PERST#信号 为全局复位信号由处理器系统提供。
REFCLK+和 REFCLK-信号 100Mhz 的时钟,给 PCIe 提供时钟 。
WAKE#当PCIe设备进入休眠状态,该信号向处理器系统提交唤醒请求,使处理器系统重新为该 PCIe 设备提供主电源。
SMCLK 和 SMDAT 信号与 x86 处理器的 SMBus相关。PCIe 设备与处理器系统进行交互。可选。
JTAG 信号由 TCK、TDI、 TDO 和 TMS信号组成。可选。
CLKREQ#信号 CLKREQ#是一个 open-drain 管脚,用于关闭参考时钟。
9.电路布局
1.注意:金手指的槽和金手指这两个原理图是不一样的! 金手指(B 对应的是 RX) (A 对应的是 TX) 插槽 (B 对应的是 TX) (A 对应的是 RX)
2. PCIe 总线采用交流耦合的方式进行传输,耦合电容一般靠近 TX 发送端放置。