3、眼图测试基础:眼图原理、眼图参数(眼高、眼宽、抖动)、眼图模板与合格判断
做SerDes接收端测试,眼图是绕不开的第一个坎。说实话,我刚入行那会儿,看着示波器上那一堆像蚯蚓一样缠绕的线条,完全不懂这能看出什么门道。后来带我的老师傅一句话点醒了我:眼图就是信号质量的X光片。你想想,几百Gbps的信号在PCB上飞,你拿万用表去量直流电压,那能看出啥问题?眼图把这些高速跳变的信息,用叠加的方式全摊在你面前。
3.1 眼图原理:为什么一眼就能看出好坏?
眼图的形成原理其实很朴素。把一段很长的数字信号,按照一个固定宽度切成无数小段,然后把这些小段重叠在一起显示。这个宽度,我习惯直接用UI(单位间隔)来设,也就是一个比特的时长。
如果是理想的信号,所有“1”的跳变和“0”的跳变都叠在完全相同的轨迹上,最后就会形成一个非常干净、张开的“眼睛”。但现实中的信号有噪声、有抖动、有ISI(码间干扰),每次跳变的轨迹都会有细微差别。这些差别叠加多了,眼图就会变模糊、变窄、甚至闭合。
我个人判断一个眼图“健康不健康”,会先看两个东西:一是眼睛张开得大不大,二是眼图内部有没有“雾”。那种又大又干净的眼,基本可以判断链路没什么大问题。
3.2 眼图关键参数:眼高、眼宽、抖动
光靠肉眼模棱两可说“这眼不错”不行,测试讲究数据说话。衡量眼图质量,我主要看三个参数:眼高、眼宽、抖动。这三兄弟,任何一个出问题,接收端都受不了。
| 参数 | 定义 | 常见问题(我踩过的坑) |
|---|---|---|
| 眼高 | 眼图垂直方向上最大张开的高度。反映电压裕量。 | 眼高不够,多半是信号幅度损失或噪声太大。我曾经遇到一个案例,PCB走线长了10厘米,眼高直接从300mV掉到80mV,接收端完全误码。 |
| 眼宽 | 眼图水平方向上最大张开的宽度。反映时序裕量。 | 眼宽窄,说明时钟抖动或数据抖动(DJ)大。我建议眼宽至少要有0.6个UI,否则采样点位置一偏就出错。 |
| 抖动 | 信号过零点与理想位置的偏离。分为随机抖动(RJ)和确定抖动(DJ)。 | RJ是大自然的鬼斧神工,几乎消不掉;DJ才是你优化的重点,PI的噪声、电源纹波都算。 |
为什么会这样?因为SerDes接收端判决,本质上就是在垂直方向比电压、在水平方向比时刻。眼高决定了你能抵抗多大的噪声;眼宽决定了你能容忍多大的时钟偏斜。说白了,眼高是电压容限,眼宽是时间容限。
3.3 眼图模板与合格判断
你测出来的眼高800mV,到底算不算合格?这不能拍脑袋,得跟眼图模板比。眼图模板,也叫Mask,是标准组织(如IEEE、OIF)或芯片厂商提供的“禁区”。模板通常由三个区域组成:中央区域(一般呈菱形或六边形)、顶部区域、底部区域。凡是落入这些区域的波形,都被判定为不合格。
嗯,这里要注意:模板测试不是看你眼图是否好看,而是看信号是否“碰线”。只要有一根波形穿进了模板的红色禁区,测试就直接报FAIL。
3.4 测试流程与操作要点
你知道了原理和参数,但示波器设置不对,测出来的眼图可能根本是错的。我总结了一个标准流程,供你参考:
- 连接链路: 确保时钟恢复(CDR)环路锁定。很多示波器有内置CDR功能,用外部时钟触发更干净。
- 设置UI宽度: 直接输入数据速率,比如10.3125Gbps,设好UI时长。
- 累加次数: 我一般设置10000个UI以上累加。累加少了,抖动统计不充分。
- 加载模板: 根据协议选择对应的Mask文件(.msk)。没有协议限制的,可以自定义模板。
- 读取参数: 记录眼高、眼宽、总抖动(Tj)、确定性抖动(Dj)和随机抖动(Rj)。
- 判断通过/失败: 看Mask Hit计数是否为0,以及眼高度/宽度是否大于规格下限。
为了让你更清晰地理解这些知识的层级关系,我画了一张图,把眼图原理、参数和模板判断串在一起:
你看上面这张图,从左到右依次是原理、参数、模板和最终判断。它的逻辑就是:
- 第一步: 眼图是信号每次跳变的叠加,它的形状定性地反映噪声和抖动。
- 第二步: 把定性变成定量,测出眼高、眼宽和抖动(RJ/DJ/Tj)。
- 第三步: 把定量结果放进协议模板里做Pass/Fail判决。
我建议在测试报告里除了给出Pass/Fail结论,还要附上眼高、眼宽和Tj的数值。如果后续定位问题,这些原始数据比一个“Pass”有营养得多。举个我实际碰到的情况:有个项目眼图模板Pass了,但眼高只有180mV,后来系统温漂后直接死机。所以我的经验是,不仅要确保不碰模板,还要检查参数是不是在合理范围内。