2. 抖动分类详解:确定性抖动(DJ)与随机抖动(RJ)的来源与特征
抖动物理层测试,说白了就是在跟两种顽疾打交道:一种是有规律的、能追根溯源的东西;另一种则是纯粹的“运气不好”。我在项目里把它俩分别叫作“坏孩子”和“熊孩子”——一个你总能逮到它,另一个你只能靠统计来对付。
咱们把抖动的双生子——确定性抖动(DJ)和随机抖动(RJ)——彻底拆开看看。你只要能分清楚这俩,后面再学BERT应用就轻松多了。
2.1 确定性抖动(DJ)——总能找到原因
确定性抖动,也叫有界抖动。它有一个非常关键的性质:峰值是有上限的。不管它怎么折腾,振幅都不会无限大。这件事在做系统裕量设计时特别重要——你算完最坏情况就能给一个确定性的余量值。
我记得第一次在示波器上看到一个时钟的DJ时,我还以为仪器坏了。后来才发现是电源噪声在作怪。嗯,当时白折腾了两天。记住:DJ一定有来源,而且来源通常就那么几类。
2.1.1 DJ的主要来源
核心观点:DJ通常由电路结构、串扰、电源纹波或数据模式引起。它不是随机的,因此可以通过某种手段消除或补偿。
- 数据相关抖动(DDJ)——数据模式不同,抖动也不同。常见于信号传输中的码间串扰(ISI)。我做过一个10Gbps的SerDes,发现某些固定的数据图案(比如1010切换)会在接收端产生极大眼图闭合,就是用DDJ分析找到的。
- 周期抖动(PJ,又称正弦抖动)——来源于某个周期性干扰源。比如开关电源的100kHz噪声,或者时钟分频电路产生的固定频率分量。在频谱上你一定能看到单根谱线。
- 占空比失真(DCD)——时钟高低电平宽度不一致。往往和驱动器的上升/下降时间不对称有关。你在眼图上会看到交叉点不在50%的位置。
- 有界不相关抖动(BUJ)——与其他有界信号耦合进来,但与数据时钟不相关。比如同时工作的数字总线噪声耦合到模拟通道中。
2.1.2 DJ的直方图特征
测量DJ的时候,拿直方图一看就知道了——它通常呈现双峰或多峰分布。如果直方图有清晰的左右两个鼓包,那十有八九占空比失真或DDJ在捣鬼。我习惯把这个双峰间距叫作“DJ峰值跨度”,它直接决定了系统能否满足总抖动预算。
提醒:如果直方图只有一个大峰但底部明显比高斯分布宽,别急着算RJ分量——先看看有没有低频的周期抖动。你可以在时域叠加很多个bit,用模板把PJ滤掉再测,这样RJ估计才准。
2.2 随机抖动(RJ)——纯无界,只能拼统计
随机抖动就是另一回事了。它来源于电子器件内部的热噪声、散粒噪声、1/f 噪声等等。这些东西你没法消除,只能被动承受。关键是:RJ是无界抖动——它的概率分布是高斯分布,理论上有无限大的尾巴。
你想想看,一个高斯分布,不管你设多大的峰峰值阈值,总有可能出现一个比它大的抖动量。这就是为什么系统设计里要给“误码率”留余量。我曾经碰到过一个项目,板级工程师觉得抖动裕量留了1个UI就够了,结果上机后偶尔报错——因为高斯尾巴在千万分之一误码率下踩中了接收阈值。
2.2.1 RJ的数学性质
RJ的精度指标通常以RMS(均方根)值给出,单位是ps rms。要换算成峰峰值,你得先知道目标误码率(BER)。常用的转换公式:
RJ(pk-pk @ BER = 1e-12) = 14.069 * RJ(rms)
注:14.069 是高斯Q函数在10⁻¹²对应的分位数(单侧7.0345,双侧14.069)
【曾经踩坑】我曾经直接用这个公式算完交差,结果测试时发现高频段抖动还超了。后来意识到RJ不是纯粹的单高斯 —— 它还跟原始数据的死区时间有关。建议你实测RJ时,要按BERT仪器的测量时间换算实际偏移。公式是对的,但前提是你知道仪器到底量了多少个bit。
2.2.2 怎么分离出RJ?
分离RJ其实有固定步骤:测出直方图 → 拟合高斯曲线 → 拟合残差就是DJ部分。但难点在低概率区域,特别是高斯尾巴上数据稀疏。我常用的方法是:让BERT打足够多的比特(通常10¹¹以上),保证在10⁻¹²量级有足够的采样。然后使用双狄拉克方法算Rj和Dj。
2.3 DJ vs RJ:一张表讲清楚
| 属性 | 确定性抖动(DJ) | 随机抖动(RJ) |
|---|---|---|
| 来源 | 电路缺陷、电源噪声、串扰、数据模式 | 热噪声、散粒噪声、1/f噪声 |
| 分布 | 双峰 / 多峰 / 等间隔 | 高斯分布(无限尾) |
| 幅度是否有限 | 有界(能穷举最坏情况) | 无界(概率上总有更大的) |
| 是否可消除 | 可以(换晶振、滤波、调整PCB) | 不能(只能通过工艺改进) |
| 典型复现性 | 每次测量基本一致 | 每次测量有随机波动 |
| 对误码率影响 | 决定“阈值离边界有多近” | 决定“高斯尾巴能延伸多远” |
一句话总结:DJ负责“最坏极限”,RJ负责“误码概率”。两者都量化好,你才能用BERT去验证总抖动是否满足设计要求。
2.4 双狄拉克模型——组合分析
实际测到的总抖动(Tj)是DJ和RJ的组合,通常用双狄拉克模型建模。简单说:DJ相当于两个高斯均值偏移,RJ保持相同标准差。总抖动在某个误码率下的峰峰值就是:
Tj(BER) = Dj + α(BER) × Rj(rms)
其中 α(BER) 就是前面提到的Q函数分位数乘以2
比如 BER=1e-12 → α ≈ 14.069
明白了吧?有了这个,你就可以在BERT测试前先做预算。我一般先估算最恶劣的Dj,再测量Rj,然后算一下裕量。如果Tj比一个UI大,后面的眼图肯定闭合。
这张图就是咱们这一节的核心骨架。从上到下你一眼就能看出:总抖动由DJ和RJ组成,DJ下边有DDJ、PJ、DCD三个主要子类,RJ则主要来自热噪声等物理噪声。而最底部的双狄拉克公式,则是把你测到的DJ和RJ数值转化成系统总抖动的桥梁。
2.5 实战中的处理习惯
说几个我总结的实操要点:
- 先测DJ,再算RJ。很多工程师急着看总抖动,忽略了DJ的定位。我的做法是先固定触发边沿,采集大量数据做累积图,看峰值移动范围。确定DJ分量后,剩下的那部分才去拟合高斯尾巴。
- 善用BERT的“眼图扫描”模式。BERT仪器可以逐点扫描眼图,得到误码率等值线图。你观察等值线的形状——如果是规整的菱形,RJ占主导;如果有明显凹陷或不对称,那肯定有DJ捣乱。
- 测试条件要一致。调电源电压温度,DJ和RJ的表现完全不同。RJ随温度升高而增大(热噪声),DJ可能随电源纹波改变。我习惯在数据中心典型工作温度(40~60°C)下做压力测试,而不是常温。
再提个醒:别把“片内PLL自身的抖动”直接归为RJ。PLL的输出抖动包含大量周期成分(PLL本身的VCO噪声可能呈现周期性特征)。我曾经在一个40Gbps协议测试里,被测芯片的PLL输出抖动看似随机,用频谱一看79MHz处有明显峰值——那是PLL环路带宽附近的自激振荡。那是DJ,不是RJ!