抖动概念入门——从定义到分类,手里得有把尺

大家好,我是你们的老朋友。这一章我们聊聊抖动——一个在高速电路中避不开的话题。记得我刚入行那会儿,看到示波器上的眼图乱糟糟的,只知道“信号质量不好”,但到底哪里不好?用哪个指标量化?完全没概念。后来跟着老工程师调了几块板子,才慢慢摸到门道。抖动说白了,就是信号跳变沿在理想时刻上的偏移。你想想看,时钟本该在 0ns 跳变,结果每次都提前或推迟一点点,累积起来系统就会出现误码。

抖动的定义——别被教科书绕晕

抖动的标准定义:数字信号的实际跳变时刻与理想参考时刻之间的偏差。这个偏差通常是随机的、动态的。

我个人的习惯:别死抠公式。你先理解成“信号的 jitter 就是时间轴上的噪声”。就像电压噪声会让幅度晃动,时间上的噪声就让边沿来回晃。

  • 抖动是一个时间域的测量量,单位是 ps、ns,或者 UI(Unit Interval)。
  • 测量时需要一个参考时钟,通常是恢复时钟或者是发送端的理想时钟。
  • 抖动会直接导致眼图闭合——闭合到一定程度,接收端采样就错了。

有一次我在调试 PCIe Gen3 的链路,发现链路老是降速。我看眼图,嗯,好像还行啊。后来用示波器的抖动分析功能一测,发现总的 Tj 已经超了 0.5 UI。接收端根本没法正确采样。从那以后,我每调一个高速接口,第一件事就是测抖动。

抖动的分类——两大阵营:RJ 和 DJ

抖动按来源和统计特性,可以分成两大类:随机抖动(RJ)和确定性抖动(DJ)。这个分类很重要,因为排查问题时,你先得知道抖动的“性质”。

1. 随机抖动(RJ)

RJ 的特点是不相关、高斯分布、无界。什么意思?说白了,就是没法预测,也没有上限(理论上可以很大)。

  • 来源:热噪声、散粒噪声、闪烁噪声等物理噪声。
  • 统计分布:高斯分布,均值为 0,方差为 σ。
  • 重要性质:RJ 的峰峰值与 RMS 之间没有固定关系——你测得时间越长,看到的峰值越大。所以大家用 RMS 来描述 RJ。

经验公式: 通常我们把 RJ 的 RMS 值记为 σ。总的随机抖动峰峰值大约是 14σ(对应 10⁻¹² 误码率,也就是 BER=1e-12)。我曾经遇到过有人直接用 6σ 估算,结果误码率对不上——那是给高斯噪声算 3σ 的思维,别搞混了。

注意:RJ 是白噪声?不。低频区域的闪烁噪声(1/f 噪声)也会贡献抖动,它的频谱是粉色的,但通常仍在 RJ 的大分类中。处理高频串行链路时,1/f 噪声的影响相对较小,可以忽略。

2. 确定性抖动(DJ)

DJ 是有界的、可重复的、有规律的。来源通常是电路设计或系统耦合。我建议你把它当作“可以修的抖动”——既然是有规律的,就能找到根因并消除。

DJ 按特征又可分为几个子类:

子类原因特征
数据相关抖动(DDJ)传输的数据码型不同,导致信号上升/下降时间变化与数据码型相关,比如 ISI(码间干扰)
周期性抖动(PJ)电源噪声、外部串扰、时钟耦合频谱上有单根峰值,周期固定
占空比相关抖动(DCD)时钟占空比偏移、信号差分不平衡只影响上升沿或下降沿
有界不相关抖动(BUJ)其他无关信号通过耦合引入有边界,但频率与数据无关

我曾经调过一块 DDR3 的板子:眼图一塌糊涂,测 DJ 发现 DDJ 很大。然后我做了个 PRBS7 码型测试,发现 ISI 抖动达到 80ps。排查后发现终端电阻匹配不对,改完后 DDJ 直接降到了 20ps。嗯,这就是确定性抖动的好处——找到规律就能修。

3. 总抖动(Tj)

你可能要问:RJ 和 DJ 怎么合并?一般通过一个双狄拉克模型(Dual-Dirac Model)来估算:Tj = Dj(δδ) + 14 × σ,其中 Dj(δδ) 是双狄拉克分离量,σ 是 RJ 的 RMS 值。这个公式在串行链路抖动预算中常用,别死记,理解原理就行。

📌 提醒: 双狄拉克模型假设 DJ 是双峰分布,实际 DJ 可能更复杂,但工程上够用了。如果遇到非双峰的分布,建议用 Q 因子方法或直接测眼图掩码。

抖动单位——你的尺子是什么?

抖动最终要落到数字上,单位就不能弄错。常见单位有:

  • 时间单位:皮秒 (ps)、纳秒 (ns)——直接对应时域偏移量。
  • UI (单位间隔): 1 UI 等于一个比特的时长。对于 10 Gbps 信号,1 UI = 100 ps。用 UI 的好处是可以归一化,与数据速率解耦。

我个人习惯:测抖动的值时用 ps,做系统预算时用 UI。比如 PCIe Gen5 要求 Tj ≤ 0.4 UI,如果你只知道 ps 是 200 ps,但速率是 32 GT/s,1 UI = 31.25 ps,0.4 UI = 12.5 ps——其实非常严苛。所以一定要在脑海里转换熟练。

还有两个概念经常混淆——抖动 RMS vs 抖动峰峰值。RJ 通常用 RMS,DJ 常用峰峰值。总抖动 Tj 指的往往是峰峰值(在特定 BER 下)。你如果拿 RMS 去和规格书里的峰峰值比较,那就错了。

知识体系结构图

抖动分类体系 抖动 随机抖动 (RJ) 确定性抖动 (DJ) 高斯分布 无界(峰峰值依赖时间) 数据相关 (DDJ) 周期性 (PJ) 占空比相关 (DCD) 有界不相关 (BUJ) 总抖动 Tj = Dj(δδ) + 14σ (针对BER=1e-12) RJ 一般用 RMS 表示,DJ 用峰峰值表示,Tj 为峰峰值

这张图把所有分类串在一起了。做抖动排查时,你先看是 RJ 主导还是 DJ 主导。RJ 主导的话,大概率是电源噪声或链路噪声;DJ 主导就去找具体的耦合路径、码型相关性、时钟占空比等。这个思路在很多项目中帮我节约了无数调试时间。

回到工程——怎么量怎么算

最后说两句实践。测量抖动用的仪器通常是实时示波器(配合时钟恢复)或者采样示波器(眼图模式)。你在示波器上能看到两个关键参数:总抖动 Tj 和 随机抖动 RMS。有些设备还能直接分离出 DJ 和 PJ 的频谱。

一个常见流程:

  1. 锁定时钟恢复环路(CRU)——把信号边沿对齐到恢复时钟上。
  2. 采集足够多的比特(至少 1e6 个边沿)——时间太短 RJ 的峰值会偏小。
  3. 利用软件算法(如双狄拉克拟合)分离出 DJ 和 RJ。
  4. 对照接口规范(如 PCIe、USB、DDR)检查是否满足 Tj 或 DJ 限值。

我记得有一次,示波器报 Tj 超标,但 DJ 很小,主要是 RJ 大。最后还是查电源纹波,把开关频率滤波做好,RJ 就降下来了。所以别一上来就改 PCB 走线,先分清楚抖动性质。