The Designer's Guide Community
Forum
Welcome, Guest. Please Login or Register. Please follow the Forum guidelines.
May 12th, 2024, 8:04pm
Pages: 1
Send Topic Print
Problem with VCO Modelling about flicker_noise (Read 1366 times)
feihudui
New Member
*
Offline



Posts: 5

Problem with VCO Modelling about flicker_noise
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

Back to top
 
 
View Profile   IP Logged
Stefan
Senior Member
****
Offline



Posts: 124

Re: Problem with VCO Modelling about flicker_noise
Reply #1 - 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 ...
Back to top
 
 
View Profile 16731287   IP Logged
Ken Kundert
Global Moderator
*****
Offline



Posts: 2384
Silicon Valley
Re: Problem with VCO Modelling about flicker_noise
Reply #2 - Oct 24th, 2007, 7:44pm
 
In this case, I believe the exponent on the flicker noise should be 3 rather than 2.

-Ken
Back to top
 
 
View Profile WWW   IP Logged
feihudui
New Member
*
Offline



Posts: 5

Re: Problem with VCO Modelling about flicker_noise
Reply #3 - 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

Back to top
 
 
View Profile   IP Logged
Ken Kundert
Global Moderator
*****
Offline



Posts: 2384
Silicon Valley
Re: Problem with VCO Modelling about flicker_noise
Reply #4 - Oct 25th, 2007, 8:25am
 
In phase domain models, the oscillation is suppressed.

-Ken
Back to top
 
 
View Profile WWW   IP Logged
feihudui
New Member
*
Offline



Posts: 5

Re: Problem with VCO Modelling about flicker_noise
Reply #5 - 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
Back to top
 
 
View Profile   IP Logged
Aigneryu
Senior Member
****
Offline



Posts: 102

Re: Problem with VCO Modelling about flicker_noise
Reply #6 - 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.


Back to top
 
 
View Profile   IP Logged
Aigneryu
Senior Member
****
Offline



Posts: 102

Re: Problem with VCO Modelling about flicker_noise
Reply #7 - 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.
Back to top
 
 
View Profile   IP Logged
Pages: 1
Send Topic Print
Copyright 2002-2024 Designer’s Guide Consulting, Inc. Designer’s Guide® is a registered trademark of Designer’s Guide Consulting, Inc. All rights reserved. Send comments or questions to editor@designers-guide.org. Consider submitting a paper or model.