The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl Simulators >> RF Simulators >> AHDL block using noise models https://designers-guide.org/forum/YaBB.pl?num=1117071442 Message started by ganesh on May 25th, 2005, 6:37pm |
Title: AHDL block using noise models Post by ganesh on May 25th, 2005, 6:37pm I have been trying to simulate phase noise due to a noisy varactor in a VCO. The VCO uses AHDL blocks to model the varactor. I am using two ways to simulate the noise from this varactor. (i) Using a voltage noise source-(By including a noise file in the voltage source) (ii) By using a equivalent circuit model In both the cases I make sure that I have the same noise PSD. But I get a different phase noise behavior for each of the above two cases. Is this a simulator related issue? Can anyone help me? Thanks, Ganesh. |
Title: Re: AHDL block using noise models Post by Mighty Mouse on May 25th, 2005, 8:48pm You would have to post your models for us to know. |
Title: Re: AHDL block using noise models Post by ganesh on May 26th, 2005, 11:16am Hello MM, Do you want me to post the AHDL models or AHDL models with the equivalent circuit model? If yes, Here is my AHDL block written in SpectreHDL. Let me give you a brief explanation. The varactor model consists of two blocks. The first block gives a voltage output (x(t)) depending on an input voltage V(t) The second block gives a current output based on the value of x(t) and V(t). We are interested in the current output. Block 1: --------- // Spectre AHDL for ahdlmemsmodel, block1, ahdl module block1 ( xn, xp, vn, vp) (epi,A,d1,m,r,k) node [V,I] xn; node [V,I] xp; node [V,I] vn; node [V,I] vp; parameter real epi = 0.0000000000088589312; parameter real A = 0.000000040000; parameter real d1 = 0.00000150; parameter real m = 0.0000000001; parameter real r=0.00002/1; //parameter real r = 0.00050; parameter real k = 3.8; { node [V,I] tem; analog { V(tem) <- dot(V(xp,xn)); V(xp, xn) <- -0.5*epi*A*V(vp,vn)*V(vp,vn)/(k*(d1 + V(xp,xn))*(d1 + V(xp,xn))) - m*dot(V(tem))/k - r*V(tem)/k; } } V(xp,xn) corresponds to x(t). V(vp,vn) corresponds to V(t). Block 2: --------- // Spectre AHDL for ahdlmemsmodel, block2, ahdl module block2 ( outn, outp, vinn, vinp, xinn, xinp) (epi,A,d1,m,r,k) node [V,I] outn; node [V,I] outp; node [V,I] vinn; node [V,I] vinp; node [V,I] xinn; node [V,I] xinp; parameter real epi = 0.0000000000088589312; parameter real A = 0.000000040000; parameter real d1 = 0.00000150; parameter real m = 0.0000000001; parameter real r = 0.00002/1; parameter real k = 3.8; { node [V,I] temv; node [V,I] temx; analog { V(temv) <- dot(V(vinp,vinn))*0.000000001; V(temx) <- dot(V(xinp,xinn)); I(outp,outn) <- 4*epi*A*V(temv)*1e9/(V(xinp,xinn)+d1) + -4*epi*A*V(vinp,vinn)*V(temx)/((V(xinp,xinn)+d1)*(V(xinp,xinn)+d1)); } } V(xinp,xinn) corresponds to the output of the first block(x(t)) and V(vinp,vinn) corresponds to V(t). I know the noise PSD of x(t). so I attach the noise model at the input of the second block, in such a way that the output of the noise model adds to x(t) before it is input to the second block. The equivalent circuit model consists of a series RLC circuit with the voltage across the capacitor as ouput. The equivalent circuit model acts as a noise shaping low pass filter. Please let me know if you need any more information. Thanks, Ganesh. |
The Designer's Guide Community Forum » Powered by YaBB 2.2.2! YaBB © 2000-2008. All Rights Reserved. |