抖动分类详解:随机抖动与确定性抖动的物理机制

抖动这个话题,听起来有点玄。说白了,就是信号跳变的时候,没有老老实实待在它该待的位置上。我在项目里调试高速链路时,最常见的问题就是“眼图闭上了”,十有八九都是抖动闹的。

要做抖动分析,第一步就是分清楚抖动的种类。我个人习惯把抖动分成两大类:随机抖动(RJ)和确定性抖动(DJ)。这两兄弟的物理来源完全不同,处理方式也天差地别。

注意:总抖动(TJ)并不是简单地把 RJ 和 DJ 相加。它们一个服从高斯分布,一个有界,组合后的数学处理需要用双狄拉克模型。这个模型我后面会详细讲,但前提是你得先搞懂 RJ 和 DJ 各自的脾气。
抖动分类体系与物理机制 总抖动 (TJ) 随机抖动 (RJ) 确定性抖动 (DJ) • 高斯分布 • 无界 • 不可消除 • 来源:热噪声 • 来源:散粒噪声 占空比失真 (DCD) 阈值偏移 / 上升下降时间不对称 正弦抖动 (SJ) 电源噪声 / 时钟调制 码间串扰 (ISI) 传输线损耗 / 阻抗不连续 DJ 可进一步分解为 DCD、SJ、ISI 等有界分量,每个分量的频率特性和幅度都不同。 抖动分离是高速链路调试的核心技能。

随机抖动:躲不开的本底噪声

随机抖动这东西,说白了就是老天爷赏的。你无法完全消除它,只能想办法控制它的大小。

它的统计特性决定了它的行为方式:服从高斯分布,也就是说,抖动幅度越大的事件,发生的概率越低,但永远不等于零。这就是为什么说 RJ 是“无界”的——理论上它可能无限大。

物理本质是什么?热噪声(约翰逊-奈奎斯特噪声),还有半导体器件里的散粒噪声(Shot Noise),以及闪烁噪声(Flicker Noise,也叫1/f噪声)。这些东西在每一个电阻、每一个晶体管里永远存在。

我举个例子。你在示波器上看到眼图的水平方向有点“毛”,怎么调驱动电流和均衡器都消不掉,那多半是 RJ 在作祟。

关键指标:RJ 通常用均方根值(RMS)来描述。PCIe 和 Ethernet 规范里都会规定 RJ 的 RMS 上限,但不能直接说“RJ 不能超过 2ps RMS”,因为还得看 DJ 有多大,最终算出来的总抖动 TJ 才是能不能通过测试的标准。

确定性抖动:每个毛刺都有原因

和 RJ 不同,确定性抖动是有“根”的。它有界,而且可以被分离、被定位、被优化。我在项目中做过的抖动调试,十有八九最后都落到 DJ 头上。

DJ 可以拆成几个类型。我来列一下,每一条背后都有我踩过的坑。

类型 物理机制 典型特征 常见诱因(我踩过的坑)
DCD 正负脉冲宽度不一致 与数据码型相关 驱动器的阈值电压没设对;P/N 管驱动能力不匹配
SJ 周期性的相位调制 在抖动频谱上看到单根谱线 开关电源纹波耦合进时钟路径;某个电容选错了
ISI 前一个 bit 影响了后一个 bit 的判决 与传输的码型序列强相关 PCB 走线损耗大、阻抗不连续、有 Stub
PJ 其他周期性的干扰 多个非谐波相关的谱线 邻近信号线串扰、EMI 耦合

占空比失真

DCD 是最容易测出来的那种 DJ。你把时钟信号或 PRBS 码型接到示波器上,如果看到高电平、低电平的持续时间不一样,那就是 DCD。

物理根源呢?通常是发射器内部的差分对不匹配,或者接收端的阈值电压偏移了。我曾经在一个 25 Gbps 的项目上,怎么调都调不到规范值,最后发现是芯片参考电压有一颗 0.1uF 的电容虚焊了……

正弦抖动

SJ 是带有确定频率的周期抖动。电源完整性(PI)做得不好时,最常出现 SJ。你想想看,开关电源的 1 MHz 纹波渗进了 PLL 的 VCO 控制电压上,时钟输出就会跟着抖。

我记得有一次,在做 PCIe Gen5 一致性测试时,眼图就是过不了。我本来以为是板子设计问题,结果拿频谱分析仪一看时钟路径,一根 1.5 MHz 的谱线特别明显。嗯,是电源模块的噪声。后来加了 LC 滤波就过了。

码间串扰

ISI 是高速设计中绕不开的课题。它的本质是信道特性不够理想。你发的信号经过 PCB 走线、连接器、线缆时,高频分量会被衰减,反射也会造成前后 bit 的能量重叠。

你发一组 “000” 之后再发一个 “1”,和发一组 “111” 之后再发一个 “1”,这个 “1” 的眼睛张开程度是不一样的。这就是 ISI。

个人经验:ISI 调试,我最推荐的方法是看浴盆曲线。浴盆曲线可以直观展示码型相关性抖动有多大。如果浴盆曲线的“盆底”非常窄,那大概率是 ISI 太重了。

抖动的组合:双狄拉克模型

好,RJ 和 DJ 都介绍完了。实际测到的总抖动 TJ,是它们的合成结果。怎么合成?公式是这样的:

TJ(BER) = DJ + 2 × α × RJ(RMS)

其中 α 是 BER(误码率)对应的峰值因子。BER=1e-12 时,α≈7.03(双尾高斯分布)。

为什么会是这个形式?因为 DJ 是有界的,可以看作一个方波分布或双峰分布。它与高斯 RJ 做卷积后,尾部接近高斯分布,所以 TJ 在高 BER 点(比如 1e-12)的估算可以用这个线性关系。

我在第一次做抖动预算时,就吃过这个模型的亏。当时我按照非常保守的 RJ 值做了预算,结果仿真出来的 TJ 远远超标。后来才发现,DJ 的估测我做得太粗糙了。

避坑指南:双狄拉克模型假设 DJ 服从双狄拉克分布(两个 δ 函数),但实际情况中 DJ 往往有更复杂的分布。如果 DJ 以 SJ 为主,那卷积结果和双狄拉克假设有偏差。碰到这种情况,我会建议直接用全蒙特卡洛或统计仿真,而不是套公式。

总结一下这一节的核心:

  • RJ 是高斯、无界、不能消除的——来自热噪声和散粒噪声。
  • DJ 是有界、可以被分离和优化的——包含 DCD、SJ、ISI 等。
  • 两者的合成用双狄拉克模型估算,但要清楚它的使用边界。

搞清楚了这些物理基础,你再看 PCIe 和 Ethernet 规范里那一堆抖动指标,就会发现每条定义背后都有刚才讲的物理含义。嗯,下一步就能真正动手分析抖动了。