3. 眼图分析

眼图这东西,说白了就是高速信号的“心电图”。我第一次调10Gbps的链路时,示波器上那团模糊的“眼睛”让我琢磨了好几天。嗯,今天我们就把它彻底说透。

3.1 眼图是怎么“画”出来的?

眼图不是测一次信号就出来的。它是把成千上万个比特周期的波形,按位宽对齐,叠加在一起。你想想看,把这么多波形叠起来,中间就会露出一个类似眼睛的空白区域——这就是“眼图”名字的由来。

示波器做这个叠加的时候,是用时钟作为触发。每个比特周期的起始点对齐,然后不断刷新余辉。数字采样示波器更厉害,它能同时捕获几百万个UI(单位间隔),一次性算出统计分布。

核心形成机制:

  • 时间轴对齐:每个UI起始边缘对齐
  • 幅度轴叠加:所有采样点落在同一个时间-幅度空间
  • 概率密度显示:越亮的区域,信号出现的概率越高

我记得有一次,项目上的眼图边缘模糊不清,示波器明明设置了高余辉。后来发现,是时钟恢复环路带宽设得太宽,把抖动也当成时钟抖进去了。调低带宽后,眼睛瞬间张开。

3.2 眼图的核心参数

看眼图,我习惯先看三个参数:眼高、眼宽、抖动。这三样直接决定了信号质量。

3.2.1 眼高(Eye Height)

眼高就是眼睛垂直方向张开的幅度。它决定接收机能分辨“0”和“1”的余量。为什么?

  • 理想情况下,眼高是信号摆幅减去噪声峰峰值
  • 实际中,信号有ISI(码间干扰)、有反射、有噪声,眼高会被压扁
  • 眼高降到接收机灵敏度以下,就会误码

我一般按经验值:对于差分信号,眼高至少要达到摆幅的70%以上。低于50%,就得仔细排查通道损耗或端接问题了。

3.2.2 眼宽(Eye Width)

眼宽是眼睛水平方向张开的宽度,单位是UI或者皮秒。它反映的是信号在时间轴上的抖动容限。

经验之谈:眼宽 = 1 UI - 总抖动(TJ)。如果眼宽小于0.5 UI,接收机就很难可靠采样了。我在PCIE Gen4的项目中,眼宽正好卡在0.48UI左右,加了CTLE均衡后才拉到0.55UI以上。

3.2.3 抖动(Jitter)

抖动就是信号边沿在时间上的偏移。眼图上的抖动,直接表现为“眼睛关闭”的程度。我习惯把抖动分成两大类:

抖动类型 来源 特征
随机抖动(RJ) 热噪声、散弹噪声 高斯分布,无界
确定性抖动(DJ) ISI、串扰、PPM偏移 有界,有规律
周期抖动(PJ) 电源噪声、时钟耦合 周期性,尖峰谱线
数据相关抖动(DDJ) 通道衰减、阻抗不匹配 与码型相关

嗯,这里要注意:RJ和DJ在眼图上你分不开,因为眼图只显示总抖动的统计结果。要想分开它们,得用抖动分离算法——比如双狄拉克法(Dual-Dirac)。

避坑指南:我曾经用一个便宜的采样示波器去测25Gbps信号。示波器自己的抖动就很大,结果眼图根本张不开。并不是通道不行,而是测量工具引入了额外的抖动。你想想看,这就很坑。所以,测抖动前,先确认示波器本身的抖动基底(Jitter Floor)至少比信号抖动小一个数量级。

3.3 眼图与BER的关联

眼图好不好看,跟BER(误码率)有没有直接关系?有,但不是直接相等。眼图给人一种“直觉”:眼睛张得大,BER就低;眼睛闭合,BER就高。但严格来说,眼图只能给你一个概率意义上的判断。

3.3.1 从眼图估算BER

我们可以通过眼图上的概率密度分布,推算一个统计BER。具体做法是这样:

  1. 用示波器捕获大量UI,画出眼图的三维概率密度图
  2. 在采样点处(眼图中心垂线),取“0”和“1”的幅度概率分布
  3. 这两个分布的重叠面积,就是误码的概率

说白了,如果“0”的幅度分布和“1”的幅度分布完全不重叠,BER就是0。重叠越大,BER越高。这个重叠面积对应着Q因子——Q因子越大,BER越低。

经验公式:

BER ≈ 0.5 * erfc(Q / √2)
其中 Q = EyeHeight / (σ0 + σ1)
σ0 = "0"电平的标准差(噪声)
σ1 = "1"电平的标准差(噪声)

我记得有个项目,客户要求BER小于1e-12。用BERT(误码仪)直接测要跑一两个小时。我就用示波采眼图,算Q因子。当时算出的Q大概在7左右,对应BER约1e-12。实际用BERT跑的结果也基本吻合。

3.3.2 浴盆曲线(Bathtub Curve)

这是眼图跟BER关联的另一个经典工具。它在眼图时间轴上滑动采样点,计算每个时间位置的理论BER。画出来就是一个浴盆形状:

  • 浴盆底部(眼图中心):BER最低
  • 浴盆两侧(靠近边沿):BER飙升
  • 浴盆宽度:对应眼宽

使用浴盆曲线,你可以直接读出特定BER下的眼宽。例如,BER=1e-12时对应的眼宽是多少。很多高速标准就是用这个来定义接收机容限的。

3.4 眼图分析的常见陷阱

做眼图分析,有几个坑我劝你留意:

  • 采样深度不够:只采几千个UI就画眼图,统计结果不可靠。我一般会采至少1M个UI以上。
  • 忽略预加重/均衡影响:很多眼图是在发射端加了预加重之后看的。这时眼图张得很大,但实际通道损耗可能很严重。要同时看均衡前和均衡后的眼图。
  • 误以为眼图等于BER:眼图只能告诉你概率分布,不能精确告诉你误码数量。真要确认BER,还是得上BERT。

我习惯把眼图分析和抖动分解放在一起做。先用眼图看“有没有问题”,再用抖动分解看“什么问题”。两个工具配合,能帮你快速定位是通道损耗、电源噪声还是时钟的问题。

3.5 本章知识结构导图

为了方便梳理,我把眼图分析的整体逻辑画在图里。大家参考一下。

图3-1:眼图分析知识结构 眼图分析 形成机制 核心参数 BER关联 波形叠加 时钟触发 概率密度 眼高 眼宽 抖动(RJ/DJ) Q因子 → BER估算 浴盆曲线 → 眼宽 ⚠ 常见陷阱:采样深度不够 / 忽略均衡 / 误把眼图当BER

3.6 总结性思考

眼图是信号完整性的“第一条防线”。它直观、快速,能帮助你在实验室里第一时间判断链路状态。但是——别把它当成神。眼图不能替代精确的BER测量,不能替代抖动分解,也不能替代统计眼图(Statistical Eye)的仿真。

我个人的工作习惯是:调硬件先看眼图,确认没有明显异常后,再用BERT测BER,用仪器做抖动分解,最后用仿真工具做全链路的统计眼图分析。三个步骤互相印证,心里才踏实。