PCIe均衡协商与眼图测试联调 - 第3节

3、PCIe均衡技术基础:为什么需要均衡?信号完整性概念

这一章我们聊点基础的,但又特别关键的东西——信号完整性。

你想想看,PCIe发展到第4代、第5代,速率已经到了16 GT/s甚至32 GT/s。在这么高的频率下,信号在PCB上跑个十几厘米,就会变得面目全非。这个时候,均衡技术就派上用场了。

我个人带团队做项目时,经常发现一些工程师遇到链路训练不成功,第一反应就去调寄存器,但其实根本原因往往是信号质量已经差到没法看了。所以,在动手调试之前,先搞懂信号完整性是怎么回事,非常有必要。

为什么高速信号会变差?

说白了,信号从发送端到接收端,要经过PCB走线、过孔、连接器、电缆等一系列介质。这些介质不是理想导体,它们会对信号产生多种损伤。

信号衰减

信号衰减是最直观的问题。高频信号的幅度会随着传输距离增加而下降。这是因为 PCB 板材有介电损耗,铜箔有导体损耗。

关键规律: 频率越高,衰减越严重。所以 PCIe Gen3 比 Gen2 更需要均衡,Gen4 比 Gen3 更需要,Gen5 更不用说。

我记得在某款服务器主板上,PCIe Gen4 走线长度从 CPU 到插槽走了 12 英寸。示波器实测发现,6 GHz 的奈奎斯特频率分量衰减超过了 8 dB。就是说,发射端 800 mV 的摆幅,到接收端时只剩 300 mV 左右。

量级参考: 每衰减 6 dB,信号的电压幅度就减半。8 dB 衰减意味着信号能量损失了 60% 以上。

信号反射

反射是因为阻抗不连续造成的。PCB 走线的特性阻抗通常是 85 Ω 或 100 Ω差分,但过孔、连接器、焊盘这些地方,阻抗会突变。信号走到这些位置,一部分能量会被反射回来,形成振铃或台阶。

我在项目中遇到过,一块板子在 PCIe 插槽附近做了个高速开关切换器,结果这个开关的阻抗只有 75 Ω,跟 100 Ω 的 PCIe 链路完全不匹配。整个链路的眼图都塌了,DLLP 报错一大堆。当时排查了三天才发现是这个问题。

串扰

一根信号线上的能量耦合到相邻的信号线上,这就是串扰。在高速设计中,串扰越来越难以忽视。尤其是在连接器处,因为引脚间距小,串扰量会明显增大。

我曾经处理过一个笔记本项目,南桥到无线网卡的 PCIe 链路,连接器处串扰大到直接把接收端的信号抖动增加了 50 ps。最后不得不把相邻居间加了一根地线隔离才搞定。

信号抖动

信号边沿的理想位置和实际位置之间的偏差,称为抖动。抖动分为随机抖动和确定性抖动。随机抖动是热噪声、散粒噪声这些物理效应导致的,无法完全消除。确定性抖动则来自串扰、反射、电源噪声等原因,可以通过优化设计来改善。

抖动类型 来源 特点 对链路影响
随机抖动(RJ) 热噪声、1/f 噪声 呈高斯分布,无法消除 增加误码率底限
确定性抖动(DJ) 串扰、反射、电源纹波 有界,可优化 决定眼图张开度
总抖动(TJ) RJ + DJ 组合 BER 参考值,通常取 10⁻¹² 决定能否通过一致性测试

均衡的补偿原理

既然信号会衰减、会变形,那我们就想办法在发送端或接收端把这些损失补回来。均衡就是这个思路。

发射端均衡:预加重与去加重

发射端均衡的核心思想是:提前增大高频分量的幅度。因为高频分量在传输中衰减最大,所以发射时把高频分量多推出去一些,到接收端时高低频分量幅度就大致相等了。

PCIe 中用的是“去加重”方式。具体来说,发送器在传输连续的相同比特时,信号幅度略微降低(加重低频分量);而在比特翻转时,信号幅度保持不变(保持高频分量)。这样,高频分量相对于低频分量就变大了,刚好补偿了信道对高频的衰减。

