2. 眼图的基本概念与参数
2.1 眼图是怎么“画”出来的?
很多人第一次看到眼图,会觉得它像一只睁开的眼睛。其实说白了,眼图就是把一串数字信号的每一位波形,按比特周期叠在一起,然后用余晖或亮度显示出来的结果。你想想看,如果信号质量好,这些波形会完美地重合,形成一只清晰的“眼睛”;如果信号有噪声、抖动、反射,这只眼睛就会眯起来,甚至闭眼。
我在项目中调试过一个DDR3的板子,第一次上示波器看到眼图几乎完全闭合,当时心里一凉。后来发现是PCB走线阻抗不连续造成的反射,调整了端接电阻后,眼睛才慢慢睁开。嗯,眼图真的是检验信号质量的“照妖镜”。
2.2 眼图形成原理——以RGMII为例
RGMII使用DDR(双数据速率)采样,时钟沿在数据中央翻转。我们抓取TX_CLK和TXD[3:0]信号,用时钟的上升沿和下降沿分别采样数据。在示波器上设置“余晖”模式,触发在时钟边沿,然后让数据波形持续累积。
具体来说:
- 示波器把每个UI(Unit Interval,单位间隔)的波形切出来。
- 把这些波形水平对齐、垂直重叠。
- 不同比特的跳变沿会形成“眼图边界”,稳定电平区域形成“眼高”。
我习惯用示波器采集至少10000个UI,这样抖动和噪声的统计分布才会稳定。曾经遇到一个案例,只采了1000个UI,眼图看起来很好,但量产时偶尔出现误码——其实就是采样点数不够,把低概率事件漏掉了。
2.3 眼图关键参数详解
下面这几个参数,是我在调试RGMII延时校准时每天都在看的。你可以对照着示波器屏幕上的眼图,一个一个去理解。
| 参数 | 定义 | 我的实战经验 |
|---|---|---|
| 眼高(Eye Height) | 眼图垂直开口的幅度,单位mV。高低电平分界线之间的最小距离。 | RGMII要求眼高≥200mV(3.3V电平)。低于这个值,接收器很难正确判0/1。 |
| 眼宽(Eye Width) | 眼图水平开口的宽度,单位ps。数据采样有效窗口的时间长度。 | 我曾经把RGMII的时钟相位调偏了0.5ns,眼宽直接缩了30%,幸亏用眼图定位到了。 |
| 抖动(Jitter) | 信号跳变沿在时间轴上的偏移,分随机抖动(RJ)和确定性抖动(DJ)。 | RJ来自热噪声,DJ来自串扰或电源噪声。我习惯用直方图看抖动分布。 |
| 过冲(Overshoot) | 信号电平超过稳态高/低电平的幅度,单位mV或%。 | 过冲超过20%就可能击穿芯片IO。我在RGMII线上加过串联电阻来抑制过冲。 |
| 占空比失真(DCD) | 高电平宽度与低电平宽度不一致,导致眼图中心偏移。 | DCD会让眼图左右不对称,RGMII对时钟占空比要求±5%以内。 |
2.3.1 眼高——决定噪声容限
眼高直接决定了接收器能不能正确分辨0和1。举个例子:如果发送端输出摆幅是3.3V,但经过传输损耗和反射后,眼高掉到了150mV,那接收器内部的比较器就可能把噪声当成有效信号。我一般留20%的裕量,也就是目标眼高≥240mV。
2.3.2 眼宽——决定采样裕量
眼宽就是接收器可以安全采样的时间窗口。RGMII的UI是2ns(500Mbps DDR),理论上眼宽应该接近2ns。但实际总有抖动——时钟抖动、数据抖动、T skew(时钟与数据间的传输时延差)。我在做延时校准时,会用示波器测眼宽,然后反推需要的TAP值(延时步进)。
2.3.3 抖动——眼图的“时间杀手”
抖动分成两类:
- 随机抖动(RJ):服从高斯分布,标准偏差σ,峰值-峰值≈14σ(误码率10^-12时)。
- 确定性抖动(DJ):有界,来自串扰、电源噪声、码间干扰(ISI)。
总抖动 TJ = DJ + 14×RJ(常用双狄拉克模型估算)。我在项目里遇到过RJ很大,查了三天发现是DC-DC噪声耦合到PLL的VCO,后来换了一个低纹波的LDO解决了。
2.3.4 过冲与下冲
过冲是信号跳变时瞬间超过VOH的电平。过冲太大会加速芯片老化,甚至当场挂掉。我记得有一次测试RGMII接口,波形图上看过冲已经达到4.0V(3.3V系统),直接把FPGA的IO烧了。后来我们在驱动端串联了22Ω电阻,过冲降到了10%以内。
2.4 眼图参数之间的关联
眼高、眼宽、抖动、过冲不是孤立存在的。它们互相影响:
- 抖动越大 → 眼宽越小 → 采样裕量降低 → 可能误码。
- 过冲大 → 振铃可能反射回来 → 造成后沿抖动 → 进一步缩小眼宽。
- 电源噪声 → 同时影响眼高和抖动 → 眼图整体“变胖”或“变矮”。
所以我在做RGMII延时校准时,会先看眼宽够不够,再看眼高,最后检查过冲和抖动。如果眼宽不够,先调整时钟相位;如果眼高不足,排查驱动能力和阻抗匹配;如果抖动大,查电源和参考时钟。
2.5 总结一下这几个参数的实际用法
做RGMII延时校准时,我一般遵循这个步骤:
- 测眼宽:确保眼宽 > 1.5ns(UI的75%),否则采样窗口太小。
- 测眼高:确保眼高 > 200mV,否则容易被噪声淹没。
- 测抖动峰值(TJ):目标 TJ < 0.3UI(即600ps),同时RJ < 50ps。
- 看过冲:过冲 < 15% Vpk,下冲 < 10% Vpk。
好了,这节的重点就是这些。眼图参数是RGMII延时校准的“体检报告”,每个参数都对应一个具体的物理问题。下一部分我们就要聊怎么用这些参数来指导实际的延时TAP值调整了。