眼图关键参数:看懂信号质量的六个维度
做 RGMII 调试这些年,我最看重的就是眼图参数。说白了,眼图就是信号的“心电图”——好不好,一眼便知。但很多人只盯着“张没张开”这个表面现象,忽略了背后那六个关键参数。
我个人习惯把这六个参数分成两类:幅度类和时序类。幅度类告诉你信号有多强,时序类告诉你信号有多稳。缺一不可。
核心原则:眼图参数必须综合看,不能单指标论英雄。我曾经见过一个项目,眼高漂亮得很,但抖动大得离谱,结果跑起来就是随机出错。
4.1 眼高(Eye Height)—— 噪声容限的标尺
眼高,指的是眼图垂直方向上的开口高度。它反映的是接收端能区分“0”和“1”的余量。
- 定义:眼图中央垂直方向上,顶部和底部两条轨迹之间的最小距离。
- 单位:毫伏(mV)或伏(V)。
- RGMII 典型要求:通常要求 ≥ 200 mV,建议留 300 mV 以上余量。
为什么会这样?因为芯片内部的比较器有阈值偏差,通道还有噪声。眼高不够,信号就可能被噪声“淹没”。
我的经验:测眼高时注意两点——一是去嵌测试夹具的损耗,二是不要只看单次捕获的结果。平均 1000 次以上的眼图才算数。
我记得有次调试一块 4 层板,眼高只有 180 mV,看似勉强达标。但我一测温度,才 25°C。拉到 85°C 再测,直接掉到 120 mV。嗯,这就是典型的热噪声叠加效应。
4.2 眼宽(Eye Width)—— 数据有效窗口
眼宽,描述的是眼图水平方向上的开口宽度。说白了,就是你有多少时间余量来“抓住”这个数据。
| 参数 | 定义 | RGMII 参考值 |
|---|---|---|
| 眼宽 | 眼图交叉点之间的水平距离 | ≥ UI(单位间隔)的 60% |
| RGMII 的 UI | DDR 模式下为 Tcyc/2 | 约 1.25 ns @ 400 Mbps |
| 有效窗口 | 眼宽内可可靠采样的区间 | 建议 ≥ 700 ps |
你想想看,RGMII 是双沿采样,每个沿都要在正确的时间窗口内到达。眼宽窄了,就意味着时序容限变小,任何一点抖动都会导致采样错误。
4.3 眼幅(Eye Amplitude)—— 逻辑摆幅的真实值
很多人把眼高和眼幅搞混,我来说明白:眼幅是“顶”和“底”之间的电压差,眼高是考虑噪声之后的可用开口。
眼幅的计算很简单:
眼幅 = V_top(信号高电平峰值密度中心) - V_base(信号低电平基线密度中心)
对于 RGMII 来说,标准幅度通常是 1.8V 或 3.3V。但实际上由于反射、损耗和驱动能力,你测到的眼幅往往低于标称值。
注意:如果眼幅 < 1.0V(对于 1.8V 逻辑),基本可以判定通道存在严重问题,比如阻抗不匹配或端接错误。这种情况我劝你别纠结眼图模板了,先修通道。
4.4 抖动(Jitter)—— 时序的“隐形杀手”
抖动是时序参数里我最头疼的一个。它让信号边沿的位置不确定,直接侵蚀眼宽。
抖动分成两大类:
- 随机抖动(RJ):热噪声引起,高斯分布,无法完全消除。
- 确定性抖动(DJ):由串扰、反射、EMI 等引起,有规律可循。
在眼图上,抖动表现为交叉点的“毛边”。交叉点越模糊,抖动越大。
避坑指南:我曾经用带宽不够的示波器去测抖动,结果测出来的数值只有实际的一半。后来才意识到,示波器带宽至少要是信号最高频率的 3 倍。对于 RGMII 的 200 MHz 时钟,建议用 1 GHz 以上带宽。
对了,RGMII 模板通常要求总抖动(Tj)不超过 0.2 UI。换算成时间,就是约 250 ps。
4.5 占空比失真(Duty Cycle Distortion)—— 对称性出问题了
占空比失真,简称 DCD,指时钟或数据信号的高电平时间和低电平时间不相等。
对于 RGMII 的双沿采样来说,DCD 是致命的。为什么?因为接收端靠时钟的两个沿来锁存数据,如果时钟的占空比不是 50/50,那么两个数据沿的建立保持窗口就不对称了。
| DCD 大小 | 对 RGMII 的影响 |
|---|---|
| < 5% | 可接受,余量充足 |
| 5% - 10% | 需要仔细检查时序余量 |
| > 10% | 大概率会出问题,必须修 |
我个人习惯在示波器上打开“直方图”功能,直接看占空比的统计分布。如果均值偏离 50% 超过 3%,我就会去查驱动器的对称性。
4.6 上升/下降时间(Rise/Fall Time)—— 边沿的斜率密码
上升时间和下降时间,衡量的是信号从 20% 到 80%(或 10% 到 90%)的跳变速度。
这里的坑在于:
- 太快:会产生过冲和振铃,引发 EMI 和串扰问题。
- 太慢:信号在转换区停留时间过长,增加抖动和码间干扰。
对于 RGMII,我一般建议上升/下降时间控制在 0.5 ns 到 1.5 ns 之间。
一个真实案例:有个项目眼图怎么都关不上,查了半天发现是 FPGA 的 I/O 驱动强度设置得太大了,导致上升时间只有 0.3 ns。改小驱动强度后,波形圆润了,眼图也开了。
测上升/下降时间时,记得用示波器的“测量”功能,而不是用光标手动卡。手动卡的结果往往偏小,看着好看,实际埋雷。
4.7 六参数关系图谱
下面这张图梳理了六个参数之间的相互影响关系,我把它放在这里方便你对照。
记住这个规律:抖动和上升/下降时间属于“根源参数”,它们影响眼宽和 DCD。而眼宽和眼高才是“结果参数”,最终决定你能不能通过模板测试。我个人调试时,会先修上升/下降时间和抖动,这两样搞定后,其他参数自然就达标了。