I want to simulate the phase noise of the whole PLL. It is easy to simulate the phase noise of the individual blocks in the PLL, but how to simulate the phase noise of the whole PLL?
Should we use Mablab or Cadence to build the noise model for the PLL? Any suggestion or links are welcome.
Yes, I know Designer's guide. But a friend in Broadcom said that using VerilogA/MS is not good to simulate phase noise of PLL. He said the best way is to use matlab. So I want to know the procedure to use spectre and matlab to simulate PLL phase noise. Any suggestions?
the issue comes from the very different frequency range of involved signals.
A PLL is a NONLINEAR system in which high & low freq, analog & digital signals are commonly present. A circuit simulator, time or freq based, cannot do it very well.
So designers prefer to make a linear model of PLL, analyze all transfer functions in the loop towards the output.
From circuit simulators single block noise is simulated and then used as input into the linear model.
To make this model, you can use any math tool, commonly matlab and mathcad are used. There is also a simulator developed for this use and is CPPSIM, free of charge.
hi friend,
do you have this book:
DIGITAL PHASE LOCK LOOPS: Architectures and Applications
by: SALEH R. AL-ARAJI, ZAHIR M. HUSSAIN, MAHMOUD A. AL-QUTAYRI 2006
---------------------------------------------------------
PHASE-LOCKED LOOPS FOR WIRELESS COMMUNICATIONS
by: Donald R. Stephens 2002
Thank you very much for your reply. So the conclusion is that mathematical method is a better way to do phase noise simulation.
If the noise or phase noise of sub-blockes of PLL is called data, the transfer function is called TF, then the resultant phase noise is 10log(sum of (data^2*TF^2)), right? If this is right. Then because data from spectre is a vector corresponding some frequency range, so we should also get the vector of the TF of the same frequency range with the same size of data, right? If the transfer function of one noise is 1/(1+(Kpfd*Kvco*Flp(s)/N*s)), should I use spectre to get the vector of the TF or use matlab directly to get the vector of the TF?
Added after 44 seconds:
Aya2002 said:
hi friend,
do you have this book:
DIGITAL PHASE LOCK LOOPS: Architectures and Applications
by: SALEH R. AL-ARAJI, ZAHIR M. HUSSAIN, MAHMOUD A. AL-QUTAYRI 2006
---------------------------------------------------------
PHASE-LOCKED LOOPS FOR WIRELESS COMMUNICATIONS
by: Donald R. Stephens 2002
I didn't understand exactly all your issues, but... what I can say is that you should consider all different noise TF to output, sum all noise densities at output node, then convert it in dBc.
You should use simulator to get your noise data from each block and then apply it as input into math tool.
I didn't understand exactly all your issues, but... what I can say is that you should consider all different noise TF to output, sum all noise densities at output node, then convert it in dBc.
You should use simulator to get your noise data from each block and then apply it as input into math tool.
I know different noise source has different TF. What I said is only a example. I mean if I want to use matlab to calculate phase noise, how should I get the vector of the TF? By matlab itself or by simulator such as spectre?
for example,
you know the H(S) for oscillator = 1/(1+Ao(s)) where Ao(S) is the open loop gain of the PLL.
next step find the phase noise of oscillator Nvco(S) , you can simply use the math. equation to represent it.
Then you Phase noise Lvco(S) = Nvco(S)/|1+Ao(S)|^2.
You simply add all phase noise and get the plot of total phase noise