1. PHY眼图概述
先聊聊什么是眼图。说白了,眼图就是把一串数字信号的波形,在示波器上反复叠加之后显示出来的图案。因为形状像人的眼睛,所以就叫“眼图”。
你可能要问:为什么要把波形叠在一起看?直接看单个脉冲不就行了?嗯,问题就在这儿。高速信号里,单个脉冲说明不了问题。码间干扰、抖动、噪声,这些家伙都是随机出现的。你只有看几百万个bit的统计效果,才能真正掌握信号质量。
眼图是怎么生成的?
拿示波器来说,把时钟恢复出来的采样时钟作为触发源,然后无限次地捕获波形。每个bit的波形都被强制对齐到同一个时间窗口内。这样一来,所有波形的共同轨迹就形成了“眼”的轮廓,随机游走的轨迹则填满了“眼”的内部。
- 采样窗口: 通常是1个UI(Unit Interval,一个比特宽度)
- 叠加次数: 至少要百万次以上,统计才有意义
- 触发源: 用CDR恢复出的时钟,而不是外部参考时钟
我个人习惯,在调试阶段会把叠加次数设得更大一些。有一次发现一个板子眼图看着挺好,结果跑了十亿次采样,眼睛突然闭了一小下——原来是个极低概率的抖动事件。这种坑,不多跑几遍根本抓不到。
为什么高速串行链路这么看重眼图?
你想想看,现在动不动就跑10Gbps、25Gbps,甚至112Gbps。一个UI才几十皮秒甚至十几皮秒。信号在PCB上走几英寸,反射、串扰、介质损耗全来了。这时候如果不看眼图,你根本不知道信号到底还能不能正确采样。
我见过不少工程师,仿真跑得漂漂亮亮,结果板子打样回来一测,眼图完全闭了。后来查出来是过孔残桩没处理好。这种事,眼图一放上去就原形毕露。
具体来说,眼图的重要性体现在四个方面:
| 维度 | 眼图对应的指标 | 为什么重要 |
|---|---|---|
| 数据完整性 | 眼高、眼宽 | 决定了接收器能否正确区分0和1 |
| 时序余量 | 眼宽、上升/下降时间 | 决定时钟采样的可靠窗口大小 |
| 噪音与干扰 | 眼高抖动、眼皮厚度 | 反映出串扰、电源噪声等干扰的严重程度 |
| 标准合规性 | 眼图掩码(Mask)测试 | 所有高速协议(PCIe、USB、Ethernet、SATA等)都用眼图掩码作为物理层合格判据 |
核心观点: 眼图是串行链路物理层健康的“单窗口总览”。一个眼图,包含了幅度噪声、时间抖动、码间干扰的全部统计信息。这是任何一个单次测量都做不到的。
眼图到底能告诉我们什么?
一张眼图摆出来,有经验的工程师扫一眼就能判断个七七八八。我来拆解一下怎么看:
- 眼睛睁开得够不够大? —— 眼高决定了电压裕量。PCIe Gen4要求眼高至少175mV(在特定BER下),小了就危险。
- 眼睛横向宽度够不够? —— 眼宽决定了时序裕量。如果眼宽不到0.5个UI,CDR就快锁不住了。
- 眼图的“眼皮”厚不厚? —— 眼皮厚表示噪声大。上升沿和下降沿的交叠区域越粗,说明抖动越严重。
- 交叉点在哪里? —— 交叉点偏离50%说明有占空比失真(DCD),通常是由时钟占空比误差或驱动器不对称引起的。
- 眼图上下是否对称? —— 不对称可能意味着驱动器的共模电压不对,或者有直流偏移。
眼图测量的几个关键注意事项
眼图不是放上示波器就能测准的。经验告诉我,以下三点最容易出问题:
- 时钟恢复设置 —— CDR的环路带宽必须与被测信号的协议要求一致。带宽设宽了,抖动会被跟踪掉,眼图看起来比实际好;设窄了,抖动会被放大,眼图看起来比实际差。
- 示波器带宽 —— 至少要大于被测信号基频的3倍。比如10Gbps信号,基频5GHz,示波器带宽至少要15GHz。带宽不够,眼图的高频分量被滤掉,看起来会更“好看”但失真了。
- 探头和电缆 —— 这几个无源器件是最大的噪声源和损耗源。我自己习惯每次测前都做一次去嵌处理,把探头和电缆的频率响应校准掉。
说白了,眼图验证不是“把波形拉出来看一眼”那么简单。它是一个系统性的分析过程。从激励码型的选择,到采样次数的设定,到CDR参数的配置,再到最终的mask判据比对,每一步都影响结论。
这一章算是给整个课程搭了个架子。后面我们会深入学习眼图的每个参数含义、抖动分离方法、掩码测试标准,以及实际项目中的debug思路。内容不少,但每部分都有它的实际用处。