1. 抖动的定义与分类:理解时序抖动、周期抖动、相邻周期抖动、抖动,以及随机抖动(RJ)和确定性抖动(DJ)的基本概念

做高速数字设计的朋友,都绕不开一个词——抖动。说白了,抖动就是信号在时间轴上的“晃悠”。一个理想的时钟,它的每个上升沿都应该落在精确的时间点上。但现实中,没这么完美。

我刚开始做SI仿真的那会儿,总以为只要时序裕量留够,抖动就不是大问题。直到有一次调试一块10Gbps的SerDes链路,眼图闭合得像一条细线,怎么调预加重都没用。后来才发现,是电源噪声引起的确定性抖动把时序裕量吃光了。嗯,从那以后,我再也不敢小看抖动分类这件事了。

抖动的基本定义

抖动的标准定义是:数字信号在特定电平阈值上的实际跳变时刻,相对于其理想跳变时刻的偏差。这个偏差的单位是秒或皮秒,通常用峰峰值或均方根值来度量。你想想看,我们传数据,本质上就是靠信号边沿的位置来传递信息。边沿抖了,数据就可能读错。

四大基础抖动概念

理解和测量抖动,首先得过“四种抖动”这一关。我个人的习惯是把它们放在一起对比着记,你会发现它们之间的差异很明显。

抖动类型 测量对象 典型用途
时序抖动 每个边沿相对于理想时钟的偏差 衡量总体时序质量
周期抖动 每个周期长度的变化 PLL性能评估
相邻周期抖动 相邻两个周期的长度差 高速串行链路抖动预算
抖动 边沿相对于理想参考时间的累计偏差 系统同步时序分析

时序抖动

最直观的抖动。拿一个理想时钟和被测时钟的边沿做对比,每一次实际边沿比理想边沿超前或滞后的值,就是时序抖动。它的意义在于告诉我们,一个时钟信号的边沿到底“晃”得多厉害。如果用示波器的余辉模式看,抖动的范围就是眼图水平张开的损失部分。

一句话总结:时序抖动是每个边沿“跑偏”的距离,是其他几种抖动的计算基础。

周期抖动

把每个时钟周期的实际长度测出来,看看它们之间的变化。周期抖动的测量不需要理想参考时钟,它只关心周期ΔT = Tn - T理想的分布。这对PLL的设计特别重要——你想想看,如果PLL输出时钟的周期一会儿长一会儿短,那后面的逻辑时序就很难保证。

小经验:我在评估片上PLL的抖动性能时,优先看周期抖动的RMS值。如果RMS值超过周期的1%,那这路时钟大概率会出问题。

相邻周期抖动

抓住相邻两个周期的差值,计算方法很简单:JCC = |Tn - Tn-1|。这个指标对DDR接口特别敏感。为什么?因为DDR双沿采样,相邻两个数据眼之间的时间窗口就是由相邻周期抖动来决定的。

我记得有一次项目做DDR3调试,系统跑在1333MT/s时偶尔冒错,定位了好久。最后抓出相邻周期抖动一看,有一组数据对应时钟的相邻周期差达到了80ps,远超预算。说白了,就是时钟这颗晶振的电源纹波出了问题。

抖动

抖动是累计的。它不是看单个边沿的偏差,而是看多个周期下来,边沿相对于理想参考时间的总飘移量。简单讲就是:第一个边沿抖了5ps,第二个边沿抖了-3ps,第三个边沿抖了7ps……那么到第N个边沿时,累计的偏差就是这些值的代数和。

抖动的累积效应在长距离串行链路中很致命。50个UI累计下来,边沿可能偏出半个UI,你会直接收到误码。这个指标在系统同步设计时必须严格约束。

两大抖动成分:RJ与DJ

从统计分析的角度,我习惯把所有抖动拆成两大家族:随机抖动(RJ)和确定性抖动(DJ)。为什么要拆?因为它们的来源不同,应对手段也完全不同。

  • 随机抖动(RJ):由热噪声、散粒噪声等随机过程产生。它的概率分布是高斯(正态)分布,理论上无界。你可以减小它,但不可能消除它。RJ的存在给时序裕量带来了一个“拖尾效应”——只要统计时间足够长,总会遇到一个“特别大”的抖动值。
  • 确定性抖动(DJ):有稳定规律或固定模式的抖动,它的分布是有界的。常见来源包括:电源噪声、串扰、非理想阻抗匹配、EMI等。这些抖动通常可预测、可测量、可优化。

测量时,RJ常用RMS(均方根值)来表征,DJ常用峰峰值来表征。别搞混了——如果你用峰峰值去描述RJ,那测量结果会随着观测时间的增长而越来越大,因为它理论上无界。

避坑指南:我曾经在整理一份串行链路抖动报告时,看到某器件厂商把RJ和DJ加成了一个总值,声称总抖动只有XX ps。仔细一查,他们把RJ的RMS值直接当成了峰值用了,这在实际工程中会严重低估抖动裕量,坑你没商量。

本章知识体系

下面这张图汇总了本章的核心知识点结构,你可以把它当作后续章节的“地图”——每当我们讨论具体分离方法时,都会回到这张图上找对应位置。

抖动知识体系结构图 抖动 (Jitter) 定义 分类 定义核心 边沿偏离理想时刻 单位:ps / ns 四种基础抖动 两种统计成分 时序抖动 周期抖动 相邻周期抖动 抖动 RJ 随机抖动 DJ 确定性抖动 核心区分:RJ无界/高斯分布 → 用RMS描述;DJ有界/确定模式 → 用峰峰值描述 实际工程中,RJ + DJ 的分离是抖动预算分配和SI仿真的第一步
核心区别记忆:四种基础抖动解决的是“在哪个维度测量”的问题;RJ和DJ解决的是“抖动来源是什么性质”的问题。两者结合,才能真正做对抖动预算和分离。

一个容易混淆的点

新手经常问:周期抖动的RMS和时序抖动的RMS,哪个大?答案是:周期抖动的RMS通常小于时序抖动的RMS。因为周期抖动看的是周期与周期之间的差异,而时序抖动包含了低频漂移(比如温度变化引起的时钟边沿长周期移动)。低频分量会被周期抖动“差分”掉——你想想看,一个缓慢漂移的时钟,相邻周期几乎不受影响。

实战技巧:在做抖动分析时,如果你只关心PLL的短期行为,看周期抖动就够了;如果你要做系统级同步时序分析,必须用抖动或时序抖动。

讲在最后