视频链接
PCIe硬件电路设计01_哔哩哔哩_bilibili
PCIe硬件电路设计
1、PCIE介绍
1.1、PCIe简介
PCI-Express (peripheral component interconnect express)是一种高速串行计算机扩展总线标准,用于在CPU与外围组件之间实现高速串行通信。如今已成为主板扩展总线的主要标准,并成为许多板载应用的常用通信方法。
2003年PCI Sig组织定义了PCIe标准。PCIe交由PCI-SIG认证发布后才改名为“PCI-Express”,简称“PCI-e”。它的主要优势就是数据传输速率高。
PCIe是由Intel在2001年提出的,旨在替代旧的PCI,ISA和AGP等总线。
1.2、PCI和PCIe的区别
PCIe与 PCI 之间的区别
外光 颜色 | PCI是乳白色 且只有一种规格 PCIe是黑色的 7种规格 X1 X2 X4 X8 X12 X16 X32 |
速度 | PCI的传输速率(32位 133MB/S 64位266MB/S) PCIe 1.0 x1 的吞吐率就达到了250MB/s |
传输方式 | PCI是并行数据传输,一次传输4字节/8字节,半双工 PCIe是串行数据传输 |
硬件 | 传输PCI信号的是普通电平 传输PCIe信号的是差分电平 |
链路 | PCI是总线的连接方式 PCIe是点对点的连接方式 |
1.3、PCIe总线概述
PCIe总线和PCIe通道
1.4、PCIe的特征
1.4.1、点对点
1.4.2、双向(双单工)
1.4.3、可扩展满足各种带宽需求
1.4.4、向后兼容之前的PCIe版本
每个PCIe版本都向后兼容之前的版本,当端点包含采用不同PCIe版本的设备时,通道将自动使用较早PCIe版本的较低数数据速率。
(1.0的设备还可以插到2.0的上面。用2.0的设备也可以插在1.0的上面用,会降速)
1.4.5、广为采用(1.6节 PCIe转接各种模块)
应用极为广泛。存储系统、服务器、通信网络等多领域。
1.5、PCIe体系的拓扑结构(直连 & 非直连)
PCIe是点对点结构。一个典型的PCIe系统框图如下
1、Root Complex
2、PCIe Switch & Bridge
3、PCIe Endpoint
4、PCIe的枚举
总结:
1.6、PCIe switch
PCIe拓展性强,可以支持的设备有:显卡、SATA、网卡、声卡、视频采集卡、PCIe转USB、PCIe转串口等。
1.6.1、PCIe转USB (参考38课) 视频链接 PCIE转USB 3.0电路设计01_哔哩哔哩_bilibili
1.6.2、PCIe转SATA (参考46课) 视频链接 PCIe转SATA电路设计01_哔哩哔哩_bilibili
1.6.3、PCIe转串并口 (参考48课)PCIE转串口和并口电路设计01_哔哩哔哩_bilibili 视频链接 PCIE转串口和并口电路设计01_哔哩哔哩_bilibili
1.6.4、PCIe转串网口 (参考49课) PCIE转网口电路设计01_哔哩哔哩_bilibili视频链接 PCIE转网口电路设计01_哔哩哔哩_bilibili
1.7、PCIe各版本的接口速率、编码方式及带宽计算
1.7.1、各版本的接口速率
其实每次PCIE版本的一个更新速度就是在上一个版本的基础上翻倍了。
PCIE Express 版本 | Line Code | 传输速率(理论) | |||
X1 | X4 | X8 | X16 | ||
1.0 (2003) 2.5 GT/S | 8b/10b | 250 MB/S | 1 GB/S | 2 GB/S | 4 GB/S |
2.0 (2007) 5.0 GT/S | 8b/10b | 500 MB/S | 2 GB/S | 4 GB/S | 8 GB/S |
3.0 (2010) 8.0 GT/S | 128b/130b | 0.985 GB/S | 3.938 GB/S | 7.877 GB/S | 15.754 GB/S |
4.0 (2017) 16.0 GT/S | 128b/130b | 1.969 GB/S | 7.877 GB/S | 15.754 GB/S | 31.508 GB/S |
5.0 (2019) 32.0 GT/S | 128b/130b | 3.938 GB/S | 15.754 GB/S | 31.508 GB/S | 63.015 GB/S |
6.0 (2021) 64.0 GT/S | 128b/130b + PAM-4 +ECC | 7.877 GB/S | 31.508 GB/S | 63.015 GB/S | 126.031 GB/S |
1.7.2、编码方式(8b/10b、128b/130b)和带宽计算
吞吐量=传输速率*编码方案
PCIe gen1 和 PCIe gen2 采用的编解码方式是 8b/10b。
PCIe gen3和之后的采用的是128b/130b的编码方式。
2、PCIe常用的接口类型(★)
PCIe有两个存在的形态,一个是接口,一个是通道。
2.1、金手指 Gold Finger (Add-in)
在电脑内存条、显卡上,我们可以看到一排金黄色的导电触片,它们被叫做“金手指”。PCB设计制作行业中的金手指(Gold Finger,或称Edge Connector),作为连接器的插接板对外连接网络的出口。
金手指最主要的作用是连接,所以它必须要具良好的导电性能、耐磨性能、抗氧化性能、耐腐蚀性能。
PCI Express 的针脚总数
传输通道 | 针脚总数 | 右侧主接口长度 |
X1 | 36 | 7.65mm |
X4 | 64 | 21.65mm |
X8 | 98 | 38.65mm |
X16 | 164 | 71.65mm |
为什么有的焊盘少一截???Add-in Card的 “长短针”结构。
为什么金手指两端都要做热插拔检测信号?(斜插)
2.2、PCIe socket 插槽(插装)
PCIe SOCKET这种座子分为插装和贴片两种。
任何X16设备都可以插在尾部非闭合的差异槽中运行,只不过这个设备是没法发发挥全部功能。也可以把X1的设备插在X16的槽中运行,只不过这样就会浪费了一个带宽。
1、插槽缺口key左侧是电源等共性引脚,右侧为数据通道,包含差分对等数据通道。
2、PCIe X1的判断,插槽缺口右侧数据通道侧长度小于左侧共性信号侧,则为X1。
2.3、PCIe socket 插槽(贴片)
2.4、PCIe 连接线
3、PCIe管脚定义及具体的说明(★)
3.1、管脚定义
PIN | 定义(B) | 说明 | 定义(A) | 说明 | ||||
1 | +12V | +12V电压 | PRSNT1# | 热插拔 存在检测 | ||||
2 | +12V | +12V | +12V电压 | |||||
3 | +12V | +12V | ||||||
4 | GND | 地 | GND | 地 | ||||
5 | SMCLK | 系统管理 总线时钟 | TCK | 测试模式选择/TCK | ||||
6 | SMDAT | 系统管理 总线数据 | TDI | 测试模式选择/TDI | ||||
7 | GND | 地 | TDO | 测试模式选择/TDO | ||||
8 | +3.3V | +3.3V电压 | TMS | 测试模式选择/TMS | ||||
9 | TRST# | 测试复位/TRST | +3.3V | +3.3V电压 | ||||
10 | 3.3VAUX | 3.3V辅助电源 | +3.3V | +3.3V电压 | ||||
11 | WAKE# | 链接激活信号 | PERST# | 全局复位 | ||||
12 | CLKREQ# | 请求运行时钟 | GND | 地 | X1带宽模式 | X4带宽模式 | X8带宽模式 | X 16带 宽 模 式 |
13 | GND | 地 | REFCLK+ | 差分信号对参考时钟 | ||||
14 | HS0P(0) HS0N(0) | 0号信道发送差分信号对 | REFCLK- | |||||
15 | GND | 地 | ||||||
16 | GND | 地 | HSIP(0) HSIN(0) | 0号信道接收差分信号对 | ||||
17 | PRSNT2# | 热插拔存在检测 | ||||||
18 | GND | 地 | GND | 地 | ||||
19 | HS0P(1) HS0N(1) | RSVD | ||||||
20 | GND | |||||||
21 | GND | HSIP(1) | ||||||
22 | GND | HSIN(1) | ||||||
23 | HS0P(2) HS0N(2) | GND | ||||||
24 | GND | |||||||
25 | GND | HSIP(2) HSIN(2) | ||||||
26 | GND | |||||||
27 | HS0P(3) HS0N(3) | GND | ||||||
28 | GND | |||||||
29 | GND | HSIP(3) HSIN(3) | ||||||
30 | RSVD | |||||||
31 | PRSNT3# | 热插拔存在检测 | GND | |||||
32 | GND | RSVD | ||||||
33 | HS0P(4) HS0N(4) | RSVD | ||||||
34 | GND | |||||||
35 | GND | HSIP(4) HSIN(4) | ||||||
36 | GND | |||||||
37 | HS0P(5) HS0N(5) | GND | ||||||
38 | GND | |||||||
39 | GND | HSIP(5) HSIN(5) | ||||||
40 | GND | |||||||
41 | HS0P(6) HS0N(6) | GND | ||||||
42 | GND | |||||||
43 | GND | HSIP(6) HSIN(6) | ||||||
44 | GND | |||||||
45 | HS0P(7) HS0N(7) | GND | ||||||
46 | GND | |||||||
47 | GND | HSIP(7) HSIN(7) | ||||||
48 | PRSNT4# | 热插拔存在检测 | ||||||
49 | GND | GND | ||||||
50 | HS0P(8) | RSVD | ||||||
51 | HS0N(8) | GND | ||||||
52 | GND | HSIP(8) | ||||||
53 | GND | HSIN(8) | ||||||
54 | HS0P(9) | GND | ||||||
55 | HS0N(9) | GND | ||||||
56 | GND | HSIP(9) | ||||||
57 | GND | HSIN(9) | ||||||
58 | HS0P(10) | GND | ||||||
59 | HS0N(10) | GND | ||||||
60 | GND | HSIP(10) | ||||||
61 | GND | HSIN(10) | ||||||
62 | HS0P(11) | GND | ||||||
63 | HS0N(11) | GND | ||||||
64 | GND | HSIP(11) | ||||||
65 | GND | HSIN(11) | ||||||
66 | HS0P(12) | GND | ||||||
67 | HS0N(12) | GND | ||||||
68 | GND | HSIP(12) | ||||||
69 | GND | HSIN(12) | ||||||
70 | HS0P(13) HS0N(13) | GND | ||||||
71 | GND | |||||||
72 | GND | HSIP(13) | ||||||
73 | GND | HSIN(13) | ||||||
74 | HS0P(14) | GND | ||||||
75 | HS0N(14) | GND | ||||||
76 | GND | HSIP(14) | ||||||
77 | GND | HSIN(14) | ||||||
78 | HS0P(15) HS0N(15) | GND | ||||||
79 | GND | |||||||
80 | GND | HS0P(15) HS0N(15) | ||||||
81 | PRSNT5# | 热插拔存在检测 | ||||||
82 | RSVD | GND |
3.2、电源管脚说明
Pin Description | 数目(个) |
+12V | 5 |
+3.3V | 3 |
3.3VAUX | 1 |
3.3、信号管脚详细说明
3.3.1、PRSNT1#和PRSNT2#信号(长短针)
3.3.2、PERST#信号
该信号为全局复位信号。
3.3.3、REFCLK+和REFCLK-信号
参考时钟(REFCLK-/REFCLK+),给PCIe AIC提供时钟
3.3.4、WAKE#
当PCIe设备进入休眠状态,主电源已经停止供电时,PCIe设备使用该信号向处理器系统提交唤醒请求,使处理器系统重新为该PCIe设备提供主电源。
3.3.5、SMCLK和SMDAT信号
SMCLK和SMDAT信号与x86处理器的SMBus(System Mangement Bus)相关。SMBus于1995年由Intel提出,SMBus由SMCLK和SMDAT信号组成。SMBus源于I2C总线,但是与I2C总线存在一些差异。
3.3.6、JTAG信号
JTAG(Joint Test Action Group)是一种国际标准测试协议,主要用于芯片内部测试。目前绝大多数器件都支持JTAG测试标准。JTAG信号由TCK、TDI、TDO和TMS、TRST#信号组成,可选。
3.3.7、CLKREQ#信号
CLKREQ#是一个open-drain管脚,用于关闭参考时钟
3.4、总结
4、PCIe电路设计注意点(★)
4.1、金手指和插槽硬件设计注意区别(★)
注意:金手指的槽和金手指这两个原理图是不一样的!
4.2、AC耦合的大小、位置及作用(★)
4.3、时钟设计(★)
4.3.1、PCIe时钟大小
4.3.2、PCIe ADD-IN Card
4.3.3、PCIe主板插槽卡
4.4、PCIe LANE拆分问题(★)
4.5、校准电阻
4.6、PCIe正序和倒序 (★)
4.6.1、对于xilinx来说(AMD)
4.6.2、对于altera来说(intel)
4.6.3、对于其他FPGA
4.7、FPGA相关(★)
4.7.1、xilinx 7系列
4.7.2、xilinx ZYNQ系列
5、PCIe硬件实战(★)
5.1、金手指接口
5.1.1、ARTIX-7 PCIe x4 金手指接口
5.1.2、ARTIX-7 PCIe x4 金手指接口
5.1.3、KINTEX-7 PCIe X8金手指接口
5.1.4、KINTEX-7 PCIe X8金手指接口
5.1.5、金手指其他
5.2、插槽接口
5.2.1、表贴的插槽XCZU9EGFFVB1156---PCIe socket X8 硬件实战
5.2.2、表贴的插槽RK3588---PCIe socket X4 硬件实战
5.2.3、PCIe主板插槽接口 PCI-E98-SOCKET
5.3、 金手指接口和插槽接口电路设计总结
6、PCIe PCB设计注意事项(★)
6.1、PCIe常规的布局设计要求
1、PCIe需要在发送端(PETPN)和对方的接收之间进行交流端合,AC电容控空;差分对的两个交流耦合电容必须有相同的封装尺寸,位置要对称,并且要摆放在靠近金手指这边。建设选择容量为0.1uf的高频电容,封装尺寸推荐使用0402,另外0603也可以接受,但是不允许使用直插封装的电容。
2、滤波电容靠近电源引脚放置。
3、部分芯片组和主板支持PCIE板卡热插拔,为了支持带电热插拔,板卡设计时需要做两点额外处理。
6.2、 PCIe常规的布线设计要求
1、差分阻抗为85Ω、90Ω、100Ω(根据不同的CPU来定;PCIe的时钟和数据的阻抗不一样)
2、PCIE走线应远离晶振/体、电源、DDR等。
3、PCIE走线尽量短,最长不允许超过10inch(250mm)。
4、差分对走线过程中尽量避免打过孔,或者孔的数量控制子在2个以内。如果一定要通过过孔将层,那么应该在靠近信号对线过孔处放置GND地信号过孔,条件允许时适当增加用边GND地信号过孔数量。
5、PCIe的差分对对内做等长处理,对内误差要求±2mil。
6、PCIE需要有完整的参考地。
7、PCIe的差分对线3W间距。
8、AC电容控空。
9、TX和RX信号分别在走在同层走线,要完整的参考平面,优先邻近GND层走线。
10、电源管脚的铜皮处的过孔一定要根据整板功耗给予足够的宽度和数量。
6.3、PCB中金手指工艺
1、为了增加金手指的耐磨性,金手指通常需要电镀硬金。
2、金手指需要倒角,通常是45°,其他角度如20°、30°等。如果设计中没有倒角,则有问题;PCB 中的45°倒角
3、金手指需要做整块阻焊开窗处理,PIN 不需要开钢网;
4、沉锡、沉银焊盘需要距离手指顶端最小距离14mil;建议设计时焊盘距离手指位1mm 以上,包括过孔焊盘;
5、金手指的表层不要铺铜;
6、金手指内层所有层面需要做削铜处理,通常削铜宽度大3mm;可以做半手指削铜和整个手指削铜。