3. 眼图测试原理:眼图形成机制、眼图参数(眼高、眼宽、抖动)
我开始做高速信号测试那会儿,第一个接触的就是眼图。说白了,眼图就像信号质量的“心电图”——一看就懂,一测就知道链路行不行。这一章我们就把眼图怎么来的、里面的参数怎么看讲透。
眼图是怎么形成的
眼图不是一张静态图,它是数字信号在示波器上反复叠加的结果。你想,示波器把一串随机的 0 和 1 波形,用余辉模式不断刷新显示。因为信号有上升时间、下降时间、过冲、振铃,重复叠加后,这些波形“交织”在一起,就形成了一只只眼睛状的结构。
- 触发器锁定:示波器必须从被测信号中恢复出时钟,以它为基准触发。
- 余辉累积:成千上万个比特周期重叠,波形密度高的地方亮,低的地方暗。
- 对称性:0→1 和 1→0 的跳变路径会形成上下两条“眼线”。
我个人的经验:眼图好不好,先看触发是否稳定。如果时钟恢复抖动大,眼图就会模糊得像起雾的眼镜,你根本没法测准。
眼图参数:眼高、眼宽、抖动
每次做 compliance test,判断 pass/fail 最直接的三个指标就是眼高、眼宽和抖动。我给大家拆开讲,顺便聊聊实际测试中容易踩的坑。
1. 眼高 (Eye Height)
说白了,眼高就是眼图在垂直方向还能剩多少“安全空间”。它反映的是信号幅度裕量——接收端能否正确识别 0 和 1。单位一般是 mV 或百分比相对于信号摆幅。
| 属性 | 说明 |
|---|---|
| 定义 | 眼图中心处上下眼线之间的最短垂直距离 |
| 典型判据 | 如 PCIe Gen3 要求 ≥100 mV(根据规范) |
| 影响因素 | 幅度噪声、串扰、反射、损耗 |
重要:眼高测量时一定要确认参考电平(0% / 100%)设置正确。我曾经遇到一例,因为示波器自动设置把电平定偏了,眼高测出 95mV 被判 fail,实际重新设定后是 110mV——白白耽误半天时间。
2. 眼宽 (Eye Width)
眼宽表示接收端在时间轴上的采样裕量。单位常用 UI(Unit Interval)或 ps。比如一个 8 Gbps 信号 UI 是 125 ps,眼宽如果只有 50 ps,就意味着采样位置只要偏一点点就会出错。
| 属性 | 说明 |
|---|---|
| 定义 | 眼图中心水平方向两侧过零点之间的最小距离 |
| 典型判据 | PCIe Gen3 ≥ 0.4 UI,USB 3.0 ≥ 0.3 UI |
| 影响因素 | 数据相关抖动(DDJ)、周期抖动(PJ)、ISI |
注意:眼宽测量必须用足够的比特数(通常 1M 以上)。记得有一次我在现场偷懒只采了 100K 个比特,眼宽看起来很大,结果换了 10M 采样,眼宽直接缩了 30%。采样数量不够,抖动的统计分布就不稳定。
3. 抖动 (Jitter)
抖动是眼图测试的核心难点。它本质上是信号边沿位置相对于理想时钟的不确定性。抖动大了,眼宽就缩,眼高也可能受影响。我把抖动分解成两大类给大家讲清楚:
- 随机抖动(RJ):由热噪声等物理过程产生,服从高斯分布,没法彻底消除,只能预算分配。
- 确定性抖动(DJ):由电路缺陷或串扰引起,包含 DDJ、PJ、SJ 等,可以通过设计改善。
| 抖动类型 | 来源 | 特性 |
|---|---|---|
| RJ | 热噪声、散粒噪声 | 高斯分布,无界,通常用 RMS 表示 |
| DJ | ISI、串扰、电源噪声 | 有界,峰峰值描述 |
| 总抖动 TJ | RJ + DJ 在特定 BER 下的合成 | 常用 BER=1e-12 作为参考 |
我建议:做 compliance test 时,先看眼图整体轮廓是不是“睁开”的,再量眼高眼宽,最后分析抖动分离。如果眼图闭合得像一条线,那大概率抖动已经超标了,别急着改参数,先找抖动源。
实战测试要点
讲完原理,我总结几点在测试中会直接用到的经验:
- 触发方式:必须用时钟恢复(CDR)触发,不要用外部时钟。CDR 模拟了接收端真正看到的时钟边沿。
- 采集点数:至少 1M 个 UI,抖动分析最好 10M 以上。
- 均衡处理:CTLE/DFE 是否打开?很多规范要求在接收端均衡之后测眼图。
- 模板测试:先用标准模板(mask)做一次快速 pass/fail 筛选。
关键提醒:眼高、眼宽、抖动三者不是孤立的。曾经有一个项目,眼高和眼宽都满足 spec,但误码率一直降不下来。后来我把抖动分离出来,发现随机抖动很小,但存在一个 100 MHz 的周期性抖动——是板上的电源纹波耦合过来的。所以呀,这三个参数要综合看,尤其是抖动,一定要会分解。
嗯,这一节的内容到此为止。下次你拿到一份眼图测试报告,应该能一眼看出性能瓶颈在哪了。