Jitter 数值方法与 Matlab 仿真
仿真 jitter 需要输入指定的相位噪声谱→功率谱密度到时间序列的转换。时域仿真(Transient)直接生成含 jitter 的电压波形,频域方法(相位噪声叠加)更高效。Tail Fitting 算法是实现 RJ/DJ 分解的工业化标准方法。
前后关系
前置知识:
- Jitter与Phase Noise关系 — 相位噪声谱密度
- Jitter统计分析与RJ-DJ分解 — RJ/DJ 统计概念
- Jitter与Phase Noise高级统计概念 — Allan 偏差、置信区间
本书内部链条:
- Ch.10 + App.B(本文)提供可执行的 Matlab 代码,应用于全书所有章节的仿真验证
- 推荐与 Ch.6-8 的应用章节配合使用
方法概述
Jitter 数值模拟有三种主要方法:
| 方法 | 原理 | 适用场景 | 复杂度 |
|---|---|---|---|
| 时域叠加 | 在电压波形过零点叠加随机偏移 | 行为级仿真 | 低 |
| 相位噪声叠加 | 通过相位调制将相位噪声谱加载到载波 | 系统级仿真 | 中 |
| 积分法 | 从相位噪声 PSD 积分得到各种 jitter 统计量 | 分析/预算 | 低 |
1. 生成指定相位噪声谱的 Jitter 样本
平坦相位噪声谱(白相位噪声)
- 相位噪声谱:(常数)
- 方法:生成均值为零、方差 的高斯序列
- Matlab:
a = sigma * randn(N, 1);
低通/高通/带通相位噪声谱
- 将白噪声通过对应频率响应的 IIR/FIR 滤波器
- 低通:
- 高通:
- 带通:低通 + 单边带搬移
1/f² 相位噪声谱
振荡器白噪声区域产生 (对应于频率白噪声):
Matlab 实现:
- 在频域构造幅度谱
- 加随机相位
- IFFT → 时域序列
1/f 和 1/f³ 相位噪声谱
1/f 闪烁相位噪声:
- 频域幅度谱
- 构造方法:
- 生成 Lenaic 序列法:对相邻频点相关进行特殊处理
- 或使用 FM → PM 关系间接生成
1/f³ 相位噪声(闪烁噪声上变区域):
- 幅度谱
- 实现与 1/f 类似,但频谱斜率更陡
复合相位噪声谱
实际场景包含多个噪声源:
实现步骤:
- 分别生成各成分的时域序列
- 线性叠加
- 添加确定性杂散(正弦抖动)
2. 从时间向量计算 Jitter
从过零点计算绝对 jitter
- 定位电压波形过零点: 且
- 通过插值提高时间分辨率
- 计算
计算各类 jitter
% a: absolute jitter vector
% N: number of periods for N-period jitter
p = diff(a); % period jitter
pN = a(1+N:end) - a(1:end-N); % N-period jitter
cc = diff(p); % cycle-to-cycle jitter从 jitter 计算 RMS 和峰-峰值
mu = mean(a);
sigma = std(a); % RMS
pp = max(a) - min(a); % peak-peak (sample-based)
% Peak-peak at target BER (assuming Gaussian):
Q = 7.03; % BER = 1e-12
pp_ber = 2 * Q * sigma;3. 从 Jitter 样本计算相位噪声图
周期图法(Periodogram):
N = length(a);
A = fft(a - mean(a));
S = (abs(A).^2) / (N * fs); % Power spectral density
L_dB = 10*log10(S/2); % SSB phase noise [dBc/Hz]
f = (0:N/2-1)' * fs / N;
% Convert to dBc/Hz
L_dBc = L_dB + 10*log10(1000); % If a is in seconds
plot(f, L_dBc);注意事项:
- 需要足够的样本量()
- 加窗(Hanning/Blackman)减少频谱泄露
- 多段平均改善估计方差(Welch 法)
4. Tail Fitting 算法
Tail Fitting 是工程中最常用的 RJ/DJ 分离方法:
原理
- jitter 直方图的尾部主要由 RJ 贡献(DJ 有界,尾部不可见)
- 分别对左尾和右尾拟合高斯分布
- 从拟合提取 、(左)、、(右)
算法步骤
1. 采集大量 jitter 样本(建议 > 100k)
2. 构建直方图
3. 从直方图左侧 10%-30% 范围拟合左高斯
4. 从直方图右侧 10%-30% 范围拟合右高斯
5. 提取参数:
σ_RJ = (σ_L + σ_R) / 2(若对称)
μ_L, μ_R → DJ = μ_R - μ_L
6. 计算 Total Jitter:
TJ(BER) = DJ + 2Q(BER)·σ_RJ
Matlab 伪代码
% histogram data
[counts, edges] = histcounts(jitter_samples, Nbins);
% Left tail fitting (cumulative probability < 0.1)
left_tail_mask = cumprob < left_threshold;
[p_left, S_left] = fit_gaussian_tail(edges, counts, left_tail_mask);
% Right tail fitting (cumulative probability > 0.9)
right_tail_mask = cumprob > right_threshold;
[p_right, S_right] = fit_gaussian_tail(edges, counts, right_tail_mask);
% Extract
sigma_RJ = (p_left.sigma + p_right.sigma) / 2;
DJ = abs(p_right.mu - p_left.mu);
Q = 7.03; % BER = 1e-12
TJ = DJ + 2 * Q * sigma_RJ;精度考量
- 样本量:100k 样本 → TJ 估计精度约 ±5%
- 尾部阈值:选择过小(噪声)或过大(DJ 泄漏)都会降低精度
- 非对称 DJ:分离为 和
- BER 外推:假设 RJ 完美高斯,否则外推会高估 TJ
5. 附录 B Matlab 代码结构
本书 App.B 提供可直接运行的 Matlab 代码:
| 文件/函数 | 功能 |
|---|---|
generate_flat.m | 白相位噪声 jitter 生成 |
generate_lowpass.m | 低通相位噪声 jitter 生成 |
generate_1overf2.m | 相位噪声 jitter 生成 |
generate_1overf.m | 相位噪声 jitter 生成 |
generate_1overf3.m | 相位噪声 jitter 生成 |
generate_complex.m | 复合相位噪声谱 jitter 生成 |
analyze_jitter.m | 从时间向量计算各类 jitter |
jitter2phasenoise.m | 从 jitter 恢复相位噪声谱 |
tail_fitting.m | Tail Fitting RJ/DJ 分解 |
参考文献
- Da Dalt, N., & Sheikholeslami, A. (2018). Understanding Jitter and Phase Noise, Ch.10 & Appendix B. Cambridge University Press.
- Kundert, K. (2006). “Predicting the Phase Noise and Jitter of PLL-Based Frequency Synthesizers.” The Designer’s Guide. [数值生成 PLL jitter]
- Stephens, R. (2001). Jitter Analysis in High-Speed Digital Systems. Agilent Technologies. [Tail Fitting 标准方法]
- Welch, P. D. (1967). “The Use of Fast Fourier Transform for the Estimation of Power Spectra.” IEEE Trans. Audio Electroacoust., 15(2), 70-73. [Welch 周期图法]
相关页面
- Jitter基本概念与定义
- Jitter统计分析与RJ-DJ分解 — RJ/DJ 分解
- Jitter与Phase Noise关系 — 相位噪声→jitter 转换
- Jitter与Phase Noise高级统计概念 — Allan 偏差、置信区间
- 电路中的Jitter与Phase Noise — 振荡器相位噪声
- 相位噪声对PLL影响 — PLL 相位噪声谱与数值生成
- 数字采样锁相环 — NCO 实现与量化杂散
- PLL频率合成器 — 频率合成器相位噪声建模
- Gardner Phaselock Techniques 深度解析
- DaDalt Jitter and Phase Noise 深度解析