1. 眼图闭合的元凶:从一次100MHz参考时钟排查说起
几年前接手一块高速板卡的调试,现象很典型:链路在常温下勉强能跑,一进温箱就零星报错,误码率上上下下,重传率大概在1e-9到1e-10之间晃。眼图抓出来看,垂直方向还有余量,水平方向却已经快糊成一片了。当时第一反应是走线阻抗或者连接器的问题,折腾了两天才把方向拨正——真正的元凶是那颗100MHz参考时钟的时间抖动(jitter)在温度升高后明显变差,经过PLL倍频之后被放大,最终把眼图的水平张开度吃掉了大半。
这件事让我意识到,很多人对jitter的理解停留在"知道它是个时间上的偏差"这个层面,真到排查的时候,分不清自己测的到底是哪一种jitter,也就无从下手定位。时间抖动这个词看着简单,背后其实藏着一整套分类体系:随机抖动和确定性抖动、周期抖动和周期间抖动、TIE和长期抖动,每一个名字都对应着不同的测量方法、不同的物理来源、不同的换算关系。你测的若是cycle-to-cycle jitter,它天然带高通特性,对低频温漂压根不敏感;你想拿它去解释眼图闭合,那基本就是南辕北辙。
这篇笔记想干的事,是把jitter这套体系从工程实用的角度捋一遍。我会重点讲清楚cycle-to-cycle jitter和peak-to-peak jitter这两个热搜里高频出现的概念到底在测什么、怎么换算、容易在哪儿翻车,也会把示波器、相位噪声分析仪、BERT这几条主流测量路径的分工讲透。适合已经接触过信号完整性、正在做时钟链路或者高速串行接口调试的同行看,也适合刚入门、被各种jitter指标绕晕的朋友当作一张地图来用。文中涉及公式的地方我会尽量把推导补上,因为只有理解了"为什么",你才知道什么时候那个结论不成立。
先把一个基本判断放在前面:jitter不是一个单值指标,它是一族指标的统称。脱离了"测的是哪一段、观测窗口多长、置信度多少"这三个定语,任何jitter数字都是没有意义的。后面所有内容,基本都是在给这句话做注脚。
2. jitter的分类骨架:随机、确定性与那条"有界无界"的分界线
2.1 随机抖动RJ:永远在长尾巴的高斯分量
随机抖动(Random Jitter,RJ)的物理来源主要是器件内部的热噪声、散粒噪声这类白噪声过程,它的统计特性可以用高斯分布来近似描述。高斯分布最要命的一点是它的支撑集是整条实轴,理论上可以取到任意大的值,只是概率越来越小。这就意味着RJ本身是无界的,你用再长的观测窗口去测,峰值都会随着时间缓慢增长,永远收敛不到一个固定数。
工程上处理RJ的办法是只用它的均方根值σ来描述,然后通过外推去估算某个误码率下的峰峰值。常见做法是取14倍σ,对应大约1e-12的双边误码率。这个14不是拍脑袋来的:单边高斯尾部概率Q(x)在x=7附近约为1.28e-12,双边翻倍后接近2.56e-12,量级上对应1e-12这条线,所以行业里约定俗成用±7σ,峰峰值就是14σ。你要用1e-15的误码率目标,那这个系数就得往上抬到大约15.6σ。这种"系数随目标BER变"的特性,正是RJ无界性的直接体现。
还有一个容易被忽略的点:RJ的σ和测量带宽强相关。示波器前端带宽如果只有2GHz,那些更高频的相位噪声分量就被滤掉了,测出来的σ会偏小。所以对比两颗时钟的RJ时,必须先确认测量带宽一致,否则数字没有可比性。
2.2 确定性抖动DJ:有界,但来源五花八门
确定性抖动(Deterministic Jitter,DJ)和RJ相反,它是有界的,峰峰值不随观测时间增长而发散。DJ的来源很杂,工程上大致归成几类:占空比失真(DCD)、数据相关的抖动(DDJ,也叫码间干扰ISI引起的那部分)、周期性抖动(PJ,通常来自开关电源、时钟串扰等周期性干扰)、以及有界不相关抖动(BUJ)。
理解DJ的关键在于:它往往有明确的物理可追溯路径。比如DCD通常来自差分对的上升下降沿不对称、或者时钟占空比本身偏离50%;PJ常常能追到某个开关频率或者晶振的杂散。RJ你只能想办法压低σ,DJ你却可以通过改电路、换布局、加滤波来直接消除。这也是为什么排查jitter问题时,第一步永远是判断"这坨抖动里DJ占了多少"——因为DJ是能被治的,RJ往往只能认。
2.3 为什么总抖动必须挂上BER才有意义
总抖动(Total Jitter,TJ)不是简单地把RJ和DJ相加。主流模型叫dual-Dirac,它假设DJ分布在两个极值点上,RJ是一个高斯,两者卷积。在这个模型下:
TJ(BER) = DJ_δδ + 2 × Q_inv(BER/2) × σ_RJ
其中DJ_δδ是dual-Dirac模型下DJ的峰峰值,Q_inv是高斯尾函数的反函数。这条公式说明一个问题:TJ是BER的函数。你问"这颗时钟的jitter是多少",对方如果只回一个数字不加BER,那这个数字基本没法用。常见报告会写"TJ@1e-12 = 0.35UI",这才算完整。
下面这张表把三类抖动的基本属性摆在一起,方便对照:
| 类型 | 有界性 | 常见来源 | 能否通过设计消除 | 描述参数 |
|---|---|---|---|---|
| RJ 随机抖动 | 无界 | 热噪声、散粒噪声 | 难以消除,只能压σ | σ(RMS) |
| DJ 确定性抖动 | 有界 | DCD、ISI、PJ、串扰 | 多数可通过设计改善或消除 | 峰峰值 |
| TJ 总抖动 | 随BER定义 | RJ与DJ的合成 | — | TJ@指定BER |
把这张表记住,后面讨论cycle-to-cycle和peak-to-peak时,你就能快速判断自己站在哪一栏里。
3. period、cycle-to-cycle、TIE:三个名字背后是三块不同的"时间切片"
3.1 period jitter测的是与理想周期的偏离
周期抖动(period jitter)的定义很直白:把时钟的每一个实测周期T[n],减去理想周期T0,得到一串偏差序列:
J_period[n] = T[n] − T0
它反映的是"单个周期相对标称值偏了多少"。这个指标适合用来评估一颗时钟在短时间尺度上的稳定度,比如你关心PLL输出每个周期的抖动会不会让下游采样时序出错,看的就是它。period jitter的RMS值在很多时钟芯片手册里直接以"RMS period jitter"的形式给出,单位通常是ps或者fs。
一个细节:period jitter对低频漂移是保留的。如果时钟源因为温度变化导致频率整体缓慢漂移,T[n]会有一个缓慢变化的趋势项,period jitter会把它如实记录下来。这一点和cycle-to-cycle正好相反,后面会讲到。
3.2 cycle-to-cycle jitter是period的一阶差分,天然带高通
周期间抖动(cycle-to-cycle jitter)的定义是相邻两个周期的差值:
J_cc[n] = T[n+1] − T[n]
注意这个式子和period jitter的关系。如果把period jitter序列记为p[n] = T[n] − T0,那么:
J_cc[n] = (T[n+1] − T0) − (T[n] − T0) = p[n+1] − p[n]
也就是说,cycle-to-cycle jitter就是period jitter的一阶差分。这个观察极其重要,因为它决定了cycle-to-cycle的频域特性:一阶差分在频域上等效于乘以(1 − z⁻¹),其幅度响应是2|sin(πf/f0)|。这是一个高通形状的加权——低频分量被压制,高频分量被放大,在f0/2(奈奎斯特)处放大到最大,增益为2。
这解释了一个常被问到的问题:为什么温度变化导致时钟频率缓慢漂移时,cycle-to-cycle jitter几乎测不出来变化?因为温漂是低频的,被那个高通因子压下去了。反过来,如果PLL环路带宽附近有噪声峰,cycle-to-cycle会把它们放大得很明显。同一个抖动物理源,在这两个指标上的表现可能差好几倍,这就是为什么不能拿cycle-to-cycle的数字去反推眼图。
3.3 TIE才是眼图和误码率真正关心的量
时间间隔误差(Time Interval Error,TIE)是把实测时钟的每个上升沿时刻,减去理想时钟在对应位置的时刻:
TIE[n] = t_edge[n] − n×T0
它本质上是相位误差随时间的变化序列,单位还是秒。TIE和period的关系是:TIE的差分就是period jitter的偏差。反过来period jitter的累积和(去掉均值)就是TIE。
为什么说TIE才是眼图关心量?因为接收端采样时,真正影响判决的是采样时刻相对理想位置的偏移。在一个长序列里,各个周期的抖动会累积,TIE能看到这种累积效应,而period jitter只看单周期是看不到的。所以做眼图、算BER、做链路预算时用的都是TIE。示波器上那个"TIE histogram"直方图,就是干这个用的。
3.4 三者之间的换算关系
明白了差分和累积关系,换算就不难。对一个零均值的平稳随机过程,如果period jitter是白噪声、方差为σ_p²,那么:
- cycle-to-cycle jitter的方差:σ_cc² = 2σ_p²,即σ_cc = √2 × σ_p
- TIE在N个周期上的累积方差:σ_TIE²(N) ≈ N × σ_p²(白噪声情况下线性增长)
这两个关系是快速估算的利器。但要注意它们的前提是"白噪声、无相关"。实际时钟里往往存在1/f噪声或者周期性分量,这时候√2关系会偏,累积也不是严格线性。下一章我会专门把√2这个关系掰开讲。
提示:很多时钟芯片手册同时给出period jitter和cycle-to-cycle jitter的RMS值,如果你发现后者约等于前者的1.41倍,那基本可以判断这颗时钟的抖动以宽带白噪声为主;如果比值明显偏离1.41,说明存在相关性较强的分量,值得进一步查。
4. cycle-to-cycle jitter:为什么它放大高频噪声却对温漂视而不见
4.1 从差分运算看频谱加权
上一章给出J_cc是p[n]的一阶差分。用z变换写出来,差分滤波器是H(z) = 1 − z⁻¹,频率响应幅度为:
|H(f)| = 2|sin(πf/f0)|
其中f0是时钟频率。这个式子把cycle-to-cycle的"性格"完全暴露了:在直流附近增益趋近于0,在f0/2处增益为2。换句话说,它是一台高通滤波器,对低频抖动不敏感,对接近奈奎斯特频率的抖动有2倍放大。
这带来两个直接后果。第一,像芯片温升、电源缓慢漂移这类低频过程,cycle-to-cycle几乎测不到,你想用这个指标去监控长期稳定度是用错工具了。第二,PLL环路带宽内的噪声峰如果位置偏高,会在这个指标上被显著放大,看上去数字很难看,但实际对链路的影响未必有那么大——因为下游接收端往往对高频抖动有一定容忍,真正致命的是低频累积漂移。不要被cycle-to-cycle那个偏大的数字吓到,先搞清楚它的噪声在什么频段。
4.2 白噪声假设下√2关系的完整推导
假设period jitter序列p[n]是零均值、方差σ_p²、各样本互不相关的白噪声。cycle-to-cycle序列为:
J_cc[n] = p[n+1] − p[n]
求方差:
Var(J_cc) = Var(p[n+1]) + Var(p[n]) − 2Cov(p[n+1], p[n])
因为白噪声互不相关,协方差项为0,两个方差都等于σ_p²,所以:
σ_cc² = σ_p² + σ_p² = 2σ_p²
开根号得到σ_cc = √2 σ_p。这就是那个1.41的来历。推导本身很简单,但它的每一步前提都值得记牢:零均值、平稳、不相关。只要有一条不成立,结果就变。
4.3 什么情况下√2关系会失效
实际时钟里,最常见的失效场景是存在低频相关分量。比如时钟源有1/f噪声,或者PLL里有周期性的参考杂散。这时候相邻周期的抖动是正相关的,协方差项为正,代入方差公式,σ_cc² < 2σ_p²,比值会小于1.41。极端情况下,如果抖动完全是某一低频正弦,相邻周期差值反而很小,cycle-to-cycle会急剧变小,而period jitter并不小。
反过来,如果存在一个接近f0/2的周期性干扰,相邻周期的抖动交替正负,协方差为负,σ_cc² > 2σ_p²,比值会大于1.41。我见过比值达到1.8甚至更夸张的情况,追下去通常是PLL输出上挂了某个开关电源的杂散,频率刚好落在高频段。
所以在实际项目里,我的习惯是同时记录period和cycle-to-cycle的RMS,再算一下比值。这个比值本身就是一个诊断信息,比单看一个数字有用得多。
4.4 实测时的几个具体陷阱
用示波器测cycle-to-cycle jitter时,有几个坑我踩过不止一次。
第一个是垂直噪声转时间噪声。示波器测量边沿位置靠的是电平穿越点,垂直噪声σ_v会被边沿斜率slew_rate换算成时间噪声σ_t = σ_v / slew_rate。如果边沿本身很慢,这个换算因子就很大,测出来的jitter里混进了大量示波器前端的噪声,看着像是时钟的问题,其实是仪器的问题。所以测jitter一定要挑边沿陡的信号看,慢边沿上的数字不要轻信。
第二个是采样率和存储深度不足导致的时间分辨率虚高。现代示波器会用插值算法把边沿位置细化到亚采样点,但插值本身引入的误差会体现在测量结果里。经验上,要保证每个边沿上的采样点足够密集,否则测出来的RMS会虚高。
第三个是触发方式的影响。用边沿触发会周期性地把抖动序列"对齐"到触发点上,人为地压掉低频分量。测cycle-to-cycle时这个问题相对小一些,但如果你同时在看TIE,触发方式会显著改变TIE的形态。常见做法是用一个稳定的参考时钟作为触发源,而不是被测量信号自身触发。
5. peak-to-peak jitter:一个被误用最多的数字
5.1 Pk-Pk随观测时间单调增长,这是物理决定的
peak-to-peak jitter的字面定义很简单:在观测窗口内,所有抖动样本的最大值减最小值。问题在于,只要你观测得够久,总会碰到更极端的样本。对含有RJ成分的信号来说,Pk-Pk会随着观测时间(或者样本数N)以对数速度缓慢增长,永远不收敛。
这就制造了一个非常普遍的误用:A工程师测了10秒得到30ps的Pk-Pk,B工程师测了10分钟得到45ps,两个人拿着各自的数字争论这颗时钟到底好不好,其实谁都没错,只是窗口不同。这种争论在跨部门、跨供应商沟通时特别常见。解决之道只有一个:报告Pk-Pk时必须同时声明观测样本数和目标BER,或者干脆换算成统一的TJ@BER再比较。
有个粗略的经验:在白噪声主导的情况下,样本数每增加10倍,Pk-Pk大约增加0.5σ左右。样本数从1e4增加到1e9,Pk-Pk大概会多出5σ。这个量级足够让两个看似矛盾的测量结果自洽。
5.2 14σ外推的完整来历
前面提过14σ对应约1e-12误码率。把推导补全一下:如果RJ是标准差为σ的高斯,单边尾部超过7σ的概率是Q(7)。标准正态尾函数在x=7处约等于1.28e-12。由于抖动是双向的(可以正偏也可以负偏),总的误码概率约为2×1.28e-12 = 2.56e-12,与1e-12在同一量级,所以行业取7σ作为单边限,峰峰值14σ。若目标BER是1e-15,对应的单边限约7.8σ,峰峰值约15.6σ。这就是"外推系数随BER走"的具体算法。
实务里,很多仪器会直接给出"RJ (σ)"和"DJ (δδ)"两个中间结果,然后你自己代入公式算TJ。比起直接读一个Pk-Pk数字,我更信任这两个中间参数,因为它们的物理含义清晰,受窗口长度的影响也小得多(σ基本稳定,δδ由DJ决定)。
5.3 dual-Dirac模型和它的边界
dual-Dirac模型把DJ近似成两个位于±DJ_δδ/2的狄拉克函数,再和RJ高斯卷积,得到双峰形状的总分布。用这个模型可以从实测的抖动直方图里拟合出σ和δδ,进而外推到任意BER。
这个模型好在简单、可解析、被多数仪器和仿真工具采用。但它有边界:如果DJ本身不是双峰的(比如是一个完整的均匀分布或者三角分布),拟合出来会有偏差。另外,如果抖动里存在明显的周期性结构,直方图会出现多于两个的峰,这时候dual-Dirac就会把额外的结构硬塞进δδ里,导致外推不准。遇到这种情况,我会先看看抖动频谱,确认周期性分量的来源,必要时把它们从直方图里剔除再做拟合。
5.4 报告Pk-Pk时必须附上的三个定语
总结一下,任何一份负责任的Pk-Pk jitter报告都应该带上这三个定语:
- 观测窗口/样本数:比如"100万UI"或"10秒采集"
- 目标BER:比如"@1e-12"
- 测量带宽:比如"20GHz示波器前端,8GHz带宽限制"
缺任何一个,这个数字都是悬空的。我见过太多把不同口径的Pk-Pk放在一起比较的场景,最后发现争论的根源根本不在时钟本身,而在测量条件的差异。把口径统一了,很多所谓的"分歧"立刻消失。
6. 测量链路的噪声底:示波器、相位噪声分析仪与BERT的分工
6.1 示波器法:时间噪声换算与边沿选择
实时示波器是最常用的jitter测量工具,优点是直观、能看波形、能直接给TIE直方图。它的核心测量机制是:在每个上升沿找到穿越判决电平的时刻,记录它与理想时刻的偏差。
这条链路里最大的噪声来源是前端垂直噪声经过边沿斜率换算成的时间噪声。前面给过公式:
σ_t = σ_v / slew_rate
举个例子:示波器前端垂直噪声σ_v = 1mV,边沿斜率是1V/ns,那么换算出来的时间噪声是1ps。如果边沿斜率降到0.1V/ns,同样的垂直噪声就变成10ps的时间噪声。这个数量级已经足以淹没一颗好时钟的真实抖动。所以用示波器测jitter,优先选陡边沿、高幅度的信号点,必要时在信号链上加限幅放大器来提速边沿。
另一个要点是带宽限制。示波器手册标称的带宽越高,引入的噪声可能越大。如果被测时钟的实际抖动带宽只到几百MHz,就没必要开着全带宽测,适度加个低通反而能提高信噪比。这个取舍要根据信号的实际频谱来定。
6.2 相位噪声积分法:从频域反推时间抖动
相位噪声分析仪测的是时钟的相位噪声谱L(f),单位是dBc/Hz。要把它换算成时间抖动,用下面这条积分:
σ_φ² = 2 × ∫[f1 to f2] 10^(L(f)/10) df (单位rad²)
然后时间抖动的RMS为:
σ_t = σ_φ / (2π f0)
这个方法的优势是能精确控制积分带宽,你可以只积分1kHz到10MHz这段,看某一频段的贡献。对定位问题特别有用:如果积分下限设到1kHz以内,抖动量突然增大,那说明低频漂移是主因;如果加大上限才明显增长,那问题在高频。
相位噪声法的短板是它假设抖动是平稳的、线性的,对非平稳的确定性分量(比如数据相关的ISI)不敏感——因为那边的信号是纯载波,没有数据图案。所以它适合测时钟源本身,不适合测带数据的串行链路。
6.3 BERT误码扫描法:最贴近系统真实表现
误比特率测试仪(BERT)的做法是直接对链路做误码扫描,改变采样相位点,找到误码率随相位变化的关系曲线,那个眼图的水平张开度就是抖动信息的直接体现。这是最贴近真实工作的测量方式,因为它把发送端、信道、接收端全都算进去了。
BERT法的缺点也很明显:慢,一次扫描可能要几分钟到几十分钟;而且它给出的是"总效果",没法直接分离是RJ还是DJ、是时钟还是信道引起。所以它更适合作为最终验收手段,而不是排查工具。
6.4 三种方法该怎么选
下面这张表把三条路径的特性摆在一起:
| 方法 | 测量对象 | 优势 | 短板 | 主要输出 |
|---|---|---|---|---|
| 实时示波器 | 波形边沿 | 直观、能分离RJ/DJ | 前端噪声换算、带宽受限 | TIE直方图、RJ σ、TJ |
| 相位噪声分析仪 | 时钟载波 | 频段可控、灵敏度高 | 不适用带数据链路 | L(f)谱、积分RMS |
| BERT | 完整链路 | 贴近真实、结果可信 | 慢、无法分解来源 | BER-相位曲线、眼宽 |
我的实际用法是分层:先用相位噪声分析仪把时钟源本身摸清楚,确认来源;再用示波器在板级测量,看经过走线和连接器之后的劣化;最后用BERT做系统级验收。三层数据对不上,问题基本就锁定在中间某个环节了。
7. 一次参考时钟jitter劣化的完整排查链路
7.1 现象描述与初次测量
回到开头那次调试。现象是主板上的100MHz参考时钟经过PLL倍频后驱动一条高速链路,常温下能跑,进温箱到70度以后误码率明显上升。初步测量:用示波器测PLL的输出时钟,常温下cycle-to-cycle RMS约2.1ps,70度时涨到4.8ps。这个变化幅度不算离谱,但因为经过数倍频,绝对时间抖动被同比例放大,最后落到UI上的占比就相当可观了。
那时候我犯的第一个错,是直接盯着cycle-to-cycle的RMS看。前面讲过这个指标对低频不敏感,而温度引起的漂移恰恰是低频的。所以这个数字其实低估了问题的严重程度。正确的做法应该是同时看TIE和相位噪声谱,特别是低频段。
7.2 先排除探头和地环路
排查jitter问题的第一步永远是确认测到的不是你自己的测量系统。我花了半天做了一件事:换探头、换地线连接方式、把探头的接地弹簧换成短地针。结果发现,光是把长地线换成短地针,测出来的cycle-to-cycle RMS就从4.8ps降到3.6ps。这说明原来有相当一部分抖动是探头地环路引入的。
探头地环路为什么会引入时间噪声?因为长地线形成了一个电感回路,它会耦合板上的磁场、也会把探头的共模电流引到被测点,最终体现在边沿位置的测量误差上。这个教训我记了很久:jitter测量的第一件事,是把探头接法做到最短、最干净,否则后面所有分析都建立在沙子上。
7.3 电源纹波的嫌疑线
排除测量问题后,剩下约3.6ps的cycle-to-cycle RMS和它在高温下的增长就值得深挖了。下一步是看电源。参考时钟芯片的供电来自一颗LDO,我用示波器加上AC耦合测了LDO输出的纹波,发现高温下纹波从约1mVpp涨到了3mVpp,而且频谱上有一个明显的开关频率杂散,恰好在几百kHz附近。
时钟芯片的供电纹波会通过内部的振荡器和缓冲级调制到输出相位上,形成周期性抖动(PJ)。这个PJ是确定性抖动,理论上是可以被消除的。我用相位噪声分析仪测了时钟的相位噪声谱,果然在对应频点看到一个凸起的杂散峰,高温下这个峰比常温高了约8dB。至此,问题链路基本清晰:LDO高温性能劣化 → 输出纹波变大 → 通过供电调制到时钟相位 → 周期性抖动增大 → 倍频后放大 → 眼图闭合 → 误码率上升。
7.4 定位、修复与验证
定位完成后,修复手段有三条。第一,换LDO,选一颗高温下纹波特性更稳定的型号;第二,在LDO输出靠近时钟芯片的位置增加合适的高频去耦,用小容值MLCC并联降低高频阻抗;第三,在时钟芯片的供电入口加一级RC或者磁珠滤波,把开关杂散进一步压低。
我三条都做了,效果很明显。换LDO后高温纹波降到1.2mVpp,加去耦和滤波后相位噪声谱上的杂散峰降低了约12dB。复测cycle-to-cycle RMS:常温2.0ps,高温2.3ps,温漂从原来的翻倍多压到了15%以内。进温箱跑链路,误码率降到1e-13以下,连续运行48小时没有再出现零星报错。
整件事最值得记的经验是:最初那个cycle-to-cycle数字不但低估了问题,还差点把我引到错误的方向。如果一开始就同时看相位噪声谱和TIE,能省下至少一天时间。后来我在自己的排查清单里加了一条硬性规定——测时钟jitter,必须同时给出三种数据:period RMS、cycle-to-cycle RMS、相位噪声谱,缺一不可。
8. 把jitter当预算花:链路设计的取舍经验
8.1 jitter budget的拆解方式
做链路预算时,jitter是一笔要花出去的钱。总预算由接收端的抖动容限决定,然后要分配给发送端、信道、接收端的时钟恢复电路。分配的依据是各部分对总抖动的贡献。
一个典型的分配思路是这样的:
- 发送端时钟源:占预算的30%到40%,这部分是源头,越干净越好
- 发送端驱动器引入的DJ:占10%到15%
- 信道引起的ISI和DJ:占15%到25%,取决于走线长度和损耗
- 接收端时钟恢复的抖动传递:占20%到30%,包含CDR自身的抖动生成和传递特性
这个比例不是固定的,但核心逻辑是:抖动的贡献要按功率(方差)来叠加,不是按峰峰值直接相加。RJ分量之间用平方和开根号,DJ分量之间用线性相加,最后再按dual-Dirac合成TJ。很多人在做预算时把所有峰峰值直接相加,结果算出来的总预算大得离谱,只能盲目选更贵的器件。
8.2 几个我常用的经验值
做了这些年,攒了一些快速估算的参考值,分享出来供参考,但要注意具体项目还得实测。
时钟源的RMS period jitter,普通晶振大概在1到5ps量级,好的差分时钟芯片做到0.1到0.5ps,超低抖动专用时钟能到几十fs。PLL倍频时,输出抖动大致按输入抖动的平方加上PLL自身抖动的平方再开根号,同时乘以倍频比的影响。如果PLL环路带宽较窄,输入的高频抖动会被滤掉一部分,这一点在预算时可以利用。
去耦电容的选型上,我习惯在时钟芯片的每个供电脚旁边放一颗0.1μF加一颗小容值(比如100pF)的MLCC,位置必须紧贴引脚,回流路径尽量短。这个细节对高频抖动的影响比我预想的要大,实测过好几次,光是优化去耦布局就能把相位噪声谱上几MHz附近的底噪压低3到5dB。
8.3 关于"够用就好"这件事
最后说点个人体会。jitter这件事很容易陷入军备竞赛——看到别人用0.1ps的时钟,自己也想上。但我实际做下来,链路能不能稳定工作,取决于jitter在UI里占的比例,而不是绝对数值。一条UI很宽的低速链路,用普通时钟完全够;一条UI只有几十ps的高速链路,才值得为超低抖动时钟付出成本。
判断是否需要升级时钟,我一般会先把当前链路的抖动预算列出来,看看时钟那部分占了多少。如果占比不到20%,那先动时钟的收益有限,不如去优化信道或者去耦。反过来,如果时钟占比超过一半,那这颗时钟确实值得换。这个判断逻辑帮我省过不少不必要的器件升级费用。
还有一点:jitter测量这件事本身也会随着器件变好而变难。当一颗时钟的抖动已经降到示波器噪声底以下时,你测到的其实是仪器,不是器件。这是我踩过的一个坑——曾经花了很久去"优化"一颗时钟的抖动,最后发现测出来的数字根本没变,因为早就被测试系统的噪声底盖住了。从那以后,我在评估低抖动器件时,一定会先用一个已知抖动的参考源去标定整个测量链路的噪声底,确认自己有没有测到地板,然后再开始做优化。这个前置动作,现在成了我所有jitter相关工作的固定第一步。