在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 13607|回复: 34

[求助] jitter仿真,用pss+pnoise和matlab得到结果不一样

[复制链接]
发表于 2019-6-11 17:44:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
用了两种方式得到jitter,前提都是先仿真pnoise。第一种得到pnoise的曲线,几下1k到10M各个点的pnoise,然后把这数值放大matlab程序。
第二种直接通过jcc或者jc得到jitter。
结果第一种结果要大几个数量级,这是为啥。
请各位指教

积分程序网上下的,如下,应该没问题。
function Jitter = Pn2Jitter(f, Lf, fc)
%
% Summary: Jitter (RMS) calculation from phase noise vs. frequency data.
%
% Calculates RMS jitter by integrating phase noise power data.
%  Phase noise data can be derived from graphical information or an
%  actual measurement data file.
%
% Usage:
%   Jitter = Pn2Jitter(f, Lf, fc)
% Inputs:
%   f:  Frequency vector (phase noise break points), in Hz, row or column.
%   Lf: Phase noise vector, in dBc/Hz, same dimensions, size(), as f.
%   fc: Carrier frequency, in Hz, a scalar.
% Output:
%   Jitter: RMS jitter, in seconds.
%
% Examples:
%  [1]   >> f = [10^0 10^1 10^3 10^4  10^6]; Lf = [-39 -73 -122 -131 -149];
%        >> Jitter = Pn2Jitter(f, Lf, 70e6)
%             Jitter = 2.3320e-011
%       Comparing fordahl application note AN-02-3{*} and jittertime.com{+}
%         calculations at fc = 70MHz
%        Pn2Jitter.m:                    23.320ps
%        AN-02-3 (graphical method):     21.135ps
%        AN-02-3 (numerical method):     24.11ps
%        Aeroflex PN9000 computation:    24.56ps
%        JitterTime.com calculation:     23.32ps
%
%    {*} fordahl Application Note AN-02-3:
%                                        "hase noise to Jitter conversion"
%        http://fordahl.com/images/phasenoise.pdf
%         As of 11 May 2007 it also appears here:
%          http://www.metatech.com.hk/appnote/fordahl/pdf/e_AN-02-3.pdf
%          http://www.metatech.com.tw/doc/appnote-fordahl/e-AN-02-3.pdf
%
%    {+} JitterTime Consulting LLC web calculator
%        http://www.jittertime.com/resources/pncalc.shtml
%         As of 5 May 2008
%
%  [2]   >> f =  [10^2 10^3 10^4 10^5 10^6 10^7 4.6*10^9];
%        >> Lf = [-82  -80  -77  -112 -134 -146 -146    ]; format long
%        >> Jitter = Pn2Jitter(f, Lf, 2.25e9)
%             Jitter = 1.566598599875678e-012
%       Comparing ADI application note{$} calculations at fc = 2.25GHz
%        Pn2Jitter.m:  1.56659859987568ps
%        MT-008:       1.57ps
%        Raltron {&}:  1.56659857673259ps
%        JitterTime:   1.529ps--excluding the (4.6GHz, -146) data point,
%                               as 1GHz is the maximum allowed
%    {$} Analog Devices, Inc. (ADI) application note MT-008:
%                        "Converting Oscillator Phase Noise to Time Jitter"
%        http://www.analog.com/en/content/0,2886,760%255F%255F91502,00.html
%    {&} Raltron web RMS Phase Jitter calculator:
%                                       "Convert SSB phase noise to jitter"
%        http://www.raltron.com/cust/tools/osc.asp
%           Note:  Raltron is restricted to f(min) = 10Hz;
%                  therefore it cannot be used in this example [1].
%
%  [3]   >> f = [10^2 10^3 10^4  200*10^6]; Lf = [-125 -150 -174 -174];
%        >> Jitter = Pn2Jitter(f, Lf, 100e6)
%             Jitter = 6.4346e-014
%       Comparing ADI application note{$} calculations at fc = 100MHz
%        Pn2Jitter.m: 0.064346ps
%        MT-008:      0.064ps
%        JitterTime:  0.065ps
%
% Note:
%   f and Lf must be the same length, lest you get an error and this
%         Improbable Result:  Jitter = 42 + 42i.
%
%  (A spreadsheet, noise.xls, is available from Wenzel Associates, Inc. at
%   http://www.wenzel.com, "Allan Variance from Phase Noise."
%   It requires as input tangents to the plotted measured phase noise data,
%   with slopes of 1/(f^n)--not the actual data itself--for the
%   calculation.  The app. note from fordahl discusses this method, in
%   addition to numerical, to calculate jitter.  This graphical straight-
%   line approximation integration technique tends to underestimate total
%   RMS jitter.)
%
%  [4]   Data can also be imported directly from an Aeroflex PN9000 ASCII
%         file, after removing extraneous text.  How to do it:
%        (1) In Excel, import the PN9000 data file as Tab-delimited data,
%        (2) Remove superfluous columns and first 3 rows, leaving 2 columns
%             with frequency (Hz) and Lf (dBc/Hz) data only.
%             (With the new PN9000 as of April 2006, only the first row
%             is to be removed, and there are only two columns.
%             I may take advantage of this in an updated version of this
%              program,thereby eliminating the need to edit the data),
%        (3) Save As -> Text (MS-DOS) (*.txt), e.g., a:\Stuff.txt,
%        (4) At the MATLAB Command Window prompt:
%             >> load 'a:\Stuff.txt' -ascii
%            Now Stuff is a MATLAB workspace variable with the
%             phase noise data,
%        (5) >> Pn2Jitter(Stuff(:,1), Stuff(:,2), fc);
%              (assuming fc has been defined)
%       One 10MHz carrier data set resulted in the following:
%        Pn2Jitter.m:         368.33fs
%        PN9000 calculation:  375fs
%
% Runs at least as far back as MATLAB version 5.3 (R11.1).
%
% Copyright (c) 2005 by Arne Buck, Axolotol Design, Inc. Friday 13 May 2005
%   arne   (d 0 t)   buck   [a +]   alum   {D o +}   mit   (d 0 +}   e d  u
%   $Revision: 1.2 $  $Date: 2005/05/13 23:42:42 $
%
% License to use and modify this code is granted freely, without warranty,
%  to all as long as the original author is referenced and attributed
%  as such.  The original author maintains the right to be solely
%  associated with this work.  So there.

