眼图的基本参数:眼高、眼宽、抖动、交叉点、上升/下降时间

眼图不是一张好看的图片,它是一张“体检报告”。你看着屏幕上的波形,其实每个参数都在告诉你链路的真实状态。我做调试的头几年,常常只看眼图是否睁开就拍板通过,结果量产时出了问题。后来才明白——眼高、眼宽、抖动、交叉点、上升/下降时间,这五个参数缺一不可。

这一节,我带你把每个参数拆开看。你理解了它们,下次抓完眼图,就能直接判断链路是哪里在“生病”。

眼高(Eye Height)——链路的电压余量

眼高说白了就是信号在接收端还能剩下多少电压摆幅。单位通常是mV。眼高越大,抗噪声能力越强。

关键判断:眼高一般要求不小于接收器输入灵敏度加上一定的余量,比如对于LVDS标准(350mV摆幅),眼高低于200mV就要小心了。

我在项目中遇到过一块FPGA与摄像头之间的LVDS链路,眼图看起来是睁开的,但眼高只有180mV。换了两款线缆都一样,后来发现是远端端接电阻焊错了位置。那时我才意识到,眼高是“电压方向上的安全距离”——距离越小,噪声一碰就翻车。

实际调试时我习惯用三个点快速评估:

  • 测量眼图中央位置的最大眼高(通常最稳定)
  • 看眼高随数据码型的变化(长0/长1会压缩眼高)
  • 算一下与接收器阈值的差值,留出30%以上余量

眼宽(Eye Width)——时间方向的开口大小

眼宽是指眼图在水平方向上睁开的宽度,单位是ps或UI(单位间隔)。一个UI对应一个比特周期。眼宽告诉你——抖动、码间干扰和上升/下降时间有没有把有效采样窗口吃掉。

有一次调试一款医疗影像数据线,眼图在遇到某些特定码型时眼宽突然缩小了一半,导致随机误码。抓了很久才发现,是PCB过孔stub太长,形成了谐振。那一次的经验让我养成了“看眼宽必须结合码型”的习惯。

我的小技巧:眼宽测量时,记得把光标放在眼图水平方向的20%和80%交叉点之间。太靠近边缘会被噪声干扰,算出的眼宽不准。

抖动(Jitter)——信号过零点的时间偏离

抖动是信号跳变沿相对于理想时序的偏移量,分为随机抖动(RJ)和确定性抖动(DJ)。总抖动就是二者的组合。

嗯,这里经常有人搞混。抖动不是噪声,噪声改变幅度,抖动改变过零点的位置。你可以这样想:噪声是在垂直方向“推”信号,抖动是在水平方向“拉”信号。

抖动类型 来源 特征 怎么削
随机抖动(RJ) 热噪声、闪烁噪声 高斯分布,无界 很难消除,靠低噪设计
确定性抖动(DJ) 串扰、反射、EMI 有界,有特定模式 可以定位并改善
总抖动(TJ) RJ + DJ 叠加 眼图水平闭合度 综合优化

我曾经遇到一个案例,抖动测量值很大,但眼图看起来还挺顺。后来用示波器的抖动分离功能发现,主要是周期性抖动(PJ)在作怪,锁定在某个开关电源的开关频率上。加一个磁珠就解决了。你不用抖动分离功能,永远找不到根因。

交叉点(Crossing Point)——差分信号的对齐度

交叉点指的是差分信号正负端过零点在眼图上的相对位置。对于理想LVDS,交叉点应该位于50%幅度处。如果交叉点偏移,说明差分对的偏置或共模电平出了问题,或者上升/下降时间不匹配。

交叉点偏移会导致接收器采样判断出错——明明发的是0,因为交叉点歪了,接收端可能误判成1。

注意:交叉点偏移通常不太容易被发现,很多工程师只看眼高眼宽,忽略了交叉点的检查。我曾因为它浪费了两天时间——一块电路板在低温下频繁误码,最后发现是某颗耦合电容在低温下容值变化,导致交叉点偏移了15%。

你可以这样快速检查:在眼图上把光标放在正负波形的交叉位置,看它相对于中心水平线的偏离比例。一般要求不超过5%~10%。

上升/下降时间(Rise/Fall Time)——信号边缘的陡峭度

上升时间和下降时间一般定义为信号从20%到80%幅度所需的时间(也有用10%~90%的)。这两个参数直接影响EMI、串扰和码间干扰。

上升太快,高频分量大,串扰和EMI就严重;上升太慢,眼宽被吃掉,时序裕量变小。你需要找平衡。

我自己的经验是一个经验法则:对于LVDS,上升/下降时间一般取0.5~1倍的位周期。比如2.5 Gbps的链路(位周期400 ps),上升时间控制在200~400 ps之间比较合理。

有一次调试一块背板,上升时间只有100 ps,串扰大得吓人。换了更慢的驱动器之后,眼图反而变得更开了——这就是“过犹不及”的例子。

调试时记住:

  • 上升时间太快 → 检查源端是否加过串联电阻
  • 上升时间太慢 → 检查PCB走线损耗或驱动器驱动能力
  • 上升时间与下降时间不匹配 → 检查差分对P/N的负载对称性

一张图看懂五个参数的关系

我把这五个参数画在一张眼图结构示意图上。你盯着看几分钟,就能明白它们各自“管辖”的范围。

眼图五大参数结构示意图 眼高 (幅度余量) 眼宽 (时间余量) 抖动(过零点偏离) 交叉点(50%对齐) 上升/ 下降时间 颜色图例 眼高 眼宽 抖动 交叉点 上升/下降

一个小总结

五个参数不是孤立的。比如上升时间太慢会吃掉眼宽,抖动大会让眼高看起来也变小(因为采样点位置被抖动拉偏了)。你调试的时候别只盯着一个参数看——要把它们当做一个整体来解读。

我记得有一次,整个团队围着一个眼图吵了半天。一个人说眼高够大,另一个人说眼宽太小,结果我们拿抖动分离一测,才发现是确定性抖动把水平方向压死了。调整了PCB走线长度匹配后,眼宽恢复了,眼高也顺带变好了。这就是联动的例子。

调试清单(我每次必看):

  1. 眼高:实测值 vs 接收器灵敏度 × 1.3
  2. 眼宽:实测值 vs 0.8 UI(有余量)
  3. 总抖动:不超过 0.2 UI(经验值)
  4. 交叉点偏移:控制在 ±5% 以内
  5. 上升/下降时间:在 0.5~1 倍位周期之间