前言
上一话把五种抖动指标都过了一遍------JeeJ_{ee}Jee、JcJ_cJc、Jc(k)J_c(k)Jc(k)、JccJ_{cc}Jcc、Jcc(k)J_{cc}(k)Jcc(k)------以及它们在时域上的差分层次关系。如果你还没看过第一话,建议先补一下,第二话会直接用这些概念。
这一话讲两件事:
- 第三部分:两类电路与测量方法 ------ 自主电路(VCO)和被驱动电路(分频器、触发器)在抖动测量上有本质区别,搞清楚这个区别,才能在 SpectreRF 里选对仿真路径、看懂仿真结果。
- 第四部分:抖动的计算方法 ------ SpectreRF 输出的是频域 PSD,不是时域序列,第一话定义的那些差分运算需要转换到频域来执行。这部分给出完整的换算公式链,以及 RMS 抖动转换为峰峰值的方法。
现在开始第二话的内容。
第三部分:两类电路与测量方法
3.1 同步抖动 vs 累积抖动
3.1.1 同步抖动(Synchronous Jitter)------被驱动电路
被外部周期信号或时钟驱动的电路,表现出同步抖动。
由于系统中存在理想的参考输入边沿,可以直接测量绝对抖动 。JeeJ_{ee}Jee(边沿到边沿抖动)正是为此类系统中"输入参考抖动"所保留的专用术语,测量的是理想输入信号与含噪声输出信号之间的时间差。
JcJ_cJc(周期抖动)和 JccJ_{cc}Jcc(逐周期抖动)也可用于被驱动系统,但含义上有所不同------这两个指标的起点和终点都是含噪声的输出信号,而非理想输入。即便如此,输出的每一次边沿跳变,仍然是由理想周期输入信号的跳变直接触发的。
3.1.2 累积抖动(Accumulating Jitter)------自主电路
对于没有理想参考跳变的自主电路(如 VCO),只能使用自参考的抖动指标。这类抖动称为累积抖动。
累积的本质是下一个周期的跳变是上一个周期输出的结果,因此抖动的方差从周期到周期不断叠加。
被驱动电路每个输出边沿都被理想输入"重置",误差不累积;而自主电路每个输出边沿来自上一个输出,误差持续叠加
3.1.3 SpectreRF 中的对应仿真方法
| 被驱动电路(同步抖动) | 自主电路(累积抖动) | |
|---|---|---|
| 典型例子 | 触发器、频率分频器 | VCO、振荡器 |
| 可用指标 | JeeJ_{ee}Jee、JcJ_cJc、JccJ_{cc}Jcc | JcJ_cJc、JccJ_{cc}Jcc(无法用 JeeJ_{ee}Jee) |
| SpectreRF 仿真组合 | PSS + PNoise(需在 PNoise 表单中设置阈值过零事件) | PSS + PNoise(通过相位噪声积分) |
| PNoise 内部计算路径 | Strobed/sampled-noise 路径:在过零时刻采样瞬时噪声,经斜率换算为时间抖动 | 相位噪声路径:PSD 积分换算 |
| 斜率计算 | 工具在阈值过零点处自动计算 | 从相位噪声换算 |
| 结果呈现 | Direct Plot 表单 | Direct Plot 表单 |
对于被驱动电路,在 PNoise 表单中设置阈值过零事件后,工具会自动协调后续流程------向 PSS 请求过零时刻、在这些时间点上走 sampled/strobed 路径计算噪声、同时计算斜率------整个仿真在一次运行中完成,无需用户手动查找过零时刻。用户侧操作入口仍然是 PSS + PNoise,Strobed PNoise 是 PNoise 在同步抖动测量中内部采用的计算路径,而非独立的分析项。
对于自主电路,累积抖动通过 SpectreRF 的相位噪声测量来计算。相位噪声与抖动之间的换算关系见第四部分。
第四部分:抖动的计算方法
4.1 从功率谱密度计算抖动
4.1.1 为什么需要频域计算?
第一话第 2.6.1 节从时域角度定义了各抖动指标:对过零时刻序列 {ti}\{t_i\}{ti} 做不同次数的差分、再取标准差。但 SpectreRF 仿真直接输出的是频域的功率谱密度(PSD) ,无法直接得到 {ti}\{t_i\}{ti}。本节给出时域差分运算在频域的等价表达,使各指标可以从 PSD 直接积分计算得出。
两类仿真对应两条路径:
- 被驱动电路 :在 PNoise 表单中设置阈值过零事件后,PNoise 内部走 sampled/strobed 路径,在过零时刻采样瞬时噪声 PSD Sn(f)S_n(f)Sn(f),经斜率换算得到时间抖动 PSD Sj(f)S_j(f)Sj(f)
- 自主电路 :PNoise 输出相位噪声 PSD Sϕ(f)S_\phi(f)Sϕ(f),经公式 1-20 换算得到 Sj(f)S_j(f)Sj(f)
两条路径最终都汇入同一组积分公式。
4.1.2 绝对抖动 J
Je2=∫−fc/2fc/2Sj(f) df=2(ddtvideal(tc))2∫0fc/2Sn(f) df(1-17)J_e^2 = \int_{-f_c/2}^{f_c/2} S_j(f)\,df = \frac{2}{\left(\dfrac{d}{dt}v_{ideal}(t_c)\right)^2} \int_0^{f_c/2} S_n(f)\,df \tag{1-17}Je2=∫−fc/2fc/2Sj(f)df=(dtdvideal(tc))22∫0fc/2Sn(f)df(1-17)
各项含义:
- Sj(f)S_j(f)Sj(f):时间抖动的功率谱密度,单位 s2/Hz\text{s}^2/\text{Hz}s2/Hz
- Sn(f)S_n(f)Sn(f):Pnoise 仿真输出的采样噪声瞬时功率谱
- 分母的斜率项:与公式 1-4 一致,将电压噪声 PSD 换算为时间抖动 PSD
- 对 PSD 在频率上积分得到抖动方差 J2J^2J2,开根号即 RMS 抖动
积分下限的选取: 下限的选取受两个因素共同约束:一方面,低频处相位噪声随频率降低而增大(1/f 类噪声),但这部分噪声只在极长观测时间内才有实质影响,对短期抖动贡献极小;另一方面,flicker 噪声模型在极低频率处的有效性存在范围限制。实际下限由系统带宽和 flicker 噪声模型的有效范围共同决定。
4.1.3 Jc 和 Jcc 的频域计算
从时间抖动 PSD Sj(f)S_j(f)Sj(f) 出发:
Jc2(kTc)=4∫flowerfupperSj(f)sin2(πkfTc) df(1-18)J_c^2(kT_c) = 4\int_{f_{lower}}^{f_{upper}} S_j(f)\sin^2(\pi k f T_c)\,df \tag{1-18}Jc2(kTc)=4∫flowerfupperSj(f)sin2(πkfTc)df(1-18)
Jcc2(kTc)=16∫flowerfupperSj(f)sin4(πkfTc) df(1-19)J_{cc}^2(kT_c) = 16\int_{f_{lower}}^{f_{upper}} S_j(f)\sin^4(\pi k f T_c)\,df \tag{1-19}Jcc2(kTc)=16∫flowerfupperSj(f)sin4(πkfTc)df(1-19)
差分运算在频域对应乘以一个加权函数:
- sin2(πkfTc)\sin^2(\pi k f T_c)sin2(πkfTc):在 f=0f=0f=0 处值为零,低频权重趋近于零,随频率升高权重增大------这是一个高通特性,与 Jc 对低频漂移不敏感的性质一致
- sin4(πkfTc)\sin^4(\pi k f T_c)sin4(πkfTc):是 sin2\sin^2sin2 的平方,高通特性更强,对应 Jcc 更"局部"的特性
这与第一话 2.4 节"每做一次差分去掉一层低频"的结论在频域上完全对应。
4.1.4 相位噪声转换为时间抖动 PSD
Sj(f)=Sϕ(f)(2πfc)2(1-20)S_j(f) = \frac{S_\phi(f)}{(2\pi f_c)^2} \tag{1-20}Sj(f)=(2πfc)2Sϕ(f)(1-20)
- Sϕ(f)S_\phi(f)Sϕ(f):SpectreRF PNoise 分析输出的相位噪声 PSD,单位 rad2/Hz\text{rad}^2/\text{Hz}rad2/Hz
- (2πfc)2(2\pi f_c)^2(2πfc)2:将相位量纲换算为时间量纲的因子
- 此公式是连接相位噪声仿真与抖动计算的桥梁,得到 Sj(f)S_j(f)Sj(f) 后代入公式 1-17 至 1-19 即可算出各抖动指标
4.1.5 整体计算流程
自主电路(相位噪声路径):
Sϕ(f)→公式 1-20Sj(f)→公式 1-17 至 1-19,选定积分上下限Jrms→BER 查表Jpp→单位换算s / UI / ppmS_\phi(f) \xrightarrow{\text{公式 1-20}} S_j(f) \xrightarrow{\text{公式 1-17 至 1-19,选定积分上下限}} J_{rms} \xrightarrow{\text{BER 查表}} J_{pp} \xrightarrow{\text{单位换算}} \text{s / UI / ppm}Sϕ(f)公式 1-20 Sj(f)公式 1-17 至 1-19,选定积分上下限 JrmsBER 查表 Jpp单位换算 s / UI / ppm
被驱动电路(sampled/strobed 路径):
Sn(f)→斜率换算(公式 1-17 分母项)Sj(f)→公式 1-17 至 1-19,选定积分上下限Jrms→BER 查表Jpp→单位换算s / UI / ppmS_n(f) \xrightarrow{\text{斜率换算(公式 1-17 分母项)}} S_j(f) \xrightarrow{\text{公式 1-17 至 1-19,选定积分上下限}} J_{rms} \xrightarrow{\text{BER 查表}} J_{pp} \xrightarrow{\text{单位换算}} \text{s / UI / ppm}Sn(f)斜率换算(公式 1-17 分母项) Sj(f)公式 1-17 至 1-19,选定积分上下限 JrmsBER 查表 Jpp单位换算 s / UI / ppm
两条路径从 Sj(f)S_j(f)Sj(f) 起汇合,后续积分和换算步骤完全相同。
4.2 RMS 抖动转换为峰峰值抖动
4.2.1 峰峰值抖动的定义与物理含义
峰峰值抖动的定义是:在大量观测中,最早出现的边沿与最晚出现的边沿之间的时间跨度。
4.2.2 为什么随机抖动的峰峰值没有确定答案?
边沿抖动 δti\delta t_iδti 服从均值为 0、标准差为 σ=Jrms\sigma = J_{rms}σ=Jrms 的高斯分布。把大量观测到的 δti\delta t_iδti 值画成直方图,就得到钟形曲线,横轴是边沿偏离理想位置的时间量,纵轴是该偏移量出现的概率密度(见上图面板 B)。
高斯分布的关键性质是:无论取多大的 ∣δt∣|\delta t|∣δt∣,其概率始终大于零。因此观测时间越长,就越可能碰到更远的尾部事件,峰峰值会持续增长,没有固定上界:
- 观测 10³ 次边沿 → 最大偏移约 3σ
- 观测 10⁶ 次边沿 → 最大偏移约 5σ
- 观测 10¹² 次边沿 → 最大偏移约 7σ
- 观测无穷次 → 最大偏移趋向无穷大
4.2.3 BER 的作用:划定一条概率门槛
既然随机抖动理论上无界,工程上的解决方法是:不要求"绝对不超过",而是接受"极低概率超过"。
用来界定这个概率的门槛,正是通信系统中的 BER(Bit Error Rate,误码率) 。在串行数据链路中,BER 描述的是每发送一个比特发生判决错误的概率。抖动与 BER 之间有直接的物理联系------随机抖动的高斯尾部超出时序裕量边界的概率,就对应着采样时刻因偏移过大而产生判决错误的概率。因此,以 BER 作为概率门槛来截断抖动分布,与系统的误码性能目标使用的是同一套语言。BER 目标通常由系统规格规定,例如 PCIe 要求 BER < 10−1210^{-12}10−12。
BER 的本质含义:
当一个极端边沿事件出现的概率比 BER 还小,就忽略它------因为即使它发生造成了误码,也已经在允许的误码预算之内。
这就在高斯分布上划出了一条截断线,截断线以外的面积(概率)恰好等于 BER(见上图面板 B 红色区域)。
因此,峰峰值抖动实际上是在回答这样一个设计问题:
"我需要在时序上留多少裕量,才能保证误码率不超过 BER?"
不指定 BER 的峰峰值没有意义,因为问题本身是不完整的------没有说明允许多少误码,就无法确定需要覆盖多远的尾部。
概率门槛的对应关系:
- 概率 > BER → 这类边沿事件必须被设计容纳,计入峰峰值
- 概率 < BER → 这类边沿事件即使发生也在允许的误码预算内,忽略
Jcc 峰峰值的特殊性:
Jcc 描述的是时钟自身相邻周期的长度变化,与某个具体采样时刻发生判决错误之间的联系比总抖动更加间接,不像总抖动那样与 BER 有直接的物理对应关系。这也解释了为什么时钟芯片 datasheet 中的 Jcc 峰峰值通常不标注 BER,而是直接给出有限样本观测窗口内的实测最大最小值之差。
4.2.4 转换方法
假设抖动服从高斯分布,给定 BER 限制后,可以找到对应的缩放系数,将 RMS 值转换为峰峰值范围:
Jpp=kpp(BER)×JrmsJ_{pp} = k_{pp}(BER) \times J_{rms}Jpp=kpp(BER)×Jrms
SpectreRF 内置了一张查找表,包含最典型 BER 值对应的缩放系数,用户选择 BER 后可直接读取峰峰值结果。
4.2.5 适用条件
此转换仅在噪声为纯高斯分布时精确。若电路中存在显著的 flicker 噪声,分布尾部会偏离高斯,转换结果的精度会降低。
4.3 长期抖动的使用限制
长期抖动(大 k 值的 Jc(k)J_c(k)Jc(k))在 SpectreRF 中使用价值有限,原因来自小信号近似的固有限制:
SpectreRF 的噪声分析基于小信号假设------噪声足够小,不会显著改变电路工作点。但对于大 k 值的情形,低频噪声积累后幅度可能变大,导致:
- 含噪声的实际信号在过零点处不再"光滑"
- 电路工作点受噪声影响,不能再用无抖动信号的斜率来近似过零点行为
- 小信号假设失效
结论:长期抖动在 SpectreRF 中使用价值有限,不宜用于严格的设计验证。
4.4 SpectreRF 中的抖动单位
SpectreRF 支持三种抖动单位:
| 单位 | 说明 |
|---|---|
| 秒(s) | 默认单位,绝对时间量 |
| UI(Unit Interval) | 归一化单位,UI 可以是时钟周期或其他特征时间周期 |
| ppm(百万分之一) | 相对频率单位 |
使用绝对单位(秒)时,无法直观看出抖动对系统时序的相对影响;使用 UI 或 ppm 等相对单位,则可以将抖动与系统的周期特性联系起来进行评估。
感谢阅读,欢迎关注⌈南贝塔⌋。第三话:仿真案例,待续......