3. 眼图关键参数解读:眼高、眼宽、抖动、占空比失真与信噪比

眼图测出来了,波形也看到了。然后呢?

说实话,很多工程师刚接触眼图时,最容易犯的毛病就是「看图说话」——觉得眼睛张得挺大,波形挺干净,就拍板说信号没问题。我早年也吃过这个亏,有一次在实验室盯着一个 10Gbps 的串行链路看了半天,眼图形状挺饱满,结果量产时误码率死活压不下去。后来一查,是眼高虚高,但眼宽已经被抖动吃掉了不少。

所以这一章,咱们把眼图里最关键的五个参数掰开揉碎了讲。你如果能把这五个参数吃透,信号质量在你面前基本就是透明的。

3.1 眼高(Eye Height)——信号摆幅的「净空」

眼高,说白了就是信号在接收端还能剩下多少电压余量。它直接决定了接收器能不能正确区分 0 和 1。

定义:眼图在垂直方向上,从逻辑「1」的底部到逻辑「0」的顶部之间的最小电压差。单位通常是 mV。

我在项目中遇到过一块板卡,眼高只有 80mV,接收端芯片的灵敏度是 100mV。结果就是常温下勉强能跑,温度一高就丢包。后来我们在发送端把预加重调大了两档,眼高提到 150mV,问题才解决。

眼高测量要点:

  • 取最小值:眼高不是看中间最宽的地方,而是看整个眼图垂直开口最窄的位置。通常取眼图中央 20%~80% 的区间。
  • 区分差分与单端:差分信号的眼高是两倍的单端摆幅。比如单端 500mV,差分眼高就是 1000mV。
  • 与 Vref 的关系:眼高测量依赖于参考电压(Vref)的选取。不同标准(如 PCIe、USB、SATA)对 Vref 的定义不同,别搞混。

我的习惯:眼高至少留出 20% 的裕量。比如接收端灵敏度是 100mV,那眼高最好做到 120mV 以上。别卡着极限值设计,那是给自己挖坑。

3.2 眼宽(Eye Width)——时序的「安全窗口」

眼宽衡量的是信号在时间轴上的稳定区间。它告诉你:接收器在什么时间点采样最安全。

你想想看,如果眼宽只有 0.2 个 UI(Unit Interval,单位间隔),那采样时钟稍微抖一下,数据就采错了。我见过最夸张的一个案例,眼宽被串扰压缩到只剩 0.15 UI,接收端的 CDR(时钟数据恢复)根本锁不住,链路直接断连。

眼宽测量要点:

  • 交叉点测量:眼宽通常取眼图左右两个交叉点之间的水平距离。交叉点就是波形上升沿和下降沿交汇的地方。
  • 与 UI 的关系:理想情况下眼宽等于 1 UI。实际中因为抖动和码间干扰,眼宽会缩小。PCIe Gen3 要求眼宽 ≥ 0.4 UI,你感受一下这个余量有多紧张。
  • 浴盆曲线:眼宽的极限值可以通过浴盆曲线(Bathtub Curve)来推算。这个后面章节会细讲,先记住:浴盆曲线的「盆底」越宽,眼宽越大。
参数 理想值 典型合格值 危险值
眼高 满摆幅 ≥ 接收端灵敏度 × 1.2 < 接收端灵敏度
眼宽 1 UI ≥ 0.4 UI(高速串行) < 0.2 UI

3.3 抖动(Jitter)——信号时序的「幽灵」

抖动是信号质量的头号杀手。它不像噪声那样直观,但破坏力极大。

我习惯把抖动分成两大类:随机抖动(RJ)和确定性抖动(DJ)。RJ 是热噪声、散粒噪声这些物理效应引起的,服从高斯分布,没法彻底消除。DJ 则有明确的来源,比如串扰、电源噪声、码间干扰,是可以优化和控制的。

抖动的常见来源:

  • 随机抖动(RJ):热噪声、1/f 噪声、散粒噪声。特点是均值为 0,RMS 值随带宽增加而增大。
  • 确定性抖动(DJ):
    • 码间干扰(ISI):信道带宽不足,前一个 bit 拖尾影响到后一个 bit。我在调试 25Gbps 背板时,ISI 贡献了总抖动的 60% 以上。
    • 占空比失真(DCD):上升沿和下降沿不对称,导致脉冲宽度变化。这个下面会单独讲。
    • 周期性抖动(PJ):电源纹波、时钟耦合引起的固定频率抖动。
    • 串扰抖动:相邻信号线之间的电磁耦合。

