The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl
Modeling >> Behavioral Models >> Nonlinear operation of small signal noise in Verilog-A
https://designers-guide.org/forum/YaBB.pl?num=1444923186

Message started by cheap_salary on Oct 15th, 2015, 8:33am

Title: Nonlinear operation of small signal noise in Verilog-A
Post by cheap_salary on Oct 15th, 2015, 8:33am

See LISTING-8 at page-22 in the following.
http://www.designers-guide.org/Analysis/PLLnoise.pdf

Phase-domain fractional-N divider is modeled like following.

Code:
Theta(out) <+ Theta(in) / ( ratio + noise_table(...) );


I can easily understand this expression if it is for Transient Noise Analysis.
However this expression is for small signal noise analysis.

How is this expression treated in small signal noise analysis ?
I think this is Nonlinear operation of small signal noise.

Synopsys HSPICE and Cadence Spectre gives fairly different noise result.

Can it be valid such Nonlinear operation for small signal noise analysis ?

Title: Re: Nonlinear operation of small signal noise in Verilog-A
Post by Ken Kundert on Oct 18th, 2015, 9:00am

The model in my paper is wrong. The noise_table function should not be in the denominator. It should be simply added to the output.

Sorry about that.

-Ken

Title: Re: Nonlinear operation of small signal noise in Verilog-A
Post by cheap_salary on Oct 19th, 2015, 8:07am

Thanks for answering.

Another notice.
OVI Verilog-A 1.0 uses [] to specify arrays but OVI Verilog-AMS 2.0 uses {}.

Title: Re: Nonlinear operation of small signal noise in Verilog-A
Post by cheap_salary on Oct 21st, 2015, 11:17pm

order has to be 2*order because noise value in noise_table() is phase_noise**2 not phase_noise.

Quote:
Theta(out) <+ Theta(in) / ratio;
Theta(out) <+ noise_table({0,    n,
                          bw,   n,
                          fmax, n * pow((fmax/bw), 2*order)},
                         "dsn") );


Title: Re: Nonlinear operation of small signal noise in Verilog-A
Post by Ken Kundert on Oct 23rd, 2015, 1:45pm

Thanks for your suggestions. I have updated papers to incorporate them.

-Ken

Title: Re: Nonlinear operation of small signal noise in Verilog-A
Post by cheap_salary on Oct 24th, 2015, 2:31am

Since the following is defined in this module.

Code:
parameter real fc = 0 from [0:inf); // flicker noise corner frequency (Hz)


I think noise implementation should be like following.  

Quote:
Theta(out) <+ Theta(in) / ratio;
Theta(out) <+ flicker_noise(n*fc, 1, "fpn");
Theta(out) <+ noise_table({
                           0, n,
                          bw, n,
                        fmax, n*pow((fmax/bw), 2*order)
                          }, "dsn"));
or

Quote:
Theta(out) <+ Theta(in) / ratio;
Theta(out) <+ flicker_noise(n*fc, 1, "fpn");
Theta(out) <+ white_noise(n, "wpn")
Theta(out) <+ noise_table({
                          bw, 0,
                        fmax, n*pow((fmax/bw), 2*order)
                          }, "dsn"));


Title: Re: Nonlinear operation of small signal noise in Verilog-A
Post by cheap_salary on Feb 6th, 2016, 1:34am


cheap_salary wrote on Oct 21st, 2015, 11:17pm:
order has to be 2*order because noise value in noise_table() is phase_noise**2 not phase_noise.

Quote:
Theta(out) <+ Theta(in) / ratio;
Theta(out) <+ noise_table({0,    n,
                          bw,   n,
                          fmax, n * pow((fmax/bw), 2*order)},
                         "dsn") );
It has to be 2*(order-1), since it is phase signal.

For example, frequency charcteristics of MASH-111(order=3) is +40dB/dec for phase noise not +60dB/dec.
On the other hand, +60dB/dec for frequency noise.


The Designer's Guide Community Forum » Powered by YaBB 2.2.2!
YaBB © 2000-2008. All Rights Reserved.