2. PCIe Gen3 物理层电气参数:速率、电压摆幅、差分电平
做 PCIe Gen3 电气测试,有些基础参数你必须得心里有数。就像开车前得知道这车能跑多快、油门踩到底是什么感觉。这一章,我就把我这些年跟 Gen3 物理层打交道的经验摊开来聊聊。
说白了,电气参数就是信号在物理介质上传输时的“规矩”。你想想看,一根铜线上的电压跳变,要是没个标准,接收端根本分不清哪个是“1”、哪个是“0”。
2.1 数据速率:8 GT/s 到底意味着什么?
Gen3 的速率是 8.0 GT/s,也就是每秒传输 8 Giga 个符号(Symbol)。注意,这里用的是 GT/s,不是 Gbps。在 Gen3 之前,每个 Symbol 只传 1 bit 数据,所以 GT/s 就等于 Gbps。但 Gen3 用了 128b/130b 编码,效率更高。
我记得有次跟一个刚入行的同事讨论,他总觉得 8 GT/s 这个数字很抽象。我给他打了个比方:一条 Gen3 的 Lane,8 GT/s 的原始速率,减去 130 位里那 2 位的编码开销,实际有效数据吞吐大概是 7.877 Gbps。
为什么会这样?我们来看计算:
- 原始速率:8.0 GT/s
- 编码效率:130/128 = 1.015625,所以实际有效 bit 率是 8 GT/s / 1.015625 ≈ 7.877 Gbps
嗯,这里要注意,测试的时候示波器抓到的眼图,是基于 8 GT/s 的符号率来做的。你设置的 UI (Unit Interval) 也就是 1/8.0e9 = 125 ps。这个 125 ps 是后面所有抖动分析、眼图模板测试的基础。
2.2 电压摆幅:信号到底“吼”多大声?
电压摆幅决定了信号的能量大小。Gen3 标准里给出了好几个摆幅档位,但最常用的还是低摆幅 (Low Swing) 和全摆幅 (Full Swing)。
我曾经在调试一块老旧的 Gen3 板卡时,发现链路就是不稳。拿示波器一看,发射端的全摆幅只有 700 mVpp。嗯,这在 Gen3 里是达标的,但已经接近下限了。再加上传输线上的损耗,到接收端就更惨了。
我把 Gen3 常见的发射端摆幅要求整理了一下:
| 参数 | 低摆幅 (Low Swing) | 全摆幅 (Full Swing) | 说明 |
|---|---|---|---|
| 差分输出电压 (Vpp) | 0.4 V - 0.7 V | 0.8 V - 1.2 V | 通常测试时看峰峰值 |
| 摆幅档位标识 | 厂商自定义 | 标准模式 | 有些芯片叫 De-emphasis 模式 |
| 主要应用场景 | 短距离、低功耗 | 长距离、高损耗链路 | 台式机主板多用全摆幅 |
这里有个坑:低摆幅不是让你把电压调低就能用的。它的预加重和去加重系数也会变。我见过有人直接把全摆幅的去加重设置套在低摆幅上,结果眼图完全关上了。
2.3 差分电平:接收端到底在看什么?
不管是发射端吼多大声,接收端最终是通过两个引脚(D+ 和 D-)的差值来辨认信号的。这个差值就是差分电平。
差分电平的好处,说白了就是抗干扰。共模噪声会同时出现在 D+ 和 D-上,做减法时就抵消了。
Gen3 规范里,对接收端能接受的差分电平有个 “接收器灵敏度” 要求。简单说就是,信号到接收芯片引脚时,最小幅度不能低于 100 mV(差分)。低于这个值,接收器就瞎了。
我之前测一个固态硬盘项目,眼图在测试点(测试夹具末端)看着还行。但插到主板上后,跑压力测试就报错。后来用探头扎到接收芯片引脚端去量,发现差分电压已经掉到 150 mV 了,裕量只有 50 mV。那之后,我就习惯在制定测试计划时,把“接收端波形测量”也加进去。
2.4 总结:三者之间的关系
我画了张图,把这节的逻辑串一下:
你看,从速率出发,它决定了你的时间精度。然后看发射端能输出多大的电压摆幅,信号经过通道衰减,最终在接收端还有足够的差分电平。任何一个环节掉了链子,最后的眼图测试和抖动测试就会失败。
我个人的习惯是:拿到一块新板子,先不看复杂的抖动分析。先量速率对不对,再量发射端摆幅够不够。这两步过了,再去看接收端的差分电平。这就好比打仗,先保证弹药充足,再考虑怎么瞄准。基础打牢了,后面调去加重、谈合规才有意义。