4. PCIe 电气层测试(续):接收端抖动容限、去加重、均衡测试
好了,咱们继续聊 PCIe 电气层测试。上一章讲了发送端,这一章的重点在接收端。说白了,信号发出去好不好看是一回事,接收端能不能准确无误地把它吃进去,又是另一回事。
接收端测试,核心就三个词:抖动容限、去加重、均衡。这三个东西是相辅相成的。你想想看,信号经过长长的 PCB 走线,到了接收端早就“面目全非”了。接收端得有本事把信号恢复出来。
核心观点:发送端负责“把信号做漂亮”,接收端负责“把信号读懂”。接收端测试就是检验它“读懂”的能力。
4.1 抖动容限(Jitter Tolerance)
抖动容限测试,听名字就知道,是看接收端能承受多大的抖动而不出错。我给一个最直白的解释:
被测设备(DUT)的接收端,接收一个带有特定抖动量的信号,同时监测误码率(BER)。当 BER 超过某个阈值(比如 1e-12),此时施加的抖动量就是它的抖动容限。
抖动容限测试需要用到抖动注入。测试仪器会往信号里注入两种抖动:
- 随机抖动(Rj):服从高斯分布,像电路本身的噪声。
- 确定性抖动(Dj):有规律可循,比如码间干扰(ISI)、占空比失真(DCD)等。
我习惯把抖动容限曲线画出来。横轴是抖动频率,纵轴是能承受的抖动幅度。理想的曲线是:低频段承受能力强,高频段承受能力弱。
为什么要这样?低频抖动,接收端的时钟恢复电路(CDR)能跟踪得上,所以容限高。高频抖动,CDR 跟不上,容限就低。这个道理很直观吧?
注意:抖动容限测试必须基于真实的链路场景。用仪器注入的抖动,要能模拟实际系统中可能出现的抖动类型和组合。否则测出来的数据没有参考价值。
抖动容限测试的步骤大致如下:
- 建立基线链路:先给 DUT 发送一个干净信号,确认误码率低于 1e-12。
- 注入抖动:从低频开始,逐步增加抖动频率,同时监测误码率。
- 寻找失效点:当误码率超过 1e-12 时,记录此时的抖动幅度。
- 绘制曲线:把不同频率下对应的抖动幅度连起来,就是抖动容限曲线。
这里有个关键点:抖动注入的幅度和频率组合,需要覆盖 PCIe 规范中定义的眼图模板。眼图模板规定了在特定测试点(比如 TP1、TP2、TP3)处,信号必须达到的电压和时间裕量。如果抖动容限不足,眼图大概率会闭合。
就拿我经历过的案例来说,有一次调试 PCIe Gen3 的接收端,链路老是丢包。测抖动容限时发现,在高频抖动区域,容限比规范低了将近 3dB。查了半天,原来是板上的电源纹波太大,影响了 CDR 的性能。后来加了滤波电容,问题才解决。
4.2 去加重(De-emphasis)测试
去加重,是 PCIe 里一个很巧妙的设计。
信号在高速传输时,高频成分衰减很厉害。为了补偿这个衰减,发送端会刻意预增强高频分量,同时相对降低低频分量。这个“相对降低”就是去加重。
在 PCIe 规范里,去加重用 dB 表示。公式是:
去加重 = 20 × log10(Vbit / Vatten)
其中,Vbit 是第一个比特的幅度,Vatten 是后续比特的幅度。
PCIe Gen1 和 Gen2 要求去加重为 3.5 dB ± 1 dB。Gen3 和 Gen4 因为采用了更复杂的均衡策略,去加重值会和动态均衡(EQ)机制配合使用。
测试去加重时,我个人习惯用以下眼图参数来评判:
| 参数 | 含义 | PCIe Gen3 规范要求 |
|---|---|---|
| De-emphasis | 去加重值,单位 dB | 3.5 dB ± 1 dB(初始握手阶段) |
| 眼高(Eye Height) | 眼图在垂直方向的开度 | ≥ 100 mV(在 TP1 处) |
| 眼宽(Eye Width) | 眼图在水平方向的开度 | ≥ 0.3 UI(在 TP1 处) |
这里有个容易被忽略的地方:去加重值并不是越大越好。我见过一些工程师把去加重调得很大,结果眼图在远端确实打开了,但近端的信号却因为过冲太夸张而失效。去加重要恰到好处,这点需要根据实际链路长度去调整。
经验技巧:如果你在测试中发现去加重值偏离规范很远,先检查一下发送端的预驱动器是否工作正常。有时候不是去加重设置不对,而是硬件本身有缺陷。
4.3 均衡(Equalization)测试
如果说去加重是发送端做的“预处理”,那均衡就是接收端做的“后处理”。接收端均衡技术主要有三种:
- CTLE(连续时间线性均衡):模拟电路,对高频信号进行增益补偿。说白了就是一个高通滤波器。
- DFE(判决反馈均衡):数字电路,利用之前的判决结果来消除码间干扰。这个消除的是确定性抖动。
- FFE(前馈均衡):既有模拟也有数字,在发送端和接收端都能用。
测试均衡性能,最直接的方法就是看眼图张开度。均衡器必须能把一个“闭合”的眼图重新“打开”,让接收端的误码率达到 1e-12 以下。
测试步骤如下:
- 关闭所有均衡功能,观察原始眼图。
- 依次开启 CTLE、DFE、FFE,观察眼图的变化。
- 测量均衡后的眼高和眼宽,确认是否满足规范。
- 记录均衡器的收敛时间。PCIe 规范要求 EQ 训练必须在某个时间窗口内完成。
这里要注意:均衡器的自适应算法很关键。我曾经碰过一个项目,均衡器在实验室里工作得很好,一上系统就乱跳。后来发现是算法的步长设置有问题,抗干扰能力太差。后来调整了收敛参数,才算稳定下来。
对于 PCIe Gen3 和 Gen4,动态均衡(EQ)机制尤为重要。链路双方会通过握手信号,协商最优的均衡系数。如果协商失败,链路就只能降速或者干脆连不上。
关键测试项:
- 均衡器收敛后的眼图(眼高、眼宽)
- EQ 训练成功的次数占总训练次数的比例(成功率)
- 均衡器系数是否在有效范围内
4.4 眼图测量与链路预算
眼图测量是接收端测试的最直观手段。我们把信号叠加成千上万个比特,就能得到眼图。从眼图里能读出电压裕量和时间裕量。
接收端测试的链路预算,说白了就是看链路到底还能承受多少损耗。链路预算公式为:
链路预算 = 发送端输出幅度 — 接收端灵敏度 — 噪声裕量 — 抖动裕量
如果预算不够,眼图就会闭合。这时候,要么加中继器,要么优化 PCB 走线,要么调整去加重和均衡参数。
我建议你手头备一张链路预算检查清单:
- 发送端输出幅度(Vp-p)
- 去加重值(dB)
- PCB 走线损耗(dB/inch)
- 过孔损耗(dB)
- 连接器损耗(dB)
- 接收端灵敏度(mV)
- 噪声与串扰余量
- 抖动预算
把这些项目填进去,一算就知道链路能不能稳跑。我在项目里经常这么干,比瞎猜靠谱得多。
4.5 小结
接收端测试的最终目的,是确保信号在经过各种损耗和干扰后,还能被正确恢复。抖动容限、去加重、均衡这三项测试,必须联动分析,不能孤立看某一个指标。
我个人习惯在做完整套接收端测试后,再跑一次系统性误码率测试。数据全对,才是真对。