4. 信号完整性基础与眼图测试
做PCIe测试这么多年,我见过不少工程师上来就怼着眼图模板看,结果波形没搞好就以为是协议问题。其实啊,眼图才是数字信号最直观的体检报告。这一节我们不谈复杂的传输线理论,我带你从实际测试的角度,把信号完整性和眼图这件事说清楚。
4.1 信号完整性:你每眨一次眼,信号可能就变了
信号完整性(SI — Signal Integrity),说白了就是保证信号从发送端到接收端,波形没有严重畸变。你想想看,PCIe Gen5跑32GT/s,一个UI只有31.25ps。这么短的时间内,反射、串扰、损耗、抖动都会把信号搞得面目全非。
我当年做第一款Gen4板卡时,测试眼图死活不过,后来才发现是过孔残桩太长引起的谐振。嗯,从此我对PCB走线里的每个过孔都格外小心。
影响SI的主要因素,我列一个简表,你对照着排查链路问题:
| 因素 | 典型成因 | 影响后果 |
|---|---|---|
| 反射 | 阻抗突变、过孔、连接器 | 眼图塌陷、振铃 |
| 串扰 | 相邻信号线耦合 | 抖动增加、眼宽减小 |
| 损耗 | 介质损耗、导体趋肤效应 | 眼高降低、上升沿变缓 |
| 抖动 | 电源噪声、时钟抖动、码间干扰 | 眼宽收缩、误码率上升 |
| 码间干扰 | 通道带宽不足 | 眼图闭合、模板裕量归零 |
4.2 眼图:数字信号的“心电图”
眼图是怎么来的?很简单:把长串比特流按UI宽度叠加、同步,再用余辉显示出来。结果就是一只只“眼睛”。健康的眼图像一只睁开的马眼,中央区域干净,上下两条线清晰对称。
为什么叫眼图?因为我第一次在示波器上看到时也觉得像一只眼睛。接收端靠这只眼睛来采样bit,眼张得越大,误码率越低。
4.3 眼图关键参数解读
PCIe一致性测试里,我们主要看四个眼图参数:眼高、眼宽、眼模板裕量和抖动。下面这张SVG图可以帮你把整体关系理清。
你看,信号经过DUT,在示波器里做完时钟恢复,再按UI把波形叠到一起,就得到了眼图。然后我们从中直接读出眼高、眼宽、抖动和模板裕量。
眼高(Eye Height)—— 指在眼图中央位置测得的垂直幅度。PCIe Gen5的接收端最小眼高要求是25mV(差分的)。我遇到过一个案子,眼高只有18mV,怎么调都上不去,换了一款低损耗的板材,立马到40mV。所以眼高低了,优先查通道损耗。
眼宽(Eye Width)—— 指眼图水平方向中央的开口。Gen5要求最小0.2UI。眼宽不够,大概率是抖动在作怪。
抖动(Jitter)—— 这东西分两类:随机抖动(RJ)和确定性抖动(DJ)。RJ是热噪声,属于高斯分布,你很难根除;DJ是串扰、电源噪声等引起的,可以通过修PCB来改善。坦白讲,很多工程师只关心总抖动(TJ),但我建议你把DJ单独测一下,这样知道往哪个方向使力。
4.4 眼图测试实操要点
测试眼图,示波器是主力工具。但别以为把探头一搭,按个Auto Set就完事了。我列几个要命的坑:
- 探头选择:必须用低噪声有源差分探头,带宽至少是信号速率的1.5倍。测PCIe Gen5,你得用25GHz以上的探头。便宜无源探头?那是找麻烦。
- 测试点:规范规定在芯片焊盘处测,但实际我们往往在连接器或测试夹具上测。这时候要扣除夹具损耗,你做de-embedding(去嵌入)了吗?我以前吃过亏,测出来眼高10mV,实际芯片输出明明是40mV,因为忘记去嵌入,多亏了导师提醒。
- 时钟恢复:示波器内部必须用与DUT相同的PLL带宽来恢复时钟。PCIe规范里写了具体的环路带宽和阻尼系数,设错了,眼宽会偏大或偏小。
- 码型:测试眼图统一用PRBS-7(7阶伪随机码),长度到2^7-1。如果用了PRBS-31,测试结果会更严格,但通常不是规范要求。
4.5 从眼图反推链路问题
拿到眼图之后,别只盯着Pass/Fail,要学会看眼图的“表情”。我总结了几种常见眼图形态和可能的问题:
| 眼图外观 | 可能原因 | 建议操作 |
|---|---|---|
| 眼高明显偏低,但有明显开口 | 通道损耗过大,或发送端摆幅不足 | 检查PCB板材、走线长度;调整TX de-emphasis |
| 眼图中央有“双线”或“毛刺” | 反射或阻抗不连续 | 测量TDR,找阻抗突变点 |
| 眼图水平方向模糊,眼宽窄 | 抖动过大,尤其是确定性抖动 | 测抖动频谱,定位噪声源(电源或串扰) |
| 眼图两边不对称,一边高一边低 | 共模噪声或直流失调 | 检查差分信号是否真的等长?共模滤波器是否正常? |
| 眼图闭合,没有任何开口 | 链路严重失效,或未正确锁定时钟 | 确认DUT是否输出正常;检查示波器触发设置 |
嗯,这张表你打印出来贴在测试台前面,每次测完扫一眼,心里就有数了。
说到底,眼图测试是信号完整性的照妖镜。你只要把测试流程做规范,参数读懂,再结合一些工程直觉,大部分PCIe一致性失败都能快速定位。下一招,我们得彻底搞明白抖动分解——那是很多测试工程师的噩梦,但也是你真正解决问题的武器。