• Home
  • :
  • Community
  • :
  • Blogs
  • :
  • RF Design
  • :
  • Modeling Oscillators with Arbitrary Phase Noise Profile…

RF Design Blogs

Tawna
Tawna
24 May 2012
Subscriptions

Get email delivery of the Cadence blog featured here

  • All Blog Categories
  • Breakfast Bytes
  • Cadence Academic Network
  • Cadence Support
  • Custom IC Design
  • カスタムIC/ミックスシグナル
  • 定制IC芯片设计
  • Digital Implementation
  • Functional Verification
  • IC Packaging and SiP Design
  • Life at Cadence
  • The India Circuit
  • Mixed-Signal Design
  • PCB Design
  • PCB設計/ICパッケージ設計
  • PCB、IC封装:设计与仿真分析
  • PCB解析/ICパッケージ解析
  • RF Design
  • RF /マイクロ波設計
  • Signal and Power Integrity (PCB/IC Packaging)
  • Silicon Signoff
  • Spotlight Taiwan
  • System Design and Verification
  • Tensilica and Design IP
  • Whiteboard Wednesdays
  • Archive
    • Cadence on the Beat
    • Industry Insights
    • Logic Design
    • Low Power
    • The Design Chronicles

Modeling Oscillators with Arbitrary Phase Noise Profiles

When you need to include noisy oscillators in SpectreRF transceiver simulations, you have at least 3 options:

1) Semi-autonomous simulation is the most accurate approach, recommended whenever the transistor-level model of the oscillator is available.

2) rfLib/osc model is less accurate but it’s well-suited for "what-if" design exploration. Since rfLib/osc uses Leeson’s noise formula, it doesn’t allow for arbitrary specification of phase noise profiles as a function of frequency.

3) Use PORTs and other sources with noisefiles. This approach lets users specify arbitrary noise profiles, but it omits sideband correlation data. In practice, this means that AM and PM components of the noise are modeled incorrectly. For oscillators in particular, the AM component is grossly exaggerated and the PM component of the noise is underestimated. As a result, this approach isn’t recommend for oscillator noise modeling.

Our Goal: Develop a Behavioral Oscillator Model w/ an Arbitrary Phase Noise Profile for Use in Virtuoso/SpectreRF

One strategy is:

Use a frequency-dependent noise source which directly phase-modulates an otherwise ideal oscillator.

The noise source is modeled using a voltage source + noisefile.

This gives us two main benefits:

1.  By virtue of direct phase modulation the oscillator’s noise is now all PM, which a good model of near-carrier oscillator noise.

2.  By virtue of using noisefiles, we can now specify arbitrary noise profiles as a function of frequency.

A Simple Mathematical Model of the Oscillator

Below is a simple mathematical model of the oscillator.

Let v(t) be the open-circuit voltage of our oscillator and
φ(t) the random phase:

11775686.eqn1.jpg

Using the small noise assumption, and remembering that sin(x+y)=cos(x)sin(y)+sin(x)cos(y),

11775686.eqn2.jpg

An equivalent system model of the above equation (1) is shown below:

11775686.eqn3.jpg

 

Below is the Verilog-A Implementation

 

             `include "constants.vams"

`include "disciplines.vams"

// power: available power (dBm) default: 10 dBm

// freq: output frequency (Hz) default: 1 GHz

// rout: output impedance (Ohm) default: 50 Ohm

`define db10_real(x) pow(10, (x)/10)

`define dbm2pow(x) `db10_real( ((x)-30) )

`define pow2v(x,r) sqrt(8*(r)*(x))

module oscwphnoise(out, ph);

inout out;

input ph;

electrical out;

electrical ph;

electrical gnd;

ground gnd;

electrical int;

parameter real power = 10 ;

parameter real rout = 50 ;

parameter real freq = 1e+09 ;

isource #(.type("sine"), .ampl(`pow2v(`dbm2pow(power),rout)/rout), .freq(freq) ) is1(gnd,out);

vsource #(.type("sine"), .ampl(`pow2v(`dbm2pow(power),rout)/rout), .sinephase(-90), .freq(freq) ) vs1(gnd,int);

analog begin

I(out) <+ -V(int)*V(ph);

I(out) <+ V(out)/rout;

end

endmodule

 

 

What Do We Apply to the Terminal φ to Model Noise?

Assume that the single sideband noise to carrier ratio (a.k.a. ‘phase noise’) is known and expressed in dBc.

Use the well-known relationship between the single sideband noise to carrier ratio and the spectral density of φ(t), which is valid for small offsets f:

L(f) = 0.5*Sφ(f)

 

So the phase φ(t) is a signal whose noise spectrum is given by:

2*pow(10, LdBc(f)/10)

To model this in Spectre, use a DC voltage source and specify the noise spectrum in a noisefile. You calculate the noisefile using Excel.

 

Calculating the Noisefile Contents in Excel

 

11775686.eqn4.jpg

 

A Complete Model

The complete model is shown below:

 

11775686.eqn5.jpg

 

Example Results

Below are results showing hb and hbnoise (phase noise) results:

 

11775686.eqn6.jpg

 

To explore this further, login into Cadence Online Support and see https://support.cadence.com/ Solution 11775686.

Have fun simulating!

best regards,

Tawna

Tags:
  • RF |
  • RF Simulation |
  • analog/RF |
  • APS |
  • HBnoise |
  • Circuit simulation |
  • RFIC |
  • Virtuoso Spectre |
  • HB |
  • Spectre RF |
  • Analog Simulation |
  • MMSIM |
  • pnoise |
  • phase noise |
  • Virtuoso Spectre Simulator GXL |
  • analog |
  • ADE |
  • Spectre |
  • RF design |
  • harmonic balance |
  • VCO |
  • Oscillator |
  • simulation |
  • noise profiles |