第二章 眼图的基本概念与原理
2.1 眼图是怎么来的?——形成机理
眼图这名字,听着挺形象——就是波形叠加在一起,看起来像一只睁开的眼睛。我刚开始接触SerDes时,对着示波器看了半天,心想这玩意儿哪像眼睛啊?直到我看懂了它的形成过程。
说白了,眼图就是示波器把很多比特周期的波形,按照时钟的节拍重叠在一起。发送端不断吐出0101的码流,接收端示波器触发在时钟边沿,一次一次把波形刷上去。时间长了,屏幕上就会留下一个发光的、有眼皮的图案。那个“眼睛”张得越大,信号越好。
这里面有几个关键点:
- 时钟恢复:示波器必须用恢复出的时钟触发,不然每个bit位置对不准,眼图就糊了。
- 随机数据:用PRBS(伪随机码)测试,才能覆盖各种跳变模式。
- 足够多的比特:我一般至少采集10万个UI(单位间隔),否则眼图统计意义不够。
有一次我在实验室调一块28Gbps的板子,眼图死活不张开。折腾半天发现是示波器的触发源选错了,用了外部参考时钟而不是恢复时钟。换过来以后,眼睛一下子就睁开了。嗯,这种低级错误犯一次就够了。
来看一张我画的流程,帮大家理解眼图是怎么叠加出来的:
2.2 定性观察:一眼看出信号好坏
把眼图调出来以后,怎么快速判断信号质量?我个人习惯先看三样东西:
- 眼睛张开幅度——垂直于水平方向的开口高度。越高,信号噪声裕量越大。
- 眼睛宽度——水平方向开口的宽度。越宽,时钟采样裕量越好。
- 眼皮的“毛刺”——眼图上下边缘的模糊程度。毛刺越重,抖动越厉害。
你想想看,如果一个眼图像切开的橘子一样饱满,边缘清晰锐利,那信号基本没问题。但如果眼图像一团乱麻,中间都快闭上了,那肯定有问题。
曾经我遇到一个项目,12.5Gbps链路在常温下眼图很好,一到高温测试眼图就收窄。后来查出是某颗PLL芯片温度特性不好,导致时钟抖动增大。所以做眼图定性观察时,一定要看全温范围的趋势。
另外,眼图上下眼线不对称,可能是占空比失真(DCD)——发送端的高低电平持续时间不一致。左右边缘不对称,则往往是码间干扰(ISI)在作怪。
2.3 定量分析:用数字说话
光靠眼睛看不够,必须用数字量化。我常用的定量指标有下面这些:
| 指标 | 定义 | 典型合格值(10Gbps以上) |
|---|---|---|
| 眼高 | 眼图中央垂直开口的电压差 | > 200 mV |
| 眼宽 | 眼图中央水平开口的时间宽度 | > 0.3 UI |
| 抖动(TJ) | 总抖动,通常用峰峰值 | < 0.2 UI |
| 占空比失真 | 高电平宽度与低电平宽度之差 | < 5% |
| 垂直噪声 | 眼图中线附近电压波动标准差 | < 10 mV |
我常用的方法是:先用示波器的自动眼图测量功能测出眼高、眼宽、抖动,再加载芯片规格的掩码(mask)去比。只要眼图外沿不碰掩码区域,就算通过。碰到掩码?对不起,设计要回炉。
抖动分析可以拆成随机抖动(RJ)和确定性抖动(DJ)。RJ服从高斯分布,DJ有固定幅度。用双狄拉克法可以分离它们。我在实际项目里,经常发现RJ很小(几ps RMS),但DJ因为电源噪声或串扰变得很大。这时候光做眼图不够,得去查电源完整性或串扰耦合路径。
最后提醒一句:眼图质量评估不能只看一种条件。同一个链路,在常温、高温、低温、不同码型下眼图可能天差地别。我习惯在最差角(最慢工艺、最高温度、最低电压)和最差码型(如长连0后跳1)下测量眼图——这才是真正的生死线。