用脚标表示: 比如 -3.5 dB 的去加重,意思是连续相同比特时的幅度比翻转时低 3.5 dB。具体数值芯片厂商会给出典型推荐值。

接收端均衡:CTLE 和 DFE

接收端均衡是接收器自己内部的补偿机制。CTLE(连续时间线性均衡器)是一个模拟滤波器,它的增益特性是频率越高增益越大,正好补偿了信道的低通特性。

DFE(判决反馈均衡器)则是数字方式,它记住之前接收到的比特值,然后预测当前比特受到的前码间干扰,减去这个干扰,还原出干净的信号。

我个人觉得,CTLE 加 DFE 的配合是 PCIe 均衡的精华。CTLE 先做一阶补偿,把眼图打开到能看清的程度;DFE 再细调,把剩下的 ISI 彻底挖干净。两者加在一起,可以在严重损耗的信道上把误码率做到 10⁻¹² 以下。

重要提醒: 均衡不是万能的。如果你的 PCB 走线损耗超过了 -30 dB 以上,再好的均衡也很难把眼图完全打开。这时候只能重新设计板子,缩短走线或改用低损耗板材。

如何用示波器看信号质量?

实战环节。怎么知道信号到底好不好?我们用眼图来判断。

眼图是通过把很多比特的波形叠加在一起形成的。眼图的张开高度(眼高)、宽度(眼宽)、抖动大小,直接反映了信号质量。

  • 眼高:信号幅度的裕量。PCIe Gen3 要求最小眼高 100 mV,Gen4 要求 70 mV。
  • 眼宽:采样点位置的裕量。一般要求不低于 0.4 UI(单位间隔)。
  • 抖动:边沿时间的不确定性。PCIe Gen3 推荐的 JK 抖动限值约 0.3 UI 左右。
实用步骤:
  1. 在接收端焊出一对差分测试焊盘,用示波器探棒测量。
  2. 设定触发条件,采集至少 1 百万个 UI(单位间隔)波形。
  3. 打开示波器的“眼图”模式,观察眼图开口。
  4. 测量眼高、眼宽、抖动参数。
  5. 对照 PCIe Base Spec 中的限值判断是否合格。

我记得有一次调试 PCIe Gen4 SSD 的链路。SSD 插在主板上,用示波器测出来眼高只有 65 mV,眼宽不到 0.35 UI。主板厂商说要换板子,我让他们先换个 CTLE 系数,从 12 dB 改为 15 dB,结果眼高直接回到了 95 mV,眼宽也到了 0.45 UI。这种小细节,在项目上能省不少时间。

信号完整性与均衡的关系

到这里你应该明白了:均衡就是为了补偿信号完整性损失而生的。信号完整性越差,均衡就需要开得越重。

但有个度的问题。过度均衡反而会把噪声一起放大,或者引入太多的低频增益导致信号下冲。所以,我在调试时一般会遵循一个原则:先浅后深,实测验证。

先设一个较小的 CTLE 增益,看眼图有没有改善;再逐步增大,直到眼高、眼宽达标。不要一上来就把均衡调到最大。

实用建议: 大部分 PCIe 芯片都支持训练阶段自动协商均衡参数。但我建议你在研发阶段还是手动测一圈,因为自动协商不一定能选到最优值,尤其是链路拓扑比较复杂的时候。

嗯,总结一下这节:信号完整性是均衡技术的“敌人”,也是它存在的原因。衰减、反射、串扰、抖动这四个问题,是所有高速设计必须面对的。均衡不是用来“修复”设计错误的,而是在物理层优化之后,做最后的一波补偿和细化。了解这些,后面学均衡调试方法时才能更好理解每一步在干什么。

信号完整性四大核心问题 信号完整性(SI)核心问题 衰减 幅度随频率/距离下降 反射 阻抗不连续导致能量回弹 串扰 相邻线耦合干扰 抖动 边沿位置偏移 (RJ + DJ) 均衡 (去加重 / CTLE / DFE) 均衡的核心使命:补偿这些信号损伤 使接收端可以恢复出发送端的数据比特 收敛条件:眼图张开且误码率 < 10⁻¹²