The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl Modeling >> Behavioral Models >> Problem with VCO Modelling about flicker_noise https://designers-guide.org/forum/YaBB.pl?num=1193242628 Message started by feihudui on Oct 24th, 2007, 9:17am |
Title: Problem with VCO Modelling about flicker_noise Post by feihudui on Oct 24th, 2007, 9:17am hi, i am trying to build my vco modell using verilog-AMS in phase Domain laut paper of Kundert. But the problem is, that i can not verify the power of the flicker noise generated from flicker_noise() function. I found out that the phase noise, i have added to my vco, depends on the setting of noisefmax from the cadence analog environment. It does not depend on the power of the flicker_noise(power,n). I just want to find out the correct power of the flicker_noise(power,2) to adjust my accJitter*rdist_normal(seed,0,1) at the time domain of my vco model. my code for the vco, that tests the flicker_noise module VCO_VeriAMS (in,out,phase_out,gnd ); input in,gnd; output out,phase_out; electrical in,out,gnd,phase_out; parameter real amp = 1; parameter real Fmin=4.8G; parameter real Fmax=5.2G; parameter real Vmin=0.0; parameter real Vmax=1.0; parameter real accJitter=353.55f; parameter real vco_gain = (Fmax-Fmin)/(Vmax-Vmin); parameter real ttol=0.01*2/Fmax; parameter real outStart=1/Fmin from[1/Fmin:inf); parameter integer steps_per_period = 32; electrical Wnoise; real phase,n; real inst_freq; // instanteous frequency integer seed,fp; real diff,prev,now; //assign out=n; analog begin @ ( initial_step ) begin seed=287; fp=$fopen("/tmp/periods.m"); end inst_freq = Fmin+vco_gain*V(in,gnd); phase = idtmod(inst_freq,0,1); phase = phase+flicker_noise(accJitter*10G,2,"flicker_at_phasse"); V(phase_out,gnd) <+ phase; @(cross(phase-0.25,1,ttol)) begin if($abstime>=outStart) $fstrobe(fp,"%0.10e",$abstime-prev); prev=$abstime; end V(out)<+ amp*sin(2*`M_PI*phase); end endmodule |
Title: Re: Problem with VCO Modelling about flicker_noise Post by Stefan on Oct 24th, 2007, 1:41pm We had a (maybe) similar problem when dealing with a cos(white_noise) statement. It came out that it's not legal to use the noise functions in algorithmic functions. Could you try adding the flicker_noise using a contribution statement to a node (V(test)<+ flicker_noise...)? You should then be able to determine the correct power at that node and simply add it to your signal using a=b+V(test). Give it a try ... |
Title: Re: Problem with VCO Modelling about flicker_noise Post by Ken Kundert on Oct 24th, 2007, 7:44pm In this case, I believe the exponent on the flicker noise should be 3 rather than 2. -Ken |
Title: Re: Problem with VCO Modelling about flicker_noise Post by feihudui on Oct 25th, 2007, 7:33am hallo Ken, in your paper Predicting the phase noise and Jitter of PLL-Based Frequency Synthesizers. I don't understand your noisy oscillator model in the phase domain. Source code in your listing 3 `include “phase.vams” // from Listing 2, includes disciplines.vams. module oscillator(out); output out; phase out; parameter real n = 0 from [0:inf); // white output phase noise at 1 Hz (rad2/Hz) parameter real fc = 0 from [0:inf); // flicker noise corner frequency (Hz) analog begin Theta(out) <+ flicker_noise(n, 2, “wpn”) + flicker_noise(n∗fc, 3, “fpn”); end endmodule How can i set the oscillating frequency of the oscillator? best regard Nan |
Title: Re: Problem with VCO Modelling about flicker_noise Post by Ken Kundert on Oct 25th, 2007, 8:25am In phase domain models, the oscillation is suppressed. -Ken |
Title: Re: Problem with VCO Modelling about flicker_noise Post by feihudui on Oct 29th, 2007, 7:50am hi Ken, the output of the oscillator in phase domain should be the linear function of the time. If we do not give the oscillating frequency of the oscillator as a parameter, the output of the oscillator modell will be a random process due to flicker noise. In the PLL model, we should have a increasing phase output with the time. If we do not have a frequency of the oscillator as a parameter, it doesn't work. Indeed, we can set Theta(out) <+ idt(freq, 0)+flicker_noise(n,2,"wnp") to resolve the problem. It does work also. The whole PLL system of the phase domain does work. But it doesn't work, if i will test the single VCO and Oscillator separatly using your matlab skript in your paper "predicting the phase noise and jitter of PLL-Based Frequency Synthesizers". It gives out totally unacceptable value. 2. problem: the calculation of the power at 1Hz offset. n=2*c*f0^2. The flicker_noise(n,2,"wpn") gives another phase noise out than i have expected after a pss+pnoise analyses. the test code is listed: analog begin @ ( initial_step ) begin seed=287; fp=$fopen("/tmp/nli/periods.m"); end inst_freq = Fmin+vco_gain*V(in,gnd); $bound_step (1.0/(steps_per_period*inst_freq)); phase = idtmod(inst_freq,0,1); V(phase_out,gnd) <+ phase; @(cross(phase-0.25,1,ttol)) begin if($abstime>=outStart) $fstrobe(fp,"%0.10e",$abstime-prev); prev=$abstime; end V(out) <+ amp*sin(2*`M_PI*phase)+flicker_noise(n*amp*sin(phase),2,"flicker_at_phasse"); end endmodule thanks Nan |
Title: Re: Problem with VCO Modelling about flicker_noise Post by Aigneryu on Nov 16th, 2007, 1:33pm The way I deal with phase nosie in this phase domain model is backward-referring the noise to the tuning port, given the phase noise profile at an offset frequency. It works fine, but I am also wondering if lorenzian spectrum can be captured. The way I tested is that: 1. use a white noise source to feed the tuning port. And in VCO model, the noise on the tuning port will be integrated and result in a phase fluctuation, phi_n(t). 2. Then pass "2*pi*fc*time+phi_n(t)" to cos function. 3. Ideally we will get the sinusoidal output with phase noise. Somehow it works with closed-loop PLL simulation with PSS + Pnoise. But what I found in free running VCO phase noise plot is that I cannot see lorenzian caused by sin (integral of white noise). The phase noise spectrum will keep going up with the lower offset freq. |
Title: Re: Problem with VCO Modelling about flicker_noise Post by Aigneryu on Nov 16th, 2007, 6:53pm OK, now I think even the transfer from the phase to voltage by sin() is also linearized in PAC, the output will see the response of phase only, which means no lorenzin shape can be oberved. Regards. |
The Designer's Guide Community Forum » Powered by YaBB 2.2.2! YaBB © 2000-2008. All Rights Reserved. |