The Designer's Guide Community
Forum
Welcome, Guest. Please Login or Register. Please follow the Forum guidelines. Sep 23rd, 2017, 12:35am
  HomeHelpSearchLoginRegisterPM to admin  
 
Pages: 1
Send Topic Print
PNOISE with a VerilogA oscillator (Read 141 times)
Horror Vacui
Community Member
***
Offline



Posts: 42

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: 122

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
Community Member
***
Offline



Posts: 42

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: 122

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
Trouble viewing this site? Copyright © 2002-2014 Designer's Guide Consulting. 'Designer's Guide' is a registered trademark of Designer's Guide LLC. All rights reserved.

Our colleges are not as safe as they seem. Sexual assault is pervasive and the treatment of the victim by the adminstration is often as damaging as the assault: Campus Survivors, Campus Survivors Forum.

Some of our other sites that you might find useful: QuantiPhy.