第3章 抖动分离原理
3.1 为什么要做抖动分离?
好,咱们先聊个最直接的问题:你测出来的总抖动(TJ),到底是谁的锅?
我在项目里见过不少年轻工程师,拿眼图一看——哦,眼睛闭了,就去调VCO带宽、改电源滤波。折腾一整天,抖动没降多少,反而把信号眼图弄得更歪了。为什么?因为抖动不是一个人干的。
高速链路上,抖动来源五花八门:
- 随机抖动(RJ):热噪声、散弹噪声,天生改不了,只能靠系统容忍度来扛。
- 确定性抖动(DJ):又分成数据相关抖动(DDJ)、周期抖动(PJ)、占空比失真(DCD)等等。每个根因对应的修正动作完全不同。
你想想看,如果只知道总抖动大小,就跟医生只知道“病人发烧”一样——退烧药吃下去不一定对症。抖动分离,说白了就是把“总发烧”拆成“病毒感染”和“细菌感染”,才能真正下药。
3.2 传统眼图方法,到底局限在哪?
眼图是好东西,但它只能告诉你“眼睛是睁是闭”,很难告诉你“为什么闭”。
咱们细数几个硬伤:
- 只能看统计结果,看不到时间演化——眼图等效于把所有比特叠在一起,时间信息全丢了。一个低频周期抖动和一段突发噪声在眼图里都是“变粗”。
- 无法区分RJ和DJ——眼图闭合高度是二者叠加的结果。RJ是高斯尾巴,DJ会在眼图中间产生离散的“鬼影”。但鬼影一多就糊成一团,你根本数不清有几个峰值。
- 对低频抖动不敏感——频率远低于信号速率的抖动,在眼图里表现为整体摇晃,眼图轮廓边界还在,但内部BER完全恶化。这种“隐形杀手”,眼图很难暴露。
- 需要大量采样,但RBW(分辨率带宽)受限制——示波器采样深度有限,传统眼图测不到极低概率的尾巴事件。
我记得有一次给客户分析一块失效的板子,客户用眼图测了半天,所有指标都“过得去”,但系统就是误码。后来我们用抖动分离一查——是个30kHz的电源扰动,在眼图上几乎看不出来。所以我说,眼图只是“望闻问切”的第一步,真到查根因,还得靠分离。
| 分析方法 | 能做的事情 | 存在的问题 |
|---|---|---|
| 传统眼图 | ∞快速评估总体眼开度 | ∞无法分离抖动分量 |
| 浴盆曲线 | ∞估计BER边界 | ∞只能看到TJ分布 |
| 抖动频谱 | ∞显示周期抖动频率 | ∞测不到RJ的高斯尾巴 |
| 抖动分离算法 | ∞得到RJ/DJ各自参数 | ∞需要足够样本量 |
3.3 基于统计的分离思路,怎么做到的?
核心思路其实不复杂——利用两类抖动的概率密度函数(PDF)差异来做分离。
- 随机抖动(RJ):服从高斯分布,PDF是一条平滑的钟形曲线,尾巴延至无穷远。
- 确定性抖动(DJ):服从有界分布(比如双高斯的DCD、正弦的PJ),PDF有明显的上下界和离散峰值。
总抖动的PDF = RJ的PDF 与 DJ的PDF 的卷积。嗯,这就是分离的理论基础。
实际操作一般是这么几个步骤:
- 大量采样边缘位置——用高精度时间间隔测量,采集几十万甚至上百万个边沿时刻。
- 做直方图——统计每个时间偏移的出现频次,得到抖动PDF的近似。
- 做尾部分析——在PDF的两侧尾巴,由于DJ有界,尾巴形状只来自RJ的高斯分布。拟合这条尾巴就能得到RJ的均方根(σRJ)。
- 剥离高斯——从总PDF中减去RJ成分,剩下的就是DJ的PDF。继续分析DJ的分布形状,就能识别出是DCD、PJ还是DDJ。
我在开发一个28Gbps的NRZ接收机时,用过这种尾部拟合方法。当时面临的难题是:采样点必须足够多(10⁶以上),否则尾巴的统计不够稳定。我尝试用双核FPGA实时累积边沿直方图,跑了大约3秒就拿到足够的数据。然后Python后端用高斯尾部拟合,几毫秒就把RJ和DJ拆开了。
你可能会问:“尾部拟合精度怎么保证?”
说实话,这里有个坑——高斯尾巴非常窄,如果信噪比不够,或者DJ的有界范围太大,尾巴会被DJ的峰值淹没。碰到这种情况,我会先做一个高通滤波,把低于一定幅度的抖动分量暂时滤掉,再拟合尾巴。当然,滤波器引入了新的相位误差,需要校准。我踩过这个坑,后来在算法里加了直流基线校准,才稳定下来。
下面这张图概括了基于统计的抖动分离全流程:
这张图是我在实际测试板上跑流程时画的简化版。每一步背后都有不少细节:比如边沿采集时的触发点选择、直方图bin宽度的确定、尾部拟合时选哪个置信区间……每一个都是坑。我曾经因为bin宽度设得太细,导致直方图稀疏得像梳子,尾部拟合全跑偏了。后来经验是:bin宽取ITU-T建议的0.05UI,或者根据采样时钟精度动态调整。
3.4 分离之后,你得到了什么?
做完分离,你实际上拿到了一套“抖动体检报告”:
- RJ的σ值——告诉你链路噪声底线。
- DJ的峰峰值——告诉你哪些是能改进的。
- DCD的占空比偏移——指向驱动端或者接收端阀值。
- PJ的频率和幅度——帮你定位电源纹波或耦合干扰。
举个例子,我手头一个项目总抖动TJ≈0.35UI,分离后发现RJ占0.04UI(很小),DJ占0.31UI,DJ里面PJ占了0.25UI,频率42kHz。第二天我就拿着频谱仪直接对着电源平面扫——果然,一个DC-DC模块的开关频率是42kHz,测量纹波达到了30mV。换了一个低纹波模块之后,PJ降到0.05UI,眼图完全打开了。
你看,没有分离,这35%的眼图闭合损失根本找不到真凶。