3、抖动测量基础:眼图、直方图、浴盆曲线

抖动测量这件事,说白了就是用三种工具看同一个问题:信号过零点到底偏了多少?我个人刚入行时,老觉得眼图、直方图、浴盆曲线是三个东西。后来被导师骂过一次才明白,它们其实是同一个故事的三个章节。

你先用眼图把信号“摊开”,看看抖动长什么样;再用直方图把抖动数值“数出来”,分出随机和确定成分;最后用浴盆曲线“外推”到极低误码率,估算系统还有多少余量。今天我们就一次讲透。

3.1 眼图 — 抖动最直观的“照片”

眼图怎么来的?把重复的波形按比特周期重叠在一起。触发点对准时钟边沿,屏幕上一堆轨迹就叠出一个类似眼睛的形状。眼睛张开的大小、干净程度,直接反映信号质量。

核心参数一瞥

  • 眼高 (Eye Height) — 垂直噪声+ISI 导致的电平损失
  • 眼宽 (Eye Width) — 水平方向抖动导致的采样窗口缩小
  • 抖动 (Jitter, p-p) — 过零点波动的峰峰值
  • 信噪比 (SNR) — 眼图开度与噪声的比值

我在项目中遇到过最坑的事:用一台老采样示波器看 28 Gbps 信号,眼图看着挺张开,但实际误码率死活压不下去。后来发现示波器的带宽不够,把高频抖动给滤掉了。你想想看,示波器本身成了滤镜,这种坑踩一次就够了。

3.2 直方图 — 把抖动“数清楚”

眼图只能给你一个“整体感觉”,但抖动的构成我需要量化。这时就用到了时间间隔误差(TIE)直方图。

TIE 直方图的横坐标是时间偏差,纵坐标是出现的次数。假如抖动是纯随机(高斯分布),直方图就是单峰钟形;假如有确定性抖动(例如占空比失真),就会出现双峰甚至多峰——两个峰之间的距离恰好是 DJ 的大小。

常用直方图指标
指标含义用途
σ (标准差)随机分量 (RJrms)估算高斯分布的扩散程度
μ均值偏移DCD (占空比失真) 的大小
双峰间距DJ (峰峰值)确定性抖动的幅度
直方图尾部非高斯尾部判断是否有 PJ 等周期性分量

我的经验:在 FPGA 调试时,我习惯在眼图闭合的边沿处采集 TIE 直方图。如果直方图出现明显的周期性双峰(像两个汤圆黏在一起),多半是电源噪声耦合到了时钟上。这时候改个去耦电容布局都比调时序参数管用。

3.3 浴盆曲线 — 从概率角度看“眼还能不能闭上”

浴盆曲线(Bathtub Curve)是个很形象的叫法。你把眼图水平方向切开很多“切片”,在每个切片上测量 BER(误码率)。靠近眼中央 BER 极低,往两边 BER 快速上升,画出来就像个浴缸——底部是平的,两侧壁陡峭。

为什么要用浴盆曲线?因为示波器采到的抖动样本有限(比如 1M 个边沿),但通信系统要求 BER 到 10⁻¹² 甚至 10⁻¹⁵。直方图尾部的信息不够,必须用数学模型外推。传统双狄拉克法(Dual Dirac Model)把 RJ 假设为高斯分布,DJ 为双高斯偏移,然后算出总抖动 TJ = DJ + 2×Q×RJ,其中 Q 是 BER 对应的分位点(10⁻¹² 时 Q≈7.0)。

我曾踩过的坑:某次用这个公式算下来 TJ 很小,但实际系统经常丢包。后来发现确定性抖动不是双狄拉克能描述的——它有周期成分,而且低频 PJ 会缓慢漂移。浴盆曲线如果是“倒钟形”而不是标准浴缸形状,就说明有严重的低频抖动或钟形失真。这时候别再用简单公式了,得上频谱分析做 JTF(抖动传递函数)。

3.4 三者的关系 — 一张图说清

下面这张图是我个人的理解框架。眼图提供原始数据,直方图做统计分解,浴盆曲线用于误码率预测。三个工具缺一不可。

眼图·直方图·浴盆曲线关系图 抖动测量三部曲 眼图 水平方向过零点分布 TIE 直方图 统计分解 → RJ / DJ 浴盆曲线 外推 BER → TJ 实际项目中的配合方式 1. 眼图快速定位问题边沿 → 2. 直方图量化RJ/DJ成分 → 3. 浴盆曲线预测误码率余量 如果浴盆曲线壁不够陡,说明需要进一步频谱分析找PJ根源

3.5 实用口诀 — 拿来就用

  • 眼图看“形状”:眼睛睁得够不够大,交叉点漂不漂。
  • 直方图看“成分”:单峰还是双峰?高斯尾巴还是周期突起?
  • 浴盆曲线看“余量”:在目标 BER 下,眼宽还有多少皮秒?

我个人调试时习惯三步走:先开眼图,记一下抖动 p-p 值;然后切到 TIE 直方图,读一下双峰间距;最后设一个目标 BER(比如 1e-12),自动生成浴盆曲线。如果眼宽 > 0.3 UI 且浴盆曲线壁垂直度好,基本可以放心交板。

别小看这三个工具,很多高速链路问题就是靠它们一层层剥出来的。把这次内容反复看上两遍,下次看示波器就不会只盯着“眼好不好看”了。