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.