2. 抖动分类与度量:捋清 TJ、RJ、DJ、DDJ 那点事
做高速串行链路,抖动的分类是避不开的基本功。我刚开始接触 SerDes 测试那会,看到一堆缩写就头疼——TJ、RJ、DJ、DDJ……说实话,光名字就能把人绕晕。但别急,今天咱们把这几个概念掰开揉碎,给你讲透。
2.1 总抖动(TJ):你测出来的那个数
总抖动 TJ,说白了就是 你把眼图最差情况下的抖动全加起来。在数字通信系统里,TJ 一般定义为误码率 BER=10^-12 时的眼图闭合程度。你会问:为啥取这个值?因为实际工程里,10^-12 的误码率基本够用了。
核心公式(简化版):
TJ(BER) ≈ DJ + 2 × α × RJ
其中 α 是 BER 对应的分位数(BER=10^-12 时 α≈7)。说白了,TJ = DJ + 2×7×RJ。
| 抖动类型 | 英文 | 特性 |
|---|---|---|
| 总抖动 | Total Jitter (TJ) | 工程上最关心的指标,眼图闭合的直接结果 |
| 随机抖动 | Random Jitter (RJ) | 高斯分布,无界,不可预测 |
| 确定性抖动 | Deterministic Jitter (DJ) | 有界,可预测,有明确成因 |
| 数据相关抖动 | Data Dependent Jitter (DDJ) | 与传输码型直接相关,属于 DJ 的子类 |
嗯,你别光记公式。TJ 是实测值,RJ 和DJ 是模型拆分出来的,纯粹的贝叶斯还是高斯,看你怎么修。对于实际板级调试,我一般先用示波器测眼图,读数就是 TJ;然后通过抖动分解,剥离 RJ 和 DJ,再往下剥到 DDJ。
2.2 随机抖动(RJ):那个甩不掉的噪声底
RJ 的来源是热噪声、闪烁噪声、散弹噪声——都是半导体物理决定的。RJ 是高斯分布,它的尾巴很长,你测的时间越长,抖动峰值就越大。RJ 与元器件自身的本底噪声强相关。
我记得一次调试 28Gbps 的背板,TJ 读数超标,我第一反应是 DDR 供电不稳,后来发现是 PLL 的相噪恶化,直接拉高了 RJ 本地基底。你说 RJ 怎么改?其实就是改善电源纹波、优化 PLL 环路滤波器,或者在系统级做预加重。
一句话总结:RJ 是系统底噪决定的,基本不能靠数字处理“消掉”,只能用均衡器或重新定时缓解。
2.3 确定性抖动(DJ):把锅背好
DJ 就那几种:周期抖动(PJ)、占空比失真(DCD)、数据相关抖动(DDJ)、有界不相关抖动(BUJ)。你想想看,这几种全都能找到具体原因——电源耦合、上升/下降沿不对称、码间干扰、串扰。
在实际项目中,DJ 占总抖动的前半段。如果 DJ 占总抖动的 80% 以上,那我就知道改进串扰和码型匹配能显著改善。
避坑指南:我曾经在 56Gbps PAM4 链路上只测了 TJ 大于的 UIt 限值,直接推断是 RJ 问题,结果花了三天改 PLL,毫无效果。后来做 DJ 分解才发现是通道回损不均带来的码间干扰为主……
DJ 的最大特点是 有界。RJ 会随着测量时间增长而增大,但 DJ 有一个固定的峰峰值。所以如果你测到抖动无限增长,基本可以判断 RJ 占主导;如果抖动很快收敛到某个值就不再变大,那就是 DJ 的锅。
2.4 数据相关抖动(DDJ):码型的影子
DDJ 是什么?说白了,就是 01 跳变序列不同带来的抖动。我发个“101010...” 和 “111000...” 比,眼图闭合情况肯定不一样。原因也很直观:单比特跳变和长连 1 长连 0 之后的跳变,通道的瞬态响应不同。
DDJ 主要来自两个方面:
- 码间干扰(ISI):通道带宽有限,前一个比特的残影拖到后一个比特的跳变上
- 趋肤效应/介质损耗:高频分量衰减比低频多,连 1 连 0 后的跳变变缓
在实际调试时,DDJ 会表现出明显的码型依赖性。比如 PRBS31 测出来 TJ 达标,换成重复长连 1 的码型就超标了——这就是 DDJ 在作怪。
| 码型 | DDJ 占比 (典型) | 应用场景 |
|---|---|---|
| PRBS7 | 30%~40% | 快速验证 |
| PRBS31 | 50%~70% | 合规性测试 |
| 长连 1 连 0 | 70%~90% | 极限眼图 |
嗯,DDJ 对通道损耗极其敏感。这也就是为什么好多高速标准里直接规定用 PRBS31 做测试码型,逼得你做好通道均衡。
2.5 隶属关系:从 TJ 一路拆到 DDJ
整件事情的逻辑,用一个层次图就能说清楚:
我自己调试时,就是按这个流程来判断的——先看 TJ 是否超标,没超标就收工。超标了?那我就看是 RJ 大还是 DJ 大。RJ 大就改善电源和时钟;DJ 大再拆:如果是 DDJ,那就点对点优化通道和均衡器。流程图虽然简单,但在实际调试时能省不少时间。
2.6 各类抖动的属性对比
下面这张表,是我在项目文档里经常贴的,方便对照记忆:
| 属性 | RJ | DDJ | DCD | PJ |
|---|---|---|---|---|
| 分布类型 | 高斯(无界) | 双峰或偏峰(有界) | 双峰(有界) | 正弦(有界) |
| 是否依赖码型 | 否 | 是(核心特征) | 否 | 否 |
| 与频率的关联 | 宽频带 | 低频为主 | 低频 | 单一频率 |
| 改善策略 | 低噪声电源 / 低相噪 PLL | 通道均衡 / 预加重 | 匹配上升/下降沿 | 去耦合 / 滤波 |
为什么我把 DDJ 的分布写成“双峰或偏峰”?因为不同的码型分布会有不同的抖动直方图。这一点在后面的章节里我们会重点分析,但你记住一句话:DDJ 是码型的函数,码型一变,DDJ 的规模和形状都变。
我个人的一个习惯:在做系统级测试前,先把 DDJ 的码型依赖性测一遍。就用一个简单的 PRBS7 和 PRBS31 对比,如果 TJ 差距超过 50%,那通道均衡大概率没做好。
嗯,讲了这么多,你其实只需要记住几行字就行了:TJ = RJ + DJ,DJ 包含 DDJ、DCD、PJ、BUJ,DDJ 跟码型对着干。 结构清晰后,抖动的拆解才能做对,后面的眼图闭合预算、均衡算法选型才能站得住脚。