1. 抖动基础概念
说起抖动,很多人第一反应就是“信号边儿在晃”,但真要问它怎么定义、怎么测,又容易说不清楚。我做高速串行接口那几年,几乎天天跟抖动打交道。每次调试眼图,只要看到眼开度不够,第一反应就是“是不是抖动超标了”。说白了,抖动就是数字信号在理想跳变时刻上出现的随机或确定性的偏移。它没法完全消除,只能控制到系统能容忍的范围。
抖动的定义
抖动的标准定义其实挺简单:信号的实际跳变时间相对于理想跳变时间的偏差。理想的时钟是每隔T秒跳变一次,但实际因为热噪声、电源波动、串扰等原因,每个边沿都会提前或滞后一点。这个偏差就是抖动。
我记得刚入行时,带我的老工程师说:“你就把抖动当作信号的不守时。”这个比喻我一直用到现在。为什么在意它?因为高速收发器要在极短时间里准确采样数据,一旦抖动大到让采样点落在眼图边界之外,就会产生误码。
时域与频域表征
表征抖动有两种视角,就像看一个人——看他的行为(时域)和看他的频谱(频域)。这两种方法各有各的用途。
时域表征
时域里我们直接测每个边沿的偏移量,然后做统计。最常用的指标是峰峰值抖动(Jitterpp)和均方根抖动(JitterRMS)。峰峰值告诉你最坏情况偏移了多少,RMS告诉你抖动的能量大小。眼图就是时域表征的最直观工具——眼高、眼宽、眼开度,全跟抖动有关。
我这里有个经验:看眼图时别光盯着眼睛睁开多大,更要看“眼睛”边缘的模糊层。那个模糊层的厚度就反映了抖动分布。我曾经调试一块25Gbps的板子,眼图看起来还不错,但RMS抖动比规格高了0.5ps,结果误码率一直下不去。后来加了时钟恢复环路里的均衡才搞定。
频域表征
频域里抖动表现为相位噪声。你把时钟信号想象成一个正弦波,抖动的效果就是它的相位在随机或周期性变化。频谱上看到的是载波旁边的噪声裙边。相位噪声曲线(dBc/Hz vs 频偏)能告诉我们抖动的来源:近端噪声往往来自电源和锁相环,远端噪声来自随机热噪声。
你想想看,为什么要费劲转到频域?因为时域里随机抖动和确定性抖动混在一起,不好分离。而频域里,不同频段的噪声可以对应不同的物理机制。这为后续做PJ分离(周期性抖动分离)打下了基础。
| 表征方式 | 常用指标 | 直观工具 | 适合分析 |
|---|---|---|---|
| 时域 | Jitterpp, JitterRMS, TIE | 眼图、抖动直方图 | 系统误码率、眼图裕量 |
| 频域 | 相位噪声 (dBc/Hz) | 频谱仪、相噪测试仪 | 抖动来源诊断、PJ分离 |
抖动对高速信号的影响
抖动的直接后果就是误码率(BER)上升。高速信号每秒传输几十亿比特,每个比特的采样窗口只有几十ps。抖动一上来,采样点就容易跑偏。严重时眼图完全闭合,数据根本读不出来。
我踩过一个坑:某次FPGA与光模块对接,两边的时钟源是独立的,结果产生了约20ps的峰峰值抖动。眼图看起来已经半闭了,FPGA的GTH接收端狂报误码。当时我排查了电源、布线、阻抗匹配,最后发现是板上两个PLL的参考时钟频率差导致周期性抖动(PJ)。换成同源时钟后,眼图立刻打开。
除了误码,抖动还会导致时钟抖动传递。一个电路的输出抖动会沿着链路传递到下级,造成级联恶化。所以高速链路设计里,每个模块都要有抖动预算分配。比如CTLE(连续时间线性均衡)可以抑制低频抖动,但高频抖动就很难滤除。
抖动的危害还与数据类型有关。长连1或长连0(无跳变)会让时钟恢复电路失去参考边沿,抖动积累尤其严重。这个就是CDR(时钟数据恢复)的痛点。我设计过一款CDR芯片,专门针对这种模式相关的抖动做了PJ补偿。
本章知识结构
这个图把本章三个核心概念串起来了。左边时域负责测幅值,右边频域负责看来源,下面则是最终影响。我建议你脑子里记下这个三角关系,后面讲PJ分离时,时域和频域视角会来回切换。