% Bug fixes to resolve problematic data resulting in division by 0, or
%  excessive exponents beyond MATLAB's capability of realmin (2.2251e-308)
%  and realmax (1.7977e+308); no demonstrable effect on jitter calculation
% AB 18May2005 Fix /0 bug for *exactly* -10.000dB difference in adjacent Lf
% AB 24May2005 Fix large and small exponents resulting from PN9000 data
% AB 11May2007 Improve documentation, update URLs
% AB  5May2008 Verify and update URLs
tic
%%  It's almost nine o'clock.  We've got to go to work.
L = length(Lf);
if L == length(f)
% Fix ill-conditioned data.
I=find(diff(Lf) == -10); Lf(I) = Lf(I) + I/10^6; % Diddle adjacent Lf with
                                             % a diff=-10.00dB, avoid ai:/0
% Just say "No" to For loops.
lp = L - 1; Lfm = Lf(1:lp); LfM = Lf(2); % m~car+, M=cdr
fm  = f(1:lp); fM = f(2);  ai = (LfM-Lfm) ./ (log10(fM) - log10(fm));
% Cull out problematic fine-sieve data from the PN9000.
Iinf = find( (fm.^(-ai/10) == inf) | fm.^(-ai/10)<10^(-300)); % Find Inf

fm(Iinf) = []; fM(Iinf-1) = []; Lfm(Iinf) = []; LfM(Iinf-1) = [];
ai(Iinf) = []; f(Iinf) = []; Lf(Iinf) = [];

% Where's the beef?
Jitter = ...
    1/(2*pi*fc)*sqrt(2*sum( 10.^(Lfm/10) .* (fm.^(-ai/10)) ./ (ai/10+1)...
    .* (fM.^(ai/10+1) - fm.^(ai/10+1)) ));

else
    disp('> > Oops!');
    disp('> > > The f&Lf vector lengths are unequal.  Where''s the data?')
    Jitter = sqrt(sqrt(-12446784));
end % if L
toc

1.PNG
2.PNG
 楼主| 发表于 2019-6-12 10:16:55 | 显示全部楼层
自己顶
发表于 2019-6-12 11:34:03 | 显示全部楼层
先搞清楚什么是Jc,Jcc,pnoise。Pnoise对应于 Jee,phase or edge jitter。
 楼主| 发表于 2019-6-12 14:37:00 | 显示全部楼层


lwjee 发表于 2019-6-12 11:34
先搞清楚什么是Jc,Jcc,pnoise。Pnoise对应于 Jee,phase or edge jitter。


非常感谢你的答复。
之前只听过jc和jcc,pnoise。jee我查了下说是触发到相应时间不确定的jitter(官方文档jitterAN和网页上都有说)。
jc和jcc应该好理解,一个是理想时钟和实际时钟的误差,一个是前一个周期和后一个周期的误差。jcc应该是可以通过积分pnoise得到?(这个不会有问题吧)
jee我不知道在仿真中到底代表什么,jee是从pnoise得到?那jcc和pnoise又是什么关系呢?jee既然是输入到相应的jitter,这个跟一个自由震荡的vco有什么关系?不懂啊
我看过你在另一个地方说过pnoise和jee的关系,我按你的方法,jee可以通过转换得到pnoise(两者大小几乎一样,只是单双边带的问题)

来自jitterAN.pdf

来自jitterAN.pdf

来自网页

来自网页
发表于 2019-6-12 14:50:50 | 显示全部楼层
我也想请教个问题,JCC的积分区间怎么选取,低了1/f噪声大,高了谐波又会包含进去,什么区间比较合理?
 楼主| 发表于 2019-6-12 15:02:05 | 显示全部楼层


春江随缘 发表于 2019-6-12 14:50
我也想请教个问题,JCC的积分区间怎么选取,低了1/f噪声大,高了谐波又会包含进去,什么区间比较合理? ...


这个文档看看就懂

JitterAN.pdf

652.23 KB, 下载次数: 859

 楼主| 发表于 2019-6-12 15:38:44 | 显示全部楼层
自己顶
 楼主| 发表于 2019-6-13 09:19:26 | 显示全部楼层
顶顶顶
 楼主| 发表于 2019-6-13 10:53:03 | 显示全部楼层


lwjee 发表于 2019-6-12 11:34
先搞清楚什么是Jc,Jcc,pnoise。Pnoise对应于 Jee,phase or edge jitter。


还是没有明白你的回答跟我的提问有什么联系,我是想弄清楚为什么积分得到的jitter和用cadence直接得到的jcc不一样,我找了国外两个帖子,大概也是这种情况但是没有人真正回答。我试了下积分程序是对的,为什么cadence得到的jcc要小那么多https://community.cadence.com/ca ... and-transient-noise
https://www.edaboard.com/showthr ... e-jitter-simulation

求指教多谢!!

在cadence网站也问了要我去找customer support,尴尬了
https://community.cadence.com/ca ... t-different-results
发表于 2019-6-14 00:30:22 | 显示全部楼层
phase noise积分是归一化的jee(absolute jitter), jc是cycle jitter, jcc是cycle-cycle jitter
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-28 10:11 , Processed in 0.033073 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表