完整版请参考:
- https://mazhaoxin.github.io/2018/10/20/Jitter_Basics/
- http://483v7j.coding-pages.com/2018/10/20/Jitter_Basics/
自从加入M记后,开始比较密集的接触关于jitter的相关内容,并且发现有很多同事并不能很清楚的认识到jitter的分类和应用。通过查询各方面的资料,整理本文如下,以备不时之需。
Jitter(抖动)是从时域评价时钟信号质量的重要参数。
另外,要明确的是在jitter的分类中,存在着一定的歧义或别名,如absolute jitter也被称为phase jitter,period jitter也被称为cycle jitter等等。
Phase noise(相位噪声)是从频域评价时钟信号质量的重要参数。因此对于同一个时钟信号既可以用相噪来进行描述,也可以用jitter来进行描述。一般来说phase noise曲线包含的信息量更大,也更方便与设计进行比对,但出于方便应用的目的,通常需要根据应用转换为相应类型的jitter。
理论上讲,jitter只关注了时钟跳变沿的噪声情况,phase noise则应当关注全频带的噪声,但目前的应用中基本上都是用类方波信号作为时钟源,所以二者所关注的噪声范围并没有太多的差异。
Phase noise到jitter的转换是通过积分相噪(IPN)进行的,具体的可以参考之前的文章由相位噪声曲线计算积分相噪和Jitter的方法。
Jabs所统计的对象是实际时钟跳变沿出现的时刻与理想时钟跳变沿出现的时刻之间的差,因此也叫phase jitter,如下图所示。(注:实际测试中没有所谓的理想时钟,一般指的是被测信号的线性回归值,下同)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8h5Kw8Kc-1584194539285)(/img/in-post/{{page.id | replace:’/’,’-’}}/phase_jitter.jpg)]
一般ADC、DAC应用关心这类jitter的rms值。
通过Phase noise曲线计算Jabs时,只需要把曲线下方的面积计算出来换算即可。
J a b s r m s 2 = 1 ( 2 π f c ) 2 ∫ 0 ∞ 2 L ( f ) d f Jabs_{rms}^2=\frac{1}{(2\pi f_c)^2}\int_0^\infty{2L(f)df} Jabsrms2=(2πfc)21∫0∞2L(f)df
其中 L ( f ) L(f) L(f)为单边带相位噪声(SSB Phase Noise)。
另外,从定义也很容易得出,对于主要能量集中于低频偏部分的场景(一般情况下都能满足),经过分频的时钟的Jabs是不变的。
Jp所统计的对象是相邻两个实际时钟跳变沿出现的时间间隔与理论值的差或实际时钟周期与理想时钟周期的差,在测试中所谓理想时钟周期即是平均时钟周期,如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-waANNbnO-1584194539288)(/img/in-post/{{page.id | replace:’/’,’-’}}/period_jitter.jpg)]
一般在数字电路(如MCU、CPU)应用中关心这类jitter的峰峰值。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QZ6mDv0n-1584194539290)(/img/in-post/{{page.id | replace:’/’,’-’}}/sta.jpg)]
以上图所示的电路为例(为方便计算,假设clk1、clk2均为理想的clk),则有
t s e t u p = t n + 1 − ( t n + t c k − q + t c o m b ) = T c l k − t j i t t e r _ p 2 p − t c k − q − t c o m b t_{setup}=t_{n+1}-(t_n+t_{ck-q}+t_{comb})=T_{clk}-t_{jitter\_p2p}-t_{ck-q}-t_{comb} tsetup=tn+1−(tn+tck−q+tcomb)=Tclk−tjitter_p2p−tck−q−tcomb
因此Jp的峰峰值会造成 t s e t u p t_{setup} tsetup的减小。
对于随机抖动(random jitter),一般认为其呈高斯分布,那么峰峰值与RMS值的关系为
J i t t e r p 2 p = α J i t t e r r m s Jitter_{p2p}=\alpha Jitter_{rms} Jitterp2p=αJitterrms
其中 α \alpha α由 1 2 e r f c ( α 2 ( 2 ) ) = B E R \frac{1}{2}erfc(\frac{\alpha}{2\sqrt(2)})=BER 21erfc(2(2)α)=BER确定,常见的取值见下表:
BER | α \alpha α |
---|---|
1 0 − 3 10^{-3} 10−3 | 6.180 |
1 0 − 4 10^{-4} 10−4 | 7.438 |
1 0 − 5 10^{-5} 10−5 | 8.530 |
1 0 − 6 10^{-6} 10−6 | 9.507 |
1 0 − 7 10^{-7} 10−7 | 10.399 |
1 0 − 8 10^{-8} 10−8 | 11.224 |
1 0 − 9 10^{-9} 10−9 | 11.996 |
1 0 − 10 10^{-10} 10−10 | 12.723 |
1 0 − 11 10^{-11} 10−11 | 13.412 |
1 0 − 12 10^{-12} 10−12 | 14.069 |
1 0 − 13 10^{-13} 10−13 | 14.698 |
1 0 − 14 10^{-14} 10−14 | 15.301 |
1 0 − 15 10^{-15} 10−15 | 15.883 |
1 0 − 16 10^{-16} 10−16 | 16.444 |
通过Phase noise曲线计算Jabs时,需要考虑 t n − t n − 1 t_n-t_{n-1} tn−tn−1带来的影响,因此需要在原始的曲线上叠加一个权重曲线。
J p r m s 2 = 1 ( π f c ) 2 ∫ 0 ∞ 2 L ( f ) sin 2 ( π f / f c ) d f Jp_{rms}^2=\frac{1}{(\pi f_c)^2}\int_0^\infty{2L(f) \sin^2(\pi f/f_c)df} Jprms2=(πfc)21∫0∞2L(f)sin2(πf/fc)df
在计算时可以发现,这条权重曲线几乎抑制了所有的低频噪声,使得Jp由底噪所主导。
Jc2c所统计的对象是相邻两个实际时钟周期之间的差,如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qqChKMgo-1584194539291)(/img/in-post/{{page.id | replace:’/’,’-’}}/cycle2cycle_jitter.jpg)]
显然这类jitter不需要参考理想时钟,一般在并行接口应用中关心它的峰峰值。
通过Phase noise曲线计算Jc2c时,需要考虑两次差分带来的影响,即:
J c 2 c r m s 2 = 4 ( π f c ) 2 ∫ 0 ∞ 2 L ( f ) sin 4 ( π f / f c ) d f Jc2c_{rms}^2=\frac{4}{(\pi f_c)^2}\int_0^\infty{2L(f) \sin^4(\pi f/f_c)df} Jc2crms2=(πfc)24∫0∞2L(f)sin4(πf/fc)df
与Jp相类似的,两次差分引入的权重曲线进一步抑制了低频噪声,使得Jc2c也是由底噪所主导。
Jacc所统计的对象是相距k个时钟跳变沿的时间间隔与理论值的差,显然当k=1时即是Jp,当k=∞时即是Jabs。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iSy28gQ1-1584194539294)(/img/in-post/{{page.id | replace:’/’,’-’}}/acc_jitter.jpg)]
对于提供同步时钟,但时钟频率低于数据速率的场景会关心累计抖动。
通过Phase noise曲线计算k个周期的Jacc的公式如下:
J a c c r m s ( k ) 2 = 1 ( π f c ) 2 ∫ 0 ∞ 2 L ( f ) sin 2 ( k π f / f c ) d f Jacc_{rms}(k)^2=\frac{1}{(\pi f_c)^2}\int_0^\infty{2L(f) \sin^2(k\pi f/f_c)df} Jaccrms(k)2=(πfc)21∫0∞2L(f)sin2(kπf/fc)df
对于给SerDes Tx提供驱动的时钟来说,其jitter大小要把CDR的影响考虑进来。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YTFTAMnD-1584194539297)(/img/in-post/{{page.id | replace:’/’,’-’}}/cdr.jpg)]
具体的在此不做详述,后续再写一篇梳理一下常见标准的CDR参数。