Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Agilent ADS 模擬手冊 [實習3] 壓控振盪器模擬

4,901 views

Published on

https://www.facebook.com/eeRhapsody
壓控振盪器模擬

Published in: Engineering
  • Login to see the comments

Agilent ADS 模擬手冊 [實習3] 壓控振盪器模擬

  1. 1. IV 1.8 GHz (rfsys.ntut@gmail.com) April 2014
  2. 2. 1 (Advanced Design System, ADS) I ADS II DCS 1900 III IV ADS
  3. 3. 2 4.1 4.2 1. ( ) 4.1 (Barkhausen’s Criteria) ( ) ( )G s H s 1( ( ) ( ) 1G s H s = − ) 4.1 ( )G s ( ( )G s ) ( ( )H s ) ( ) ( ) ( )G s H s + + )(sG )(sH oViV fV fod VVV += sf f )(sH )()(1 )( )( sHsG sG V V sG i o f ⋅− == 1)()( =⋅ sHsG (Phase is 0 deg. or multiple of 360 deg.) Barkhausen’s Criteria: Resonator Amplifier 4.1
  4. 4. 3 4.2 ( ) ( ) ( ) 11 1S′ > ( ) GΓ 11S′ 11G S′Γ ⋅ 1( ( ) ( )G s H s 1) 22 1S′ > ( ) 22 1L S′Γ ⋅ = 11 1G S′Γ ⋅ = 22 1L S′Γ ⋅ = ADS term GΓ 11S′ 4.3 11 1G S′Γ ⋅ = ( ADS ) Resonator Output Network0Z 0Z 1a 2a 1b 2b ][S inZ outZ )( 1Γ )( 2Γ LZ )( LΓ GZ )( GΓ ' 11S ' 22S 1' 11 =⋅Γ SG 1' 22 =⋅Γ SL If it is oscillating at one port, it must be simultaneously oscillating at the other port. Two-port Reflection: 4.2 Resonator GZ )( GΓ Output Network0 0Z 1a 2a 1b 2b ][S inZ outZ )( 1Γ )( 2Γ LZ )( LΓ ' 11S ' 22S Term Term1 Z=50 Ohm Num=1 Term Term2 Z=50 Ohm Num=2 4.3
  5. 5. 4 4.4 ( ) ( ) ( )R ω ( )DR ω ( ) ( ) 0DX Xω ω+ = ( 0 ) LRResonator I )()()( ωωω jXRZ += 0)(and,)()()( >+−=− IRIjXIRIZ DDDD )(tv)(tvD One-port Negative Resistance: 0)()( =− ωω DRR 0)()( =+ ωω DXX ( ) ( ) ( )Z j R jXω ω ω= + ( ) ( ) ( )D D DZ j R jXω ω ω− = − + ( ) 0DR ω > 4.4 2. 4.5 Colpitts Hartley (Topology) Hartley Clapp Siler Copitts LC LC LC ( ) ( )1 2f LCπ= ( ) 4.5 ( )
  6. 6. 5 bi ci C E B 1C 2C 3L bi ci C E B 1L 2L 3C bi ci C E B 1C 2C 3L bi ci C E B 1C 2C 3L Colpitts Hartley Clapp Siler 4.5 4.3 1. oscillator ADS Copy a reference design “Osctest_VCO.dsn” from ADS examples: ..examplesTutorialLearnOSC_prjnetworks To your project: oscillator_prjnetworks 4.6 ADS
  7. 7. 6 2. ( ) 4.7 Osctest_VCO.dsn OscTest OscTest ( S_Param ) Z OscTest Start Stop Points Z ( 1 0 ) OscTest VB Vout VE VE VEVres 1.8 GHz Voltage-Controlled Oscillator S-PARAMETER OSCTEST for Loop Gain L L2 R= L=2 nH L R1 R=422 L=100 nH V_DC SRC2 Vdc=-5 V V_DC SRC3 Vdc=12 V L R2 R=681-Rbias L=100 nH R R3 R=50 Ohm C C2 C=1000 pF I_Probe ICC C C1 C=10 pF ap_dio_MV1404_19930601 D1 L L1 R= L=1000 nH V_DC SRC1 Vdc=4.0 V OscTest OscTickler Z=1.1 Ohm Start=0.5 GHz Stop=4.0 GHz Points=201 VAR VAR1 Rbias=50 Eqn Var R R4 R=Rbias pb_hp_AT41411_19921101 Q2 Resonator Active Part (include load network) Varactor: Voltage-controlled capacitor OscTest OscTest is a controller base on S-parameter simulation to determine if the circuit oscillates. 4.7 1.8 GHz 4.8 osc_test.ds dataset S(1,1) OscTest (Polar plot) 1 4.8 (1+j0) S(1,1) 1 S11>1 S(1,1) (1+j0) Maker m1 1.172 0 1.41 GHz 1 GHz 2 GHz ( 1.41 GHz 200 MHz, 5 GHz )
  8. 8. 7 -1.2 -1.0 -0.8 -0.6 -0.4 -0.2 0.0 0.2 0.4 0.6 0.8 1.0 1.2-1.4 1.4 freq (500.0MHz to 4.000GHz) S(1,1) m1 m1 freq= S(1,1)=1.172 / 0.975 1.410GHz Setup the dataset named: osc_test, and data display named: osc_basics. Show S(1,1) on a Polar-plot When the x-axis value of 1.0 is circled by the trace(because S11 > 1), it means that the circuit oscillates. This is the purpose of the OscTest component. S11 > 1 4.8 S(1,1) ( ) 4.9 S(1,1) 1 885 MHz 25 0 1.445 GHz 1.1 1.8 GHz 1.8 GHz −6.6 1.08 1.0 1.5 2.0 2.5 3.0 3.50.5 4.0 -20 -10 0 10 20 30 -30 40 freq, GHz phase(S(1,1)) m4 m5 m4 f req= phase(S(1,1))=0.005 1.445GHz m5 f req= phase(S(1,1))=-6.604 1.795GHz 1.0 1.5 2.0 2.5 3.0 3.50.5 4.0 0.6 0.7 0.8 0.9 1.0 1.1 1.2 0.5 1.3 freq, GHz mag(S(1,1)) m2 m3 m2 f req= mag(S(1,1))=1.013 885.0MHz m3 f req= mag(S(1,1))=1.009 3.982GHz Around 1.8 GHz (Marker m5), the phase is not 0o, but this is OK at this time. The harmonic-balance simulation will be performed later. S11 > 1 above 880 MHz The device is unstable and has a chance to oscillate. 4.9 S(1,1) 3. ( ) 4.10 Osctest_VCO.dsn OscTest HB OscPort OscPort HB V
  9. 9. 8 (HB AC ) NumOctaves Freq[1] Freq[1] 4.10 Freq[1] 1 GHz OscPort NumOctaves 2 0.5 GHz (1 GHz Octave) 2 GHz (1 GHz Octave) Freq[1] 2 Octave OscPort Steps 0.5 GHz 2 GHz 10 Q Steps FundIndex = 1 HB Freq[1] 1 GHz 1 GHz Freq[1] OscPort OscPort OscPort index = 1 Freq[1] HB Order[1] 7 3 7 15 31 ( DC 4 8 16 32 2 ) 7 Order[1] StatusLevel 3 OscMode OscPortName OscPort VE VE VEVres VB HarmonicBalance HB1 OscPortName="Osc1" OscMode=yes StatusLevel=2 Order[1]=7 Freq[1]=1.0 GHz HARMONIC BALANCE OscPort Osc1 MaxLoopGainStep= FundIndex=1 Steps=10 NumOctaves=2 Z=1.1 Ohm V= V_DC SRC1 Vdc=4.0 V L L1 R= L=1000 nH ap_dio_MV1404_19930601 D1 C C1 C=10 pF L L2 R= L=2 nH L R1 R=422 L=100 nH V_DC SRC2 Vdc=-5 V pb_hp_AT41411_19921101 Q2 OscPort Enable the oscillation analysis with “Use Oscport” method. Oscport HB simulation attempts to find the correct oscillating frequency using loop gain and current (Barkhausen’s Criteria). 3 4.10 OscPort
  10. 10. 9 Dataset osc_port.ds Data Display ( Freq[1]) 1.806 GHz 4.11 Vout ( dBm() ) plot_vs(dBm(Vout), freq) x (fundamental) ( 50 dBm() ) ts() 4.12 Eqn loop_current=real(ICC.i[0]) Eqn osc_freq=freq[1] loop_current -0.011 osc_freq 1.806E9 m6 harmindex= dBm(Vout)=7.318 1 1 2 3 4 5 60 7 -30 -20 -10 0 -40 10 harmindex dBm(Vout) m6 m6 harmindex= dBm(Vout)=7.318 1 harmindex 0 1 2 3 4 5 6 7 freq 0.0000 Hz 1.806 GHz 3.611 GHz 5.417 GHz 7.222 GHz 9.028 GHz 10.83 GHz 12.64 GHz harm_power <invalid> 7.318 -2.208 -17.501 -17.061 -27.317 -27.815 -35.340 Eqn harm_power=dBm(Vout[0::1::7]) 2 4 6 8 10 120 14 -30 -20 -10 0 -40 10 freq, GHz dBm(Vout) Fundamental Frequency (oscillation frequency) Use dBm( ) to show the signal power (Note: x-axis is “harmonic index”) Use plot_vs( )to show the signal power versus frequency. (Note: x-axis is now “frequency”) 4.11 -600 -500 -400 -300 -700 -200 ts(Vres),mV -400 -200 0 200 -600 400 ts(VB),mV -600 -500 -400 -300 -700 -200 ts(VE),mV 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.10.0 1.2 -0.5 0.0 0.5 -1.0 1.0 time, nsec ts(Vout),V 4.12 ts( )
  11. 11. 10 4. (Frequency Tuning Sensitivity) (Voltage-controlled oscillator, VCO) (Varactor) ( Tuning sensitivity KV ) MHz/V 1 V KV 1 KV KV KV ( ) HB1 HB HB2 1.8 GHz Freq[1] 1.8 GHz Vtune Vtune 0 V 10 V Step 0.25 V Dataset osc_tune Tune_Step Dataset Freq[1] Vtune Vres HarmonicBalance HB2 Step=Tune_Step Stop=Tune_Stop Start=Tune_Start SweepVar="Vtune" OscPortName="Yes" OscMode=yes StatusLevel=3 Order[1]=7 Freq[1]=1.8 GHz HARMONIC BALANCE VAR VAR2 Tune_Step=0.25 Tune_Stop=10 Tune_Start=0 Vtune=4 V Rbias=50 Eqn Var HarmonicBalance HB1 OscPortName="Osc1" OscMode=yes StatusLevel=3 Order[1]=7 Freq[1]=1.8 GHz HARMONIC BALANCE V_DC SRC1 Vdc=Vtune OscPort Osc1 MaxLoopGainStep= FundIndex=1 Steps=10 NumOctaves=2 Z=1.1 Ohm V= L L1 R= L=1000 nH ap_dio_MV1404_19930601 D1 C C1 C=10 pF Pass the variable “Tune_Step” to dataset Plot oscillating frequency v.s. Tuning voltage “Osc1” 4.13
  12. 12. 11 Freq[1] Vtune 4.14 KV Freq[1] Vtune 4.14 Maker (diff() ) Vtune Vtune( ) KV KV ( ) Vtune 18 V 4.15 12 V ( ) Eqn osc_freq=freq[1] m7 indep(m7)= plot_vs(freq[1], Vtune)=1.806E9 4.000 m8 indep(m8)= plot_vs(freq[1], Vtune)=1.903E9 6.500 1 2 3 4 5 6 7 8 90 10 1.75 1.80 1.85 1.90 1.95 2.00 2.05 1.70 2.10 Vtune freq[1],GHz m7 m8 m7 indep(m7)= plot_vs(freq[1], Vtune)=1.806E9 4.000 m8 indep(m8)= plot_vs(freq[1], Vtune)=1.903E9 6.500 Eqn Tuning_Sensitivity=diff(freq[1])/Tune_Step[0] 1 2 3 4 5 6 7 8 90 10 6.0E7 8.0E7 1.0E8 1.2E8 1.4E8 1.6E8 4.0E7 1.8E8 Vtune Tuning_Sensitivity 1.75E9 1.80E9 1.85E9 1.90E9 1.95E9 2.00E91.70E9 2.05E9 6.0E7 8.0E7 1.0E8 1.2E8 1.4E8 1.6E8 4.0E7 1.8E8 osc_freq[0::1::(tune_pts-1)] Tuning_Sensitivity Eqn f_pts=sweep_size(osc_freq) f_pts 41 tune_pts 40 Eqn tune_pts=sweep_size(Tuning_Sensitivity) Eqn Tuning_Sensitivity_band=(m8-m7)/(indep(m8)-indep(m7)) Tuning_Sensitivity_band 3.904E7 m7 1.806E9 m8 1.903E9 Oscillating frequency v.s. Tuning voltage Calculate tuning sensitivity from makers m7 and m8 Calculate sensitivity by using diff() function. Note: Since no “padding” with diff(), there will be 1 point less than freq[1] points. Sensitivity v.s. Vtune Sensitivity v.s. Frequency 4.14 VAR VAR2 Tune_Step=0.25 Tune_Stop=18 Tune_Start=0 Vtune=4 V Rbias=50 Eqn Var 2 4 6 8 10 12 14 160 18 1.7 1.8 1.9 2.0 2.1 1.6 2.2 Vtune freq[1],GHz m7 m8 m7 indep(m7)= plot_vs(freq[1], Vtune)=1.806E9 4.000 m8 indep(m8)= plot_vs(freq[1], Vtune)=2.134E9 12.000Sweep Vtune up to 18 V The diode is breakdown above 12 V (acts like a resistor), it no longer acts like a variable capacitor. Diode = Varactor Maximum oscillating frequency is 2.13 GHz 4.15
  13. 13. 12 5. (Source Pushing) (Frequency pushing figure) (voltage source) (Source pushing) 4.16 5 V 20 V 0.25 V Dataset osc_push Vres VAR VAR2 Tune_Step=0.25 V Tune_Stop=20 V Tune_Start=5 V Vtune=4 V Vbias=12 V Rbias=50 Eqn Var HarmonicBalance HB2 Step=Tune_Step Stop=Tune_Stop Start=Tune_Start SweepVar="Vbias" OscPortName="Yes" OscMode=yes StatusLevel=3 Order[1]=7 Freq[1]=1.8 GHz HARMONIC BALANCE HarmonicBalance HB1 OscPortName="Osc1" OscMode=yes StatusLevel=3 Order[1]=7 Freq[1]=1.8 GHz HARMONIC BALANCE V_DC SRC1 Vdc=Vtune L L1 R= L=1000 nH ap_dio_MV1404_19930601 D1 C C1 C=10 pF Vout V_DC SRC3 Vdc=Vbias L R2 R=681-Rbias L=100 nH R R3 R=50 Ohm C C2 C=1000 pF I_Probe ICC Change the supply voltage to a variable “Vbias”Sweep the supply voltage “Vbias” from 5 V to 20 V while Vtune is now held constantly at 4 V. (In practice, Vtune is set to a voltage that oscillator oscillates at “target” center frequency.) 4.16 4.17 source pushing 12 V source pushing source pushing figure 21.77 MHz/V m9 indep(m9)= plot_vs(freq[1], Vbias)=1.825E9 13.000 m10 indep(m10)= plot_vs(freq[1], Vbias)=1.781E9 11.000 6 8 10 12 14 16 184 20 0.5 1.0 1.5 0.0 2.0 Vbias freq[1],GHz m9m10 m9 indep(m9)= plot_vs(freq[1], Vbias)=1.825E9 13.000 m10 indep(m10)= plot_vs(freq[1], Vbias)=1.781E9 11.000 Eqn Source_pushing=(m9-m10)/(indep(m9)-indep(m10)) Source_pushing 2.177E7 Plot freq[1] v.s. Vbias to show the source pushing results. Here, use makers and equations to calculate the pushing figure around Vbias = 12 V. As we can see, this oscillator has the source pushing figure equals to 21.77 MHz/V. 4.17
  14. 14. 13 6. (Load Pulling) (Frequency pulling figure) (load) (Load pulling) 50 ( ) 50 Osctest_VCO.dsn Osctest_VCO_pull.dsn HB HB1 HB2 HB HB3 50 S1P_Eqn S1P_Eqn VSWR ( ) Load pulling VSWR 25 MHz@VSWR=1.2 VSWR 1.2 25 MHz 4.18 VSWR VSWR (0 2π VSWR ) VSWRval phi VSWRval ParamSweep HB3 HB3 Dataset Vout VAR VAR1 VSWRval=1 phi=0 nvw=11 vw2=2 vw1=1 Eqn Var HarmonicBalance HB3 Step=0.1 Stop=2 Start=0 SweepVar="phi" OscPortName="Yes" OscMode=y es StatusLev el=3 Order[1]=7 Freq[1]=1.8 GHz HARMONIC BALANCE VAR VAR7 rho=(VSWRv al-1)/(VSWRv al+1) iload=rho*sin(pi*phi) load=rho*exp(j*pi*phi) rload=rho*cos(pi*phi) Eqn Var ParamSweep Sweep1 Lin=nvw Stop=vw2 Start=vw1 SweepVar="VSWRval" PARAMETER SWEEP S1P_Eqn Buf f erLoad S[1,1]=load C C2 C=1000 pF vw1: VSWR sweep start vw2: VSWR sweep stop nvw: num. of VSWR sweep real part of load sweep load Image part of load Sweep load for different constant VSWR circles in Smith chart. Save these variables in dataset 4.18
  15. 15. 14 VSWR 4.19 ( ) Rectangular plot Trace Expression marker ( m12) m12 VSWR 4.20 VSWR VSWR ( phi 0 2π) Rectangular plot VSWR ( VSWR=1.2) phi ( ) ( 1.806 GHz) df_peak VSWR = 1.2 m12 indep(m12)= vs([0::sweep_size(VSWRval)-1],VSWRval)=2.000 1.200 Eqn refl=rload+j*iload Eqn vswr_k=(nvw[0,0]-1)*(indep(m12)-vw1[0,0])/(vw2[0,0]-vw1[0,0]) Eqn VSWR=vswr_k*(vw2[0,0]-vw1[0,0])/(nvw[0,0]-1)+(vw1[0,0]) Eqn LoadRefl=mag(refl[::,1]) Eqn df_peak=max(abs(freq[vswr_k,::,1]-1.806e9)) df_peak 3.202E7 Load Pulling Figure @ VSRW=1.200 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.91.0 2.0 VSWR m12 m12 indep(m12)= vs([0::sweep_size(VSWRval)-1],VSWRval)=2.000 1.200 Write down these equations for load pulling figure measurement @certain VSWR value. (You can change VSWR by scrolling marker m12) Find peak frequency that deviates from center frequency 1.086 GHz. 4.19 phi (0.000 to 2.000) refl[vswr_k,::] m12 indep(m12)= vs([0::sweep_size(VSWRval)-1],VSWRval)=2.000 1.200 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.91.0 2.0 VSWR m12 m12 indep(m12)= vs([0::sweep_size(VSWRval)-1],VSWRval)=2.000 1.200 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.80.0 2.0 0.65 0.70 0.75 0.80 0.85 0.60 0.90 phi ( *pi radians) mag(Vout[vswr_k,::,1]) 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.80.0 2.0 1.7800G 1.7900G 1.8000G 1.8100G 1.8200G 1.8300G 1.7700G 1.8400G phi ( *pi radians) freq[vswr_k,::,1],Hz Eqn refl=rload+j*iload Eqn vswr_k=(nvw[0,0]-1)*(indep(m12)-vw1[0,0])/(vw2[0,0]-vw1[0,0]) Eqn VSWR=vswr_k*(vw2[0,0]-vw1[0,0])/(nvw[0,0]-1)+(vw1[0,0]) Eqn LoadRefl=mag(refl[::,1]) Frequency variation for VSWR = 1.20 Eqn df_peak=max(abs(freq[vswr_k,::,1]-1.806e9)) df_peak 3.202E7 Load Pulling Figure @ VSRW=1.200 Constant VSWR circleVout amplitude variations Frequency variations use @VSWR in the text to show the number 4.20
  16. 16. 15 7. ADS Osctest_VCO.dsn HB 4.21 Order 15( 7 ) ADS Oversample[1] 4 PhaseNoise yes HB Noise Nonlinear noise Noise(1) Noise(2) ADS pnmx ( ) dBc dBc/Hz( ADS Hz y /Hz ) 10 kHz −78.39 dBc/Hz( −78.39 dBc/Hz@10 kHz) −98.34 dBc/Hz@100 kHz −118.08 dBc/Hz@1 MHz HarmonicBalance HB1 OscPortName="Osc1" OscMode=yes SortNoise=Sort by value NoiseNode[1]="Vout" PhaseNoise=yes NLNoiseDec=5 NLNoiseStop=10.0 MHz NLNoiseStart=1.0 Hz Oversample[1]=4 StatusLevel=3 Order[1]=15 Freq[1]=1.8 GHz HARMONIC BALANCE Phase Noise Simulation Setup 4.21 m11 noisefreq= pnmx=-78.390 10.00kHz m13 noisefreq= pnmx=-98.340 100.0kHz m14 noisefreq= pnmx=-118.079 1.000MHz 1E1 1E2 1E3 1E4 1E5 1E61 1E7 -120 -100 -80 -60 -40 -20 0 -140 20 noisefreq, Hz pnmx,dBc m11 m13 m14 m11 noisefreq= pnmx=-78.390 10.00kHz m13 noisefreq= pnmx=-98.340 100.0kHz m14 noisefreq= pnmx=-118.079 1.000MHz 4.22 (pnmx)
  17. 17. 16 4.4 HB

×