Matlab计算把振荡器相位噪声转换为时间抖动

Matlab计算把振荡器相位噪声转换为时间抖动


简介

本文内容参考ADI官网《将振荡器相位噪声转换为时间抖动》文章。
为实现ADC采样的高信噪比(SNR), ADC的孔径抖动必须很低。为了避免降低ADC的性能,必须采用抖动极低的采样时钟,因为总抖动等于转换器内部孔径抖动与外部采样时钟抖动的方和根。然而,用于产生采样时钟的振荡器常常用相位噪声而非时间抖动来描述特性。本文的目的就是提出一种简单的方法来将振荡器相位噪声转换为时间抖动,并通过Matlab编程计算时钟抖动,跟SiTime官网时钟抖动参数进行对比,验证计算的正确性。

一、相位噪声定义

首先明确几个定义。下图所示为一个非理想振荡器(即时域中存在抖动,对应于频域中的相位噪声)的典型输出频谱。频谱显示,1Hz带宽内的噪声功率与频率成函数关系。相位噪声定义为额定频率偏移fm下的1Hz带宽内的噪声与频率fo下的振荡器信号幅度之比。
在这里插入图片描述
通常用单边带相位噪声来描述振荡器的特性,如图3的相位噪声(dBc/Hz)与频率偏移fm的关系曲线所示,其中频率轴采用对数刻度。注意,实际的曲线由多个区域拟合而成,各区域的斜率为1/fx, x = 0对应于“白色”相位噪声区域(斜率 = 0 dB/10倍), x = 1对应于“闪烁”相位噪声区域(斜率 = –20 dB/10倍)还存在x = 2、 3、 4的区域,这些区域依次出现,愈来愈接近载波频率。下图为振荡器相位噪声(dBc/Hz)与频率偏移的关系。
在这里插入图片描述
可知,振荡器通常用相位噪声来描述性能,但为了将相位噪声与ADC的性能关联起来,必须将相位噪声转换为抖动。为将该曲线与现代ADC应用关联起来,选择100MHz的振荡器频率(采样频率)以便于讨论,典型曲线如下图所示。请注意,相位噪声曲线由多条线段拟合而成,各线段的端点由数据点定义。
在这里插入图片描述

二、将相位噪声转换为抖动

计算等效rms抖动的第一步是获得目标频率范围(即曲线区域A)内的积分相位噪声功率。该曲线被分为多个独立区域(A1、 A2、 A3、 A4),各区域由两个数据点定义。一般而言,假设振荡器与ADC输入端之间无滤波,则积分频率范围的上限应为采样频率的2倍,这近似于ADC采样时钟输入的带宽。
积分频率范围下限的选择也需要一定的斟酌。理论上,它应尽可能低,以便获得真实的rms抖动。但实际上,制造商一般不会给出偏移频率小于10Hz时的振荡器特性,不过这在计算中已经能够得出足够精度的结果。多数情况下,如果提供了100Hz时的特性,则选择100Hz作为积分频率下限是合理的。否则,可以使用1kHz或10kHz数据点。还应考虑, “近载波”相位噪声会影响系统的频谱分辨率,而宽带噪声则会影响整体系统信噪比。最明智的方法或许是按照下文所述对各区域分别积分,并检查各区域的抖动贡献幅度。如果使用晶体振荡器,则低频贡献与宽带贡献相比,可能可以忽略不计。其它类型的振荡器在低频区域可能具有相当大的抖动贡献,必须确定其对整体系统频率分辨率的重要性。各区域的积分产生个别功率比,然后将各功率比相加,并转换回dBc。一旦知道积分相位噪声功率,便可通过下式计算rms相位抖动。

在这里插入图片描述
代码如下:

clc;
clear all;
close all;

fo = 20e6;
P1 = -102;  % -102dBc/Hz,10Hz
F1 = 10;    % 10Hz

P2 = -120;  % -127dBc/Hz,100Hz
F2 = 100;   % 100Hz

P3 = -142;  % -142dBc/Hz,1KHz
F3 = 1e3;   % 1KHz

P4 = -147;  % -147dBc/Hz,10KHz
F4 = 10e3;  % 10KHz

P5 = -148;  % -148dBc/Hz,100KHz
F5 = 100e3; % 100KHz

P6 = -162;  % -162dBc/Hz,1MHz
F6 = 1e6;   % 1MHz

P7 = -163;  % -163dBc/Hz,5MHz
F7 = 5e6;   % 5MHz


A1 = (P1+P2)/2 + 10*log10(F2-F1);
A2 = (P2+P3)/2 + 10*log10(F3-F2);
A3 = (P3+P4)/2 + 10*log10(F4-F3);
A4 = (P4+P5)/2 + 10*log10(F5-F4);
A5 = (P5+P6)/2 + 10*log10(F6-F5);
A6 = (P6+P7)/2 + 10*log10(F7-F6);

J1 = sqrt(2*10^(A1/10))/(2*pi*fo)*10^15;
J2 = sqrt(2*10^(A2/10))/(2*pi*fo)*10^15;
J3 = sqrt(2*10^(A3/10))/(2*pi*fo)*10^15;
J4 = sqrt(2*10^(A4/10))/(2*pi*fo)*10^15;
J5 = sqrt(2*10^(A5/10))/(2*pi*fo)*10^15;
J6 = sqrt(2*10^(A6/10))/(2*pi*fo)*10^15;

jitterRMS1 = sqrt(J4^2+J5^2+J6^2); % 时间(fs)
jitterRMS2 = sqrt(J1^2+J2^2+J3^2+J4^2 + J5^2); % 时间(fs)

fprintf('Integration Bandwidth(12KHz~5MHz) jitterRMS = %5.2f(fs)\r\n',jitterRMS1);
fprintf('Integration Bandwidth(10Hz~5MHz) jitterRMS = %5.2f(fs)\r\n',jitterRMS2);

运行程序,计算结果如下所示。
Integration Bandwidth(12KHz~5MHz) jitterRMS = 291.21(fs)
Integration Bandwidth(10Hz~5MHz) jitterRMS = 399.95(fs)
上述晶振使用SiTime厂家型号为SiT5156为参数进行计算。官方网站评估(可以登录SiTime的官方网站进行评估)的结果如下图右上角所示,为289fs。
在这里插入图片描述
积分频率从12KHz~5MHz,Matlab计算抖动为291fs,跟官方评估的289fs基本一致。

总结

可以使用该方式把晶振的相位噪声转化为抖动,用来评估时钟抖动对ADC采集SNR影响,评估晶振指标是否可以满足ADC采样要求。

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值