The Designer's Guide Community
Forum
Welcome, Guest. Please Login or Register. Please follow the Forum guidelines.
Apr 18th, 2024, 8:33pm
Pages: 1
Send Topic Print
PNOISE with a VerilogA oscillator (Read 3608 times)
Horror Vacui
Senior Member
****
Offline



Posts: 127
Dresden, Germany
PNOISE with a VerilogA oscillator
Sep 08th, 2017, 5:42am
 
Hi Everyone,

I was about to create a VerilogA model for a VCO, which includes the phase noise as well. I used the model in Listings 1 from http://www.designers-guide.org/Analysis/rf-sim.pdf.

The problem is that there is no noise in pnoise measurement. The pnoise setup is the same as for a transistor level VCO, so it has to be good. On the other hand transient noise simulation shows variance between iterations, which indicates that the verilogA code's phase noise solution works.

So my question is what do I need to do to get a pnoise output?

If you need more information or just want to look at my setup, you find them below:
Code:
analysis('pnoise ?sweeptype "relative"  ?relharmnum "1"  ?start "10"  
		?stop "1G"  ?maxsideband "7"  ?p "/out"  ?n "/gnd!"  
		?oprobe ""  ?noisetype "timeaverage"  ?noiseout list("pm")  ?noisetypeUI ""  
		?osc_version ""  ?osc_accuracy ""  ?ppv ""  )
analysis('pss ?fund "61.25G"  ?harms "7"  ?errpreset "conservative"  
		?tstab "20p"  ?oscana t  ?p "/out"  ?n "/gnd!"  
		?oscic "lin"  ?ppv ""  )
run()
output\ noise\:\ \(PM\,\ SSB\,\ dBc\/Hz\) = rfOutputNoise("dBc/Hz" ?result "pnoise_pm" ?noiseConvention "SSB")
plot( output\ noise\:\ \(PM\,\ SSB\,\ dBc\/Hz\) ?expr '( "output noise: (PM, SSB, dBc/Hz)" ) ) 



Code:
	analog begin
		phase = 2* `M_PI*freq * $abstime;
		phase_noise = flicker_noise(pn,2);
		//f_noise = flicker_noise(pn*corner_1f,3);
		//V(out) <+ ampl*cos(phase + phase_noise + f_noise);
		//V(out) <+ ampl*cos(phase + phase_noise);
		V(out) <+ ampl*cos(phase);
		V(out) <+ phase_noise;
        end
 

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



Posts: 162

Re: PNOISE with a VerilogA oscillator
Reply #1 - Sep 9th, 2017, 5:26am
 
Code:
$cds_set_rf_source_info("aho_boke", freq);

electrical n1;

analog begin
   phase = 2* `M_PI*freq * $abstime;
   V(n1) <+ flicker_noise(pn,2);
   phase_noise = V(n1);
   V(out) <+ ampl*cos(phase + phase_noise);
   //V(out) <+ ampl*cos(phase);
   //V(out) <+ phase_noise;
end 



You set Autonomous-PSS Analysis.
However it is not appropriate.
You should set Driven-PSS Analysis.

Also see http://www.designers-guide.org/Forum/YaBB.pl?num=1445269490
Back to top
 
 
View Profile   IP Logged
Horror Vacui
Senior Member
****
Offline



Posts: 127
Dresden, Germany
Re: PNOISE with a VerilogA oscillator
Reply #2 - Sep 11th, 2017, 8:36am
 
Thanks cheap_salary! You are right, I have now a source, not an oscillator. Also thanks for the link! I did not had the rfLib in my Library Manager, now I searched it, and added it.

I tried your code, but I got an error for the first line. Since there was a oscillator in rfLib which suits my needs I did not dive into that line or the code in rfLib. I will look into it later.
Back to top
 
 
View Profile   IP Logged
cheap_salary
Senior Member
****
Offline



Posts: 162

Re: PNOISE with a VerilogA oscillator
Reply #3 - Sep 11th, 2017, 5:07pm
 
Horror Vacui wrote on Sep 11th, 2017, 8:36am:
I tried your code, but I got an error for the first line.
Locate "$cds_set_rf_source_info("aho_boke", freq);" inside "analog begin ~ end".
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.