PCIe均衡协商与眼图测试联调 - 第3节
3、PCIe均衡技术基础:为什么需要均衡?信号完整性概念
这一章我们聊点基础的,但又特别关键的东西——信号完整性。
你想想看,PCIe发展到第4代、第5代,速率已经到了16 GT/s甚至32 GT/s。在这么高的频率下,信号在PCB上跑个十几厘米,就会变得面目全非。这个时候,均衡技术就派上用场了。
我个人带团队做项目时,经常发现一些工程师遇到链路训练不成功,第一反应就去调寄存器,但其实根本原因往往是信号质量已经差到没法看了。所以,在动手调试之前,先搞懂信号完整性是怎么回事,非常有必要。
为什么高速信号会变差?
说白了,信号从发送端到接收端,要经过PCB走线、过孔、连接器、电缆等一系列介质。这些介质不是理想导体,它们会对信号产生多种损伤。
信号衰减
信号衰减是最直观的问题。高频信号的幅度会随着传输距离增加而下降。这是因为 PCB 板材有介电损耗,铜箔有导体损耗。
我记得在某款服务器主板上,PCIe Gen4 走线长度从 CPU 到插槽走了 12 英寸。示波器实测发现,6 GHz 的奈奎斯特频率分量衰减超过了 8 dB。就是说,发射端 800 mV 的摆幅,到接收端时只剩 300 mV 左右。
信号反射
反射是因为阻抗不连续造成的。PCB 走线的特性阻抗通常是 85 Ω 或 100 Ω差分,但过孔、连接器、焊盘这些地方,阻抗会突变。信号走到这些位置,一部分能量会被反射回来,形成振铃或台阶。
我在项目中遇到过,一块板子在 PCIe 插槽附近做了个高速开关切换器,结果这个开关的阻抗只有 75 Ω,跟 100 Ω 的 PCIe 链路完全不匹配。整个链路的眼图都塌了,DLLP 报错一大堆。当时排查了三天才发现是这个问题。
串扰
一根信号线上的能量耦合到相邻的信号线上,这就是串扰。在高速设计中,串扰越来越难以忽视。尤其是在连接器处,因为引脚间距小,串扰量会明显增大。
我曾经处理过一个笔记本项目,南桥到无线网卡的 PCIe 链路,连接器处串扰大到直接把接收端的信号抖动增加了 50 ps。最后不得不把相邻居间加了一根地线隔离才搞定。
信号抖动
信号边沿的理想位置和实际位置之间的偏差,称为抖动。抖动分为随机抖动和确定性抖动。随机抖动是热噪声、散粒噪声这些物理效应导致的,无法完全消除。确定性抖动则来自串扰、反射、电源噪声等原因,可以通过优化设计来改善。
| 抖动类型 | 来源 | 特点 | 对链路影响 |
|---|---|---|---|
| 随机抖动(RJ) | 热噪声、1/f 噪声 | 呈高斯分布,无法消除 | 增加误码率底限 |
| 确定性抖动(DJ) | 串扰、反射、电源纹波 | 有界,可优化 | 决定眼图张开度 |
| 总抖动(TJ) | RJ + DJ 组合 | BER 参考值,通常取 10⁻¹² | 决定能否通过一致性测试 |
均衡的补偿原理
既然信号会衰减、会变形,那我们就想办法在发送端或接收端把这些损失补回来。均衡就是这个思路。
发射端均衡:预加重与去加重
发射端均衡的核心思想是:提前增大高频分量的幅度。因为高频分量在传输中衰减最大,所以发射时把高频分量多推出去一些,到接收端时高低频分量幅度就大致相等了。
PCIe 中用的是“去加重”方式。具体来说,发送器在传输连续的相同比特时,信号幅度略微降低(加重低频分量);而在比特翻转时,信号幅度保持不变(保持高频分量)。这样,高频分量相对于低频分量就变大了,刚好补偿了信道对高频的衰减。
接收端均衡:CTLE 和 DFE
接收端均衡是接收器自己内部的补偿机制。CTLE(连续时间线性均衡器)是一个模拟滤波器,它的增益特性是频率越高增益越大,正好补偿了信道的低通特性。
DFE(判决反馈均衡器)则是数字方式,它记住之前接收到的比特值,然后预测当前比特受到的前码间干扰,减去这个干扰,还原出干净的信号。
我个人觉得,CTLE 加 DFE 的配合是 PCIe 均衡的精华。CTLE 先做一阶补偿,把眼图打开到能看清的程度;DFE 再细调,把剩下的 ISI 彻底挖干净。两者加在一起,可以在严重损耗的信道上把误码率做到 10⁻¹² 以下。
如何用示波器看信号质量?
实战环节。怎么知道信号到底好不好?我们用眼图来判断。
眼图是通过把很多比特的波形叠加在一起形成的。眼图的张开高度(眼高)、宽度(眼宽)、抖动大小,直接反映了信号质量。
- 眼高:信号幅度的裕量。PCIe Gen3 要求最小眼高 100 mV,Gen4 要求 70 mV。
- 眼宽:采样点位置的裕量。一般要求不低于 0.4 UI(单位间隔)。
- 抖动:边沿时间的不确定性。PCIe Gen3 推荐的 JK 抖动限值约 0.3 UI 左右。
- 在接收端焊出一对差分测试焊盘,用示波器探棒测量。
- 设定触发条件,采集至少 1 百万个 UI(单位间隔)波形。
- 打开示波器的“眼图”模式,观察眼图开口。
- 测量眼高、眼宽、抖动参数。
- 对照 PCIe Base Spec 中的限值判断是否合格。
我记得有一次调试 PCIe Gen4 SSD 的链路。SSD 插在主板上,用示波器测出来眼高只有 65 mV,眼宽不到 0.35 UI。主板厂商说要换板子,我让他们先换个 CTLE 系数,从 12 dB 改为 15 dB,结果眼高直接回到了 95 mV,眼宽也到了 0.45 UI。这种小细节,在项目上能省不少时间。
信号完整性与均衡的关系
到这里你应该明白了:均衡就是为了补偿信号完整性损失而生的。信号完整性越差,均衡就需要开得越重。
但有个度的问题。过度均衡反而会把噪声一起放大,或者引入太多的低频增益导致信号下冲。所以,我在调试时一般会遵循一个原则:先浅后深,实测验证。
先设一个较小的 CTLE 增益,看眼图有没有改善;再逐步增大,直到眼高、眼宽达标。不要一上来就把均衡调到最大。
嗯,总结一下这节:信号完整性是均衡技术的“敌人”,也是它存在的原因。衰减、反射、串扰、抖动这四个问题,是所有高速设计必须面对的。均衡不是用来“修复”设计错误的,而是在物理层优化之后,做最后的一波补偿和细化。了解这些,后面学均衡调试方法时才能更好理解每一步在干什么。