第三节 确定性抖动(DJ)的来源
上一节我们把抖动拆成了随机和确定性两部分。随机抖动像白噪声,你拿它没太多办法 —— 但在确定性抖动上,咱们能做的事就多了。说白了,DJ是你能找到根因的那部分抖动。
我个人习惯把DJ的四大来源记成「串电码占」四个字。分别对应:串扰、电源噪声、码间干扰、占空比失真。下面我们一个一个来拆。
3.1 串扰
什么叫串扰?不想要的耦合。一条线上的信号翻身,隔壁线就跟着抖。我在项目中遇到过最典型的场景:10层背板,时钟线和数据线挨着走了2寸。跑起来以后,时钟沿的抖动直接多了15 ps。
串扰根据耦合机制分两类:
| 机制 | 产生条件 | 对时钟的影响 |
|---|---|---|
| 容性耦合 | 信号翻转速率高 (dV/dt大) | 叠加尖峰抖动,易破坏建立/保持时间 |
| 感性耦合 | 电流突变 (dI/dt大) | 引起共模与差分模式抖动,高速总线敏感 |
嗯,这里要注意一个点:串扰不是只会加抖动,它还会吃掉你的时序裕量。我曾经在一个DDR3的设计里,Vref边上走了根高速SPI时钟,结果DQ的采样窗口直接缩了20%。后来把SPI时钟绕走,问题就消失了。
串扰导致的DJ往往是数据相关的 —— 只有邻近线翻转时才会出现。用BERT跑PRBS码型更容易复现,别老盯着全0全1看。
3.2 电源噪声
电源噪声是DJ的第二大来源。你想想看,时钟缓冲器的延迟是跟着电源电压走的。VDD一抖,门延时跟着变,输出时钟就跟着东倒西歪。
这里有个关键认知:电源噪声产生的抖动是确定性的,只要电源的纹波频谱是固定的,抖动的频谱也是固定的。我习惯把电源噪声引起的抖动分成两类:
- 纹波抖动 — 来自开关电源的基波和纹波。频率一般在几十kHz到几MHz。
- 瞬态抖动 — 来自IC内部突发的电流抽吸。你去量板卡上的核心电压,总能抓到几mV的毛刺。
给你个实际的数字:一个典型的1.8V CMOS缓冲器,电源纹波每增加10 mV,输出时钟的峰峰值抖动大约增加3–5 ps。这是我实测过的,你可以拿这个做粗略预估。
有些工程师觉得电源纹波小就没问题。不对。关键是抖动对电源噪声的灵敏度——也就是PSR(Power Supply Rejection)。同样10 mV纹波,锁相环(PLL)能滤掉大部分,但开环缓冲器就全吃进去了。
3.3 码间干扰(ISI)
码间干扰,简称ISI。说白了就是信道记忆效应。前一个bit还没走干净,后一个bit就撞上来了。在时钟树里,ISI主要发生在时钟走线较长、阻抗不连续或者有反射的场景。
为什么会这样?
我记得在一个28Gbps的SerDes参考时钟设计里,工程师抱怨PLL锁定后相位噪声的抖动怎么也压不下去。我让他挂上时钟源的1/0模式看眼图。看到的图是单个沿很干净,但是0101交替时展宽了。问题就出在PCB走线末端有个小stub,造成了小于30Ω的反射 —— ISI导致的DJ就这么来的。
ISI的本质是低通滤波效应。数据率越高,信道损耗越大,ISI越严重。对于时钟树来说,以下几点最关键:
- 时钟线上的过孔数尽量少(每个过孔就是一段电感不连续)
- 走线阻抗要连续(尤其是跨层换孔时)
- 端接要到位,避免反射
3.4 占空比失真(DCD)
占空比失真,简称DCD。理想时钟应该是50%占空比。但实际电路中,时钟缓冲器的上升和下降时间不一样,或者差分对的P/N偏置不平衡,就会产生DCD。
DCD在频谱上的表现很直接:在f = 1/(2×T_bit) 处出现一个较大的离散谱线。这也是区分DCD和其他DJ的有力依据。你拿频谱仪看时钟,如果基波频率的一半处有一根粗谱线,那八九不离十就是DCD的问题。
| DCD来源 | 典型场景 | 抖动形态 |
|---|---|---|
| 上升/下降时间不匹配 | 缓冲器工艺偏差 | 占空比偏移3%-5% |
| 差分信号偏置误差 | LVDS/CML驱动输入失调 | 占空比偏移可达10% |
| 电源电压差异 | 正负电源不一致 | 占空比随电压偏移 |
我当初做一个小数分频PLL,锁定时数据眼图的开度一直不够。查了两周,最后发现是参考时钟源内部的CML to CMOS转换器有3 mV的输入失调,导致输出的占空比变成了52%/48%。换了高精度分频器,问题立刻消失。嗯,这件事让我记住了:DCD的根因可能不在你直接看的芯片上,往前查一级。
用示波器的直方图功能看单个时钟沿。如果高电平持续时间的直方图中心明显偏离50%周期,原因大概率是占空比失真。
到这儿,确定性抖动的四大来源就讲完了。串扰看耦合,电源噪声看PSR,ISI看信道,DCD看占空比。你只要在调试中把这四个点逐个排查完,DJ的根源基本就锁定了。
这节的表格和方法,我建议你截个屏存着。下回遇到时钟抖动问题,对着这几条逐一排查,比瞎猜快得多。