我曾经踩过的坑:有一次测抖动,示波器显示总抖动(TJ)只有 0.3 UI,我觉得没问题就放行了。结果系统联调时误码率超标。后来用抖动分解功能一查,RJ 确实不大,但 DJ 里的 ISI 占了 0.25 UI,而且有低频成分,CDR 根本跟踪不上。从那以后,我养成了习惯:不光看总抖动,还要看抖动分解后的成分。

抖动的测量指标:

  • 峰峰值抖动(Pk-Pk Jitter):所有抖动样本的最大偏移量。容易受异常值影响,但直观。
  • RMS 抖动:抖动的均方根值。对 RJ 的描述更准确。
  • 总抖动(TJ):在给定误码率(如 BER=1e-12)下的抖动预算。这是系统设计真正关心的值。

3.4 占空比失真(DCD)——不对称的「元凶」

DCD 说白了就是信号的占空比不是 50%。比如一个时钟信号,高电平持续 55% 的时间,低电平只占 45%,这就是 DCD。

DCD 的来源主要有两个:

  1. 发送端驱动器的上升/下降时间不匹配。比如 PMOS 和 NMOS 的驱动能力不一样,导致上升沿比下降沿慢。
  2. 接收端的阈值偏移。如果接收器的判决阈值不是 Vref 的中点,也会等效产生 DCD。

DCD 对眼图的影响很直接:它会把眼图的交叉点往上或往下推。正常眼图的交叉点应该在 50% 幅度处,DCD 严重时交叉点会偏移到 30% 或 70%。

我的判断方法:看眼图的交叉点位置。如果交叉点明显偏离 50%,基本可以断定有 DCD 问题。这时候先查发送端的上升/下降沿对称性,再查接收端的阈值设置。

DCD 的量化:

  • 占空比误差:(高电平时间 / 周期)× 100% - 50%。正数表示高电平偏长,负数表示偏短。
  • DCD 对抖动的贡献:DCD 会转化为确定性抖动的一部分。在抖动分解中,DCD 通常表现为双峰分布。

3.5 信噪比(SNR)——信号质量的「底噪」

眼图里的信噪比,不是传统意义上的 SNR,而是指信号幅度与噪声幅度的比值。在眼图语境下,它通常用 Q 因子 来表征。

Q 因子的计算公式是:

Q = (μ1 - μ0) / (σ1 + σ0)

其中 μ1 和 μ0 分别是逻辑「1」和逻辑「0」的平均电压,σ1 和 σ0 是它们的标准差。

Q 因子越大,说明信号和噪声的分离度越好,误码率越低。Q=7 时,对应的 BER 大约是 1e-12,这是很多高速接口的合格线。

SNR 与眼图的关系:

  • 眼高受 SNR 影响:噪声越大,眼图垂直开口越小,眼高越低。
  • SNR 与 BER 直接相关:理论上,SNR 每提高 3dB,BER 可以降低一个数量级。
  • 测量注意事项:示波器本身的底噪会影响 SNR 测量。我建议用高分辨率模式(如 12-bit ADC)来测,或者用软件做噪声去嵌。

一句话总结:眼高看幅度余量,眼宽看时序余量,抖动看时序稳定性,DCD 看对称性,SNR 看噪声水平。五个参数互相影响,但各有侧重。

3.6 知识体系总览

下面这张图把五个参数的关系串起来了。你可以把它当作一个检查清单:测眼图时,按这个顺序逐个排查。

眼图关键参数知识体系 眼图关键参数知识体系 眼图 眼高 (Eye Height) 眼宽 (Eye Width) 抖动 (Jitter) 占空比失真 (DCD) 信噪比 (SNR) 说明: 五个参数相互关联,但各有侧重。 抖动和 DCD 影响眼宽,SNR 影响眼高。 测量时建议按:眼高 → 眼宽 → 抖动 → DCD → SNR 的顺序排查

3.7 实战建议:如何快速定位问题

最后,分享一个我自己的排查流程。你在测眼图时,可以按这个顺序来:

  1. 先看眼高:如果眼高不够,优先检查发送端摆幅、预加重、接收端均衡。
  2. 再看眼宽:如果眼宽偏小,查抖动来源。用抖动分解功能区分 RJ 和 DJ。
  3. 查抖动成分:如果 DJ 占主导,看是 ISI、DCD 还是 PJ。ISI 就优化信道均衡,DCD 就调驱动对称性,PJ 就查电源和时钟。
  4. 确认 DCD:交叉点偏移超过 5% 就要重视。先调发送端,再查接收端阈值。
  5. 最后看 SNR:如果前面都正常但 BER 还是高,大概率是 SNR 不够。这时候考虑换低噪声的示波器探头,或者用软件滤波。

我的经验:80% 的眼图问题,根源都在抖动和 DCD 上。眼高不够往往是因为信道损耗太大,而不是发送端本身摆幅不够。所以别一上来就调发送幅度,先看看信道特性再说。