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 模擬手冊 [實習1] 基本操作與射頻放大器設計

8,793 views

Published on

https://www.facebook.com/eeRhapsody
基本操作與射頻放大器設計

Published in: Engineering
  • Login to see the comments

Agilent ADS 模擬手冊 [實習1] 基本操作與射頻放大器設計

  1. 1. I ADS 1.9 GHz (rfsys.ntut@gmail.com) April 2014
  2. 2. 1 (Advanced Design System, ADS) DCS 1900 I ADS II DCS 1900 III IV ADS
  3. 3. 2 1.1 LC ADS ADS ADS 1.2 1. ADS 1.1 ADS ADS 1.1 File View Tools Window DesignKit DesignGiude Help File View Tools ADS (Preferences) (Advanced Design System Setup) Window DesignKit Foundry IC ( 0.18 m CMOS designkit ADS ) DesignGuide ADS Help ADS Help ADS File Browser
  4. 4. 3 2. (Project) (1) Lab1 (2) (3) File Browser /networks /data Data Display Lab1_prj 1.2 3. (Schematic) (1) ADS File New Design (2) LPF Analog/RF Network (3) LPF Ctrl+s /network ADS (schematic) .dsn design Ctrl + s (save design) 1.3
  5. 5. 4 4. LC (1) (Palette) Lump-Components( ) (DC) (AC) (Transient) (S-parameter) (Circuit Envelope) (Harmonic Balance) (2) C L Ctrl+r 1 pF 3 pF 1 nH Ctrl + r (rotate component) 1.4 (3) Simulation-S_Param SP Term term 1.5 1.5
  6. 6. 5 (4) SP1 1 GHz 10 GHz 0.5 GHz ADS 1 GHz 1.5 GHz 2 GHz 2.5 GHz 3 GHz… 10 GHz 0.5 GHz S_Param SP1 Step=0.5 GHz Stop=10.0 GHz Start=1.0 GHz S-PARAMETERS Select the parameters to display out 1.6 (5) F7 ADS ( Data Display ADS .dds ) Data Display Simulate Simulation Setup Open Data Display when simulation completes After simulation completed, the data display window will pop out. If data display didn’t pop out, go back your schematic window and select Simulation Setup. Here is the controlling option 1.7 Data Display
  7. 7. 6 (6) Data Display Rectangular Plot S(2,1) dB Marker Marker S(2,1) Marker Ctrl+s Data Display 1.8 Rectangular Plot m1 freq= dB(S(2,1))=-3.850 5.500GHz 2 3 4 5 6 7 8 91 10 -20 -15 -10 -5 -25 0 freq, GHz dB(S(2,1)) m1 m1 freq= dB(S(2,1))=-3.850 5.500GHz 1.9 Marker
  8. 8. 7 (7) .ds /data schematic /networks Data Display Open An Existing Data Display Display 1.10 Data Display 5. (Tuning Parameters) (1) tuning schematic tune Select the parameters you want to tune from “schematic” window. Parameter On/OFF 1.11
  9. 9. 8 (2) Tuning ADS tune Store tune Update Schematic schematic 2 3 4 5 6 7 8 91 10 -25 -20 -15 -10 -5 -30 0 freq, GHz dB(S(2,1)) m1 m1 freq= dB(S(2,1))=-2.650 5.500GHz You can save the tuned traces and show them out. Tuning by scrolling bar or specifying values. Tuning range and step are also provided.You can update the tuned values to schematic. 1.12 1.3 LC ADS
  10. 10. 9 2.1 DCS-1900 GSM ADS I-V BJT I-V (Tracer) ADS 2.2 1. amp1900 bjt_pkg 2. BJT (1) Devices-BJT BJT_NPN BJT_Model Data Sheet (2) 2.1 ( Schematic ) BJT_Model BJTM1 AllParams= Xti= Xtb= Eg= Trise= Tnom= Approxqb=yes RbModel=MDS Lateral=no Ffe= Nk= Ns= Iss= Rbnoi= Fb= Ab= Kb= Af= Kf= Tr= Ptf= Itf= Vtf= Tf= Xtf= Fc= Mjs= Vjs= Cjs= Xcjc= Mjc= Vjc= Cjc= Mje= Vje= Cje= Imelt= Imax= Cco= Cex= Dope= Rcm= Rcv= Rc= Re= Rbm= Irb= Rb= Vbo= Gbo= Cbo= Nc= C4= Isc= Kc= Ke= Ikr= Var= Nr= Br= Ne= C2= Ise= Ikf= Vaf= Nf= Bf= Is= PNP=no NPN=yes BJT_NPN BJT1 Mode=nonlinear Trise= Temp= Region= Area= Model=BJTM1 BJT_Model BJTM1 BJT_NPN BJT1 Mode=nonlinear Trise= Temp= Region= Area= Model=BJTM1 Double click Turn parameter visibility off. parameter visibility off 2.1 (Model Card)
  11. 11. 10 (3) Bf( BJT Beta) Vaf( ) Ise( ) 2.2 Display parameter on schematic Schematic BJT_Model BJTM1 BJT_NPN BJT1 Mode=nonlinear Trise= Temp= Region= Area= Model=BJTM1 Double click BJT_Model BJTM1 Ise=0.02e-12 Vaf=50 Bf=beta BJT_NPN BJT1 Mode=nonlinear Trise= Temp= Region= Area= Model=BJTM1 Check to show this parameter. 2.2 (4) ( ) 320 pH ( ) 120 fF ”Port” Port (Collector) (Base) (Emitter) Data Sheet (Infineon) SiGe BJT BFP640 Data Sheet C C2 C=120 fF C C1 C=120 fF L L3 R= L=320 pH Port P3 Num=3 BJT_Model BJTM1 Ise=0.02e-12 Vaf=50 Bf=beta L L1 R=0.01 Ohm L=320 pH L L2 R= L=320 pH Port P2 Num=2 Port P1 Num=1 BJT_NPN BJT1 Model=BJTM1 Package parasitics Package parasitics 2.3
  12. 12. 11 (5) View Create/Edit Schematic Symbol (Symbol) Help Symbol Type Order Pins by ADS Ctrl+Shift+t Port C B E C B E3 1 2 C B E 1 32 Ctrl + Shift + t to add texts ”B, C, E” Rearrange the pin location 2.4 (6) ADS (5) File Design Parameters Q Symbol Name SYM_BJT_NPN( More Symbols ) Use ADS internal symbol Package artwork Save this AEL file (ADS system file) 2.5 ADS
  13. 13. 12 (7) Design Parameters Parameter beta 100 2.6 3. BJT I-V (1) dc_curves Schematic (Library) Projects bjt_pkg Schematic beta Create a new design named: dc_curves Select “Projects” Open library Choose “bjt_pkg” we’ve created and put it into the schematic. 2.7
  14. 14. 13 (2) Library Analog/RF DC_BJT BJT I-V Curve Tracer FET Curve Tracer Tracer (Push into Hierarchy) DC_BJT Tracer Port Collector Num=2 Port Base Num=1 I_Probe IC I_DC SRC1 Idc=IBB ParamSweep S1 SweepVar="IBB" SimInstanceName[1]="DC1" SimInstanceName[2]= SimInstanceName[3]= SimInstanceName[4]= SimInstanceName[5]= SimInstanceName[6]= Start=IBB_start Stop=IBB_stop Lin=IBB_points PARAMETER SWEEP VAR VAR1 VCE=1.5 IBB=1.0 mA Eqn Var V_DC SRC2 Vdc=VCE DC DC1 SweepVar="VCE" Start=VCE_start Stop=VCE_stop Lin=VCE_points DC MeasEqn meas1 DC_power=IC.i*VCE Eqn Meas Open Analog/RF library and find the DC tracer for BJT DC tracer for FET is also available Put the tracer into schematic Push into hierarchy, you can see how “DC tracer” is implemented. 2.8 BJT I-V Curve Tracer (3) 2.9 Tracer Base Tracer Collector Tracer IBB 0 uA 100 uA VCE 0 V 5 V Data Display (IC) - VCE ( I-V Curve) Marker PDC=indep(m1)*m1 indep(m1) m1 (4) beta = 160 (5) I-V Curve Tracer 2.10 Insert Template BJT_curve_tracer
  15. 15. 14 bjt_pkg Q1 beta=100 DC_BJT DC_BJT1 VCE_points=41 VCE_stop=5.0 VCE_start=0 IBB_points=11 IBB_stop=100 uA IBB_start=0 uA BJT Curve Tracer Base Collector m1 indep(m1)= plot_vs(IC.i, VCE)=0.002 DC_BJT1.IBB=0.000040 3.000 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.50.0 5.0 0.000 0.002 0.004 0.006 -0.002 0.008 VCE IC.i m1 m1 indep(m1)= plot_vs(IC.i, VCE)=0.002 DC_BJT1.IBB=0.000040 3.000 indep(m1) 3.000 m1 0.002 PDC 0.007 VCE Eqn PDC=indep(m1)*m1 IC PDC m1 indep(m1)= plot_vs(IC.i, VCE)=0.003 DC_BJT1.IBB=0.000040 3.000 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.50.0 5.0 0.000 0.002 0.004 0.006 0.008 0.010 -0.002 0.012 VCE IC.i m1 m1 indep(m1)= plot_vs(IC.i, VCE)=0.003 DC_BJT1.IBB=0.000040 3.000 indep(m1) 3.000 m1 0.003 PDC 0.010 VCE Eqn PDC=indep(m1)*m1 IC PDC Simulate with beta=100, and plot collector current IC v.s. collector-emitter voltage VCE. Simulate with beta=160 2.9 BJT I-V Curve Insert the template of BJT_curve tracer The tracing circuits are automatically generated. All sweeping parameters are BJT Curve Tracer ParamSweep Sweep1 Step=10 uA Stop=100 uA Start=0 uA SimInstanceName[6]= SimInstanceName[5]= SimInstanceName[4]= SimInstanceName[3]= SimInstanceName[2]= SimInstanceName[1]="DC1" SweepVar="IBB" PARAMETER SWEEP bjt_pkg Q1 beta=100 I_Probe IC V_DC SRC1 Vdc=VCE I_DC SRC2 Idc=IBB DC DC1 SweepVar="VCE" Start=0 Stop=5 Step=0.1 DC VAR VAR2 VCE =0 V IBB =0 A Eqn Var DisplayTemplate disptemp1 "BJT_curve_tracer" Temp Disp 2.10 I-V Curve Tracer (Template)
  16. 16. 15 4. (1) dc_curves.dsn dc_bias.dsn BJT beta 160 I-V Curve IBB - VCE Data Display Equation VCE 3 V (2) 2.11 DC Controller DC1 Output Save by name VCE Dataset Data Display ADS ”Var Eqn” Controller SweepVar( ) Dataset ( IBB) ( Wire) Dataset ( VBE) I_Probe ( IC) VCE 3 V Save by name Dataset VBE VAR VAR2 VCE= 3 V IBB =0 A Eqn Var DC DC1 Step=10 uA Stop=100 uA Start=10 uA SweepVar="IBB" DC V_DC SRC1 Vdc=VCE bjt_pkg Q1 beta=160 I_Probe IC I_DC SRC2 Idc=IBB IBB 1.000E-5 2.000E-5 3.000E-5 4.000E-5 5.000E-5 6.000E-5 7.000E-5 8.000E-5 9.000E-5 1.000E-4 IC.i 599.8 uA 1.430 mA 2.349 mA 3.325 mA 4.341 mA 5.389 mA 6.462 mA 7.557 mA 8.669 mA 9.798 mA VBE 754.8 mV 777.1 mV 789.9 mV 798.8 mV 805.7 mV 811.3 mV 815.9 mV 819.9 mV 823.5 mV 826.6 mV VCE 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.000 Double click the DC controller Add “variables” pass to data display Choose “VCE” then add it Show the simulated results IC.i, VBE, and VCE in a table. Here VCE is passed from the schematic “VAR” block. 2.11 Schematic Dataset
  17. 17. 16 (3) 2.12 VCC 5 V (2) VCE 3 V RC 2 V IC RC RB IBB VCE-VBE list IBB VCE = 3 V IC = 3.325 mA IBB 40uA RB 55.029 kOhm RC 601.5 Ohm RB 56 kOhm RC 590 Ohm Eqn Rb=(VCE-VBE)/IBB Eqn Rc=VRc/IC.i Eqn VRc=VCC-VCE IBB 1.000E-5 2.000E-5 3.000E-5 4.000E-5 5.000E-5 6.000E-5 7.000E-5 8.000E-5 9.000E-5 1.000E-4 Rb 224518.366 111142.833 73669.698 55029.027 43886.103 36479.132 31201.140 27250.726 24183.637 21733.818 Rc 3334.233 1398.882 851.344 601.500 460.687 371.123 309.494 264.671 230.704 204.133 Rb[3] 55029.027 Rc[3] 601.500 Eqn VCC=5 V Add an equation to calculate the bias resistance at BJT base Assume the power rail VCC is 5 V Calculate the voltage across the bias resistor at collector (here, 2 V) Calculate the bias resistance at BJT collector Index = 0 Index = 1 Index = 2 Index = 3 Bias resistor values @ IBB= 40 uA (index=3) Note that the standard resistance you can find in practice is 56k Ohm and 590 Ohm. 2.12 (4) dc_bias.dsn dc_net.dsn dc_net 5 V Simultae Annotate DC Solution Clear DC Annotation VC VBE V_DC SRC1 Vdc=5 V R RB R=56 kOhm R RC R=590 Ohm VAR VAR2 VCE= 3 V IBB =0 A Eqn Var DC DC1 DC I_Probe IC bjt_pkg Q1 beta=160 Turn off the variable sweeping, and add bias resistors. 3.03 V VC 799 mV VBE 5 V 5 V -3.34 mA V_DC SRC1 Vdc=5 V -39.8 uAR RB R=56 kOhm 3.34 mA R RC R=590 Ohm VAR VAR2 VCE= 3 V IBB =0 A Eqn Var DC DC1 DC 3.34 mA I_Probe IC 3.31 mA 39.8 uA -3.34 mA bjt_pkg Q1 beta=160 First run simulation After simulation, choose annotate DC solution to show node voltages and branches currents in the network. Clear all annotations 2.13
  18. 18. 17 5. (1) I-V ADS Transistor Bias Utility I-V (2) dc_bias2 Library bjt_pkg Transistor Bias BJT Bias Smart Component 5 V 2.14 (3) DesignGuide Amplifier Tools Transistor Bias Utility (4) Utility Vcc 5 V Vce 3 V Ic 3.325 mA Bias Point Selections ADS I-V Data Display I-V A Set characteristic impedance, and base current and collector voltage sweep limits as needed. In the event that this template does not provide the required information for the application, it can be appropriately modified. bjt_pkg Q1 beta=160 ParamSweep Sweep1 Step=IBBstep Stop=IBBmax Start=IBBmin SimInstanceName[6]= SimInstanceName[5]= SimInstanceName[4]= SimInstanceName[3]= SimInstanceName[2]= SimInstanceName[1]="DC1" SweepVar="IBB" PARAMETER SWEEP DC DC1 Step=VCEstep Stop=VCEmax Start=VCEmin SweepVar="VCE" DC Options Options1 Tnom=25 Temp=16.85 OPTIONS VAR VAR1 Rload=50 _ohms IBB=0 A VCE=0 V Eqn Var VAR VAR3 Z0=50 IBBmin=20 uA IBBmax=100 uA IBBstep=20 uA VCEmin=0.25 V VCEmax=5 V VCEstep=0.1 V Eqn Var DC_Block DC_Block2 DC_Block DC_Block1 DC_Feed DC_Feed2 DC_Feed DC_Feed1 I_DC SRC2 Idc=IBB Term Term1 Z=Z0 Num=1 V_DC SRC1 Vdc=VCE I_Probe IC Term Term2 Z=Z0 Num=2 m1 VCE= IC.i=5.494m IBB=0.000060 2.200 m2 VCE= IC.i=8.793m IBB=0.000100 400.0m 1 2 3 40 5 0.000 0.005 0.010 0.015 -0.005 0.020 IBB=20.0u IBB=40.0u IBB=60.0u IBB=80.0u IBB=100.u VCE IC.i,A m1 m2 line_opt VCEvals ICmax line m1 VCE= IC.i=5.494m IBB=0.000060 2.200 m2 VCE= IC.i=8.793m IBB=0.000100 400.0m 12.09 m Eqn VCEmax=5 523.151 2.969 m 24.56 Eqn PDmax=0.03 Follow these steps: 1) Move marker m2 to the knee of the I-V curve. This sets the maximum collector current during AC operation. 2) Specify maximum allowed VCE, VCEmax. The optimal bias point values are determined from the load line between marker m2 and the (IC=0, VCE=VCEmax) point. 3) Specify maximum allowed DC power dissipation, PDmax, in Watts. 4) Position marker m1 at some other bias point, if desired. (Must be less than VCEmax.) 5) DC power consumption, average output power in linear operation, DC-to-RF efficiency at marker m1 bias point are all calculated. 5.056 m 2.700 4.396 m 545.702 11.87 m 42.59 30.0u 40.0u 50.0u 60.0u 70.0u 80.0u 90.0u 20.0u 100.u 100 150 200 250 50 300 IBB Beta Beta versus IBB, at ICE specified bymarker m1 DC-to-RF Efficiency,% DC Power ConsumptionRload Output Power Watts dBm DC-to-RF Efficiency,% Optimal VCE Optimal ICE DC Power Consumption at Optimal Bias Output Power at Optimal Bias Watts dBm Rload at Optimal Bias Optimal Class A bias point values. Marker m1 bias point values, (Assuming Class A, AC current limited to marker m2 value and AC voltage no higher than VCEmax.) 7.038 4.726 Device IV Curves, Load Lines, and Maximum DC Dissipation Curve Equations are on the "Equations" page. Use ADS transistor bias utility Bias testing setup is automatically genrated. 2.14 ADS
  19. 19. 18 (5) Vce 3 V Ic 3.325 mA Design ADS 8 2.15 5 OK ADS Schematic Push into Hierarchy RB 55 kOhm RC 594.35 Ohm RB 56 kOhm RC 590 Ohm 3.00 3.33 m 799. mV 40.0 uA 3.00 V 3.33 mA 0.000 V 3.37 mA BJT Bias Display Assistant Transistor Bias Designer Achiev ed Bias Perf ormance Achiev ed Bias Voltage/Current Desired Bias Perf ormance Need Help? Please see the Transistor Bias Utility User Manual f or complete instructions on using this Display . Vce Ib Vc Ic Ve IeVb 3.00 3.33 mA Ic Port P4 Num=4 Port P3 Num=3 Port P2 Num=2Port P1 Num=1 R R3 R=0 mOhm R R2 R=55.001167 kOhm R R1 R=594.349814 Ohm 8 biasing topologies are provided 2.15 6. (1) 2.16 DC Controller temp( ADS VAR ) -55 125 5 (2) 2.17 Dataset ( dc_temp) dc_net Display Data Display dc_temp Dataset VCE VBE
  20. 20. 19 VC VBE DC DC1 Step=5 Stop=125 Start=-55 SweepVar="temp" DC V_DC SRC1 Vdc=5 V R RB R=56 kOhm R RC R=590 Ohm VAR VAR2 VCE= 3 V IBB =0 A Eqn Var I_Probe IC bjt_pkg Q1 beta=160 Sweep temperature variable “temp” from -55 to 125 degree. Show the variable 2.16 m1 indep(m1)= plot_vs(VC, temp)=3.079 -55.000 m2 ind Delta= dep Delta=-0.122 Delta Mode ON 180.000 -40 -20 0 20 40 60 80 100 120-60 140 1.0 1.5 2.0 2.5 3.0 0.5 3.5 temp VBE VC m1 m2 m1 indep(m1)= plot_vs(VC, temp)=3.079 -55.000 m2 ind Delta= dep Delta=-0.122 Delta Mode ON 180.000 Store simulate data into a separate dataset. Use Add Vs. to plot VBE and VC v.s. temp 2.17 7. (1) dc_sparam bjt_pkg (2) ADS Template SP_NWA_T ADS Data Display 2.18 (3) T (Bias-Tee) (Probe Station) (Test Fixture) I-V Tracer
  21. 21. 20 Activate for available gain and stability circles: SP_NWA X1 Port2Z=50 Port1Z=50 VBias2=3.03 V VBias1=799 mV NumPoints=101 Stop=5 GHz Start=0.1 GHz + + 21 bjt_pkg Q1 beta=160 DisplayTemplate disptemp1 "S_21_11_wZoom" "SP_NWA_T" Temp Disp DisplayTemplate disptemp2 "Circles_Stability" "Circles_Ga_Stab" Temp Disp Eqn F_lim1index=find_index(SP.freq,indep(F_lim1)) Eqn F_lim2index=find_index(SP.freq,indep(F_lim2)) Eqn low_index=if (F_lim1index<F_lim2index) then F_lim1index else F_lim2index Eqn high_index=if (F_lim2index>F_lim1index) then F_lim2index else F_lim1index Eqn ph=[-pi::0.01*pi::pi] Eqn mag_gamma=(VSWRcircleVal-1)/(VSWRcircleVal+1) Eqn gamma_cmplx=mag_gamma*exp(j*ph) EqnVSWRcircleVal=2.5 freq (100.0MHz to 5.000GHz) S(1,1) Input Reflection Coefficient F_lim1 freq= dB(S(2,1))=20.323 2.060GHz F_lim2 freq= dB(S(2,1))=19.794 2.501GHz 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.50.0 5.0 17 18 19 20 21 16 22 freq, GHz dB(S(2,1)) F_lim1 F_lim2 F_lim1 freq= dB(S(2,1))=20.323 2.060GHz F_lim2 freq= dB(S(2,1))=19.794 2.501GHz 2.10 2.15 2.20 2.25 2.30 2.35 2.40 2.45 2.50 2.05 2.55 19.8 19.9 20.0 20.1 20.2 20.3 19.7 20.4 freq, GHz dB(S(2,1)) freq (2.060GHz to 2.501GHz) S(1,1) indep(gamma_cmplx) (0.000 to 200.000) Forward Transmission, dB Zoomed Forward Transmission, dB Zoomed Input Reflection Coefficient Move markers to set frequency range of data displayed in "zoomed" plots Set value for constant-VSWR circle here: Use with S-Parameter Simulations Insert S-parameter simulation template SP_NWA_T No simulation controller needed, just run simulation. Results are automatically generated. 2.18 SP_NWA_T 8. (1) ADS Library ADS Library ADS (2) Data Sheet DesignKit ADS ADS (NXP) ADS DesignKit http://www.nxp.com/models/ Renesas http://www2.renesas.com/microwave/en/discrete/sigehbt.html DesignKit (Foundry) TSMC 0.18 um Mixed-Signal/RF CMOS DesignKit IC (3) 2.19 Library Microwave Transistor Library RF Transistor Library Schematic Agilent AT41533
  22. 22. 21 VBE pb_hp_AT41533_19950125 Q3 V_DC SRC1 Vdc=VCE I_Probe IC I_DC SRC2 Idc=IBB 2.19 2.3 Design Parameter I-V
  23. 23. 22 3.1 ADS (AC Simulation) PSPICE 3.2 1. ac_sim 2. (1) dc_net ac_sim 3.1 BJT (DC Block) (AC-coupled Capacitor) 50 Ohm (2) Vin Vout (3) DC blocks BJT Vout Vin V_AC SRC2 Freq=freq Vac=polar(1,0) V R R1 R=50 Ohm DC_Block DC_Block2 DC_Block DC_Block1 R RB R=56 kOhm bjt_pkg Q1 beta=160 Vcc V_DC SRC1 Vdc=5 V Vcc R RC R=590 Ohm AC voltage source DC block is an ideal ac-coupled capacitor Same node 3.1
  24. 24. 23 3. AC (1) AC Controller 100 MHz 4 GHz 100 MHz 3.2 (2) AC Controller Noise Calculate noise Vout Display CalcNoise NoiseNode AC AC1 Step=100 MHz Stop=4.0 GHz Start=100 MHz AC AC AC1 NoiseNode[1]="Vout" CalcNoise=yes Step=100 MHz Stop=4.0 GHz Start=100 MHz AC Setup noise 3.2 AC 4. AC (1) list name vnc Vout index freq=100.0 MHz 0 1 2 3 4 5 6 7 8 freq=200.0 MHz 0 1 2 3 4 5 6 7 8 freq=300.0 MHz 0 1 2 3 4 5 6 name _total Q1.BJT1 Q1.BJT1.ibe Q1.BJT1.ice Q1.L1 R1 RB RC SRC2 _total Q1.BJT1 Q1.BJT1.ibe Q1.BJT1.ice Q1.L1 R1 RB RC SRC2 _total Q1.BJT1 Q1.BJT1.ibe Q1.BJT1.ice Q1.L1 R1 RB vnc 1.729 nV 1.494 nV 8.479 pV 1.494 nV 75.74 pV 833.3 pV 24.90 pV 242.6 pV 0.0000 V 1.728 nV 1.492 nV 16.93 pV 1.492 nV 75.65 pV 833.0 pV 24.89 pV 242.5 pV 0.0000 V 1.725 nV 1.489 nV 25.35 pV 1.489 nV 75.51 pV 832.7 pV 24.88 pV 3.3 ADS
  25. 25. 24 (2) Schematic Measurement Equation 3.4 Output Measurement Equation gain_voltage dataset (3) Data Display gain_voltage dB Data Display Vout Vin 3.5 Eqn Gain_dB=20*log(gain_voltage) freq 100.0 MHz 200.0 MHz 300.0 MHz 400.0 MHz 500.0 MHz 600.0 MHz 700.0 MHz 800.0 MHz 900.0 MHz 1.000 GHz 1.100 GHz 1.200 GHz 1.300 GHz 1.400 GHz 1.500 GHz 1.600 GHz 1.700 GHz 1.800 GHz 1.900 GHz 2.000 GHz 2.100 GHz 2.200 GHz 2.300 GHz 2.400 GHz 2.500 GHz 2.600 GHz 2.700 GHz 2.800 GHz Gain_dB 15.419 15.409 15.393 15.370 15.340 15.305 15.263 15.215 15.162 15.103 15.039 14.970 14.896 14.818 14.735 14.649 14.558 14.465 14.368 14.268 14.165 14.060 13.953 13.844 13.733 13.621 13.507 13.392 Gain_dB1 15.419 15.409 15.393 15.370 15.340 15.305 15.263 15.215 15.162 15.103 15.039 14.970 14.896 14.818 14.735 14.649 14.558 14.465 14.368 14.268 14.165 14.060 13.953 13.844 13.733 13.621 13.507 13.392 dB(gain_voltage) 15.419 15.409 15.393 15.370 15.340 15.305 15.263 15.215 15.162 15.103 15.039 14.970 14.896 14.818 14.735 14.649 14.558 14.465 14.368 14.268 14.165 14.060 13.953 13.844 13.733 13.621 13.507 13.392 Eqn Gain_dB1=20*log(mag(Vout)/mag(Vin)) Add measurement equation in schematic The variables of measurement equation would output to dataset by default. There are several ways to calculate voltage gain in dB. 3.4 0.5 1.0 1.5 2.0 2.5 3.0 3.50.0 4.0 4.0 4.5 5.0 5.5 3.5 6.0 freq, GHz gain_voltage 0.5 1.0 1.5 2.0 2.5 3.0 3.50.0 4.0 12.0 12.5 13.0 13.5 14.0 14.5 15.0 11.5 15.5 freq, GHz Gain_dB Gain in linear scale Gain in dB 1E91E8 4E9 12.0 12.5 13.0 13.5 14.0 14.5 15.0 11.5 15.5 freq, Hz Gain_dB x-axis in log-scale 3.5
  26. 26. 25 5. (1) (2) 3.6 You can write an equation to calculate the group delay. 3.6 6. (1) 3.7 AC AC1 NoiseNode[1]="Vout" CalcNoise=no Step=100 MHz Stop=4.0 GHz Start=100 MHz AC ParamSweep Sweep1 Step=0.5 Stop=5 Start=0 SimInstanceName[6]= SimInstanceName[5]= SimInstanceName[4]= SimInstanceName[3]= SimInstanceName[2]= SimInstanceName[1]="AC1" SweepVar="Vdcs" PARAMETER SWEEP Vcc V_DC SRC1 Vdc=Vdcs VAR VAR2 Vdcs=5 V Eqn Var 0.5 1.0 1.5 2.0 2.5 3.0 3.50.0 4.0 1 2 3 4 5 0 6 freq, GHz gain_voltage Use a sweep plane to sweep variable “Vdcs” with “AC1” simulation. Vcc is now controlled by a variable “Vdcs” to consider supply rail variations. Gain versus power rail voltage variation. 3.7 Parameter Sweep
  27. 27. 26 7. (1) V_AC ( ) P_AC( 50 ) V_AC 3.8 Term2 3.1 R1 Vout Vin MeasEqn Meas1 gain_voltage=mag(Vout)/mag(Vin) Eqn Meas Term Term2 Z=50 Ohm Num=2P_AC PORT1 Freq=freq Pac=polar(dbmtow (0),0) Z=50 Ohm Num=1 DC_Block DC_Block2 DC_Block DC_Block1 R RB R=56 kOhm bjt_pkg Q1 beta=160 Vcc R RC R=590 Ohm index freq=100.0 MHz 0 1 2 3 4 5 6 7 8 freq=200.0 MHz 0 1 2 3 4 5 6 7 8 freq=300.0 MHz 0 1 2 3 4 5 6 name _total PORT1 Q1.BJT1 Q1.BJT1.ibe Q1.BJT1.ice Q1.L1 RB RC Term2 _total PORT1 Q1.BJT1 Q1.BJT1.ibe Q1.BJT1.ice Q1.L1 RB RC Term2 _total PORT1 Q1.BJT1 Q1.BJT1.ibe Q1.BJT1.ice Q1.L1 RB vnc 5.382 nV 5.001 nV 1.783 nV 984.2 pV 1.486 nV 70.80 pV 174.2 pV 241.4 pV 829.2 pV 5.376 nV 4.995 nV 1.780 nV 983.0 pV 1.484 nV 70.71 pV 174.0 pV 241.3 pV 829.0 pV 5.365 nV 4.984 nV 1.777 nV 981.1 pV 1.481 nV 70.56 pV 173.6 pV Port noises are considered 3.8 3.3 ( )
  28. 28. 27 4.1 L ADS ( ) 4.2 1. ac_sim sparam_sim.dsn 2. (1) Term (RF Choke DC Feed) 4.1 (2) AC DC Block Choke (RF) RF (AC ) RF ( AC ) Vout Vin S_Param SP1 Step=100 MHz Stop=4 GHz Start=100 MHz S-PARAMETERS VAR VAR2 Vdcs=5 V Eqn Var Vcc V_DC SRC1 Vdc=Vdcs DC_Feed DC_Feed1 R RB R=56 kOhm DC_Feed DC_Feed2 Vcc R RC R=590 Ohm Term Term2 Z=50 Ohm Num=2Term Term1 Z=50 Ohm Num=1 DC_Block DC_Block2 DC_Block DC_Block1 bjt_pkg Q1 beta=160 Ideal RF chokes 0.5 1.0 1.5 2.0 2.5 3.0 3.50.0 4.0 18 19 20 21 17 22 freq, GHz dB(S(2,1)) m1 m1 freq= dB(S(2,1))=20.422 1.900GHz Power gain dB(S(2,1)) 4.1
  29. 29. 28 (3) 100 MHz 4 GHz 100 MHz (4) Data Display Port 1 S11 Marker 1900 MHz Marker Format Zo 50 4.2 freq (100.0MHz to 4.000GHz) S(1,1) m2 m2 freq= S(1,1)=0.855 / -3.631 impedance = Z0 * (10.990 - j4.420) 1.900GHz freq (100.0MHz to 4.000GHz) m2 m2 freq= S(1,1)=0.855 / -3.631 impedance = 549.490 - j221.017 1.900GHz Readout with “normalized” impedance. Double click on the mark m2, and set Zo=50 Ohm Now you can read out the impedance referenced to 50 Ohm system. 4.2 3. RF Choke DC Block (1) Data Display 4.3 [x::y::z] DC Block 10 pF( 8.37 ) RF Choke 120 nH( 1.4k ) Eqn XC=-1/(2*pi*1900M*10e-12) XC -8.377 Eqn XL=2*pi*1900M*L_val Eqn L_val=[1n::10n::200n] L_val 1.000E-9 1.100E-8 2.100E-8 3.100E-8 4.100E-8 5.100E-8 6.100E-8 7.100E-8 8.100E-8 9.100E-8 1.010E-7 1.110E-7 1.210E-7 1.310E-7 1.410E-7 1.510E-7 1.610E-7 1.710E-7 1.810E-7 1.910E-7 XL 11.938 131.319 250.699 370.080 489.460 608.841 728.221 847.602 966.982 1086.363 1205.743 1325.124 1444.504 1563.885 1683.265 1802.646 1922.026 2041.407 2160.787 2280.168 Use equation to calculate the reactance of capacitor and inductor. You may represent a variable in an sequence [x::y::z] to calculate different reactance of inductors at once. 4.3
  30. 30. 29 (2) sparam_sim.dsn s_match.dsn DC Block 10 pF RF Choke 120 nH 4.4 1~3 GHz DC Block pF pF Choke nH Block Choke Choke Choke Vout Vin S_Param SP1 Step=100 MHz Stop=4 GHz Start=100 MHz S-PARAMETERS C DC_Block2 C=10 pF L DC_Feed1 R= L=120 nH L DC_Feed2 R= L=120 nH C DC_Block1 C=10 pF VAR VAR2 Vdcs=5 V Eqn Var Vcc V_DC SRC1 Vdc=Vdcs R RB R=56 kOhm Vcc R RC R=590 Ohm Term Term2 Z=50 Ohm Num=2Term Term1 Z=50 Ohm Num=1 bjt_pkg Q1 beta=160 Use practical values for chokes and blocks. 4.4 Choke Block (3) Choke Block 4.5 S(2,1) S(1,2) Choke Block 0.5 1.0 1.5 2.0 2.5 3.0 3.50.0 4.0 -60 -40 -20 0 20 -80 40 freq, GHz dB(S(2,1)) m2 dB(S(1,2)) m2 f req= dB(S(2,1))=20.253 1.900GHz freq (100.0MHz to 4.000GHz) S(1,1) m1 S(2,2) m1 f req= S(1,1)=0.856 / -3.557 impedance = 554.502 - j219.573 1.900GHz Results using ideal chokes and blocks. Results using practical chokes and blocks. 0.5 1.0 1.5 2.0 2.5 3.0 3.50.0 4.0 -100 -80 -60 -40 -20 0 20 -120 40 freq, GHz dB(S(2,1)) m1 dB(S(1,2)) m1 f req= dB(S(2,1))=20.422 1.900GHz freq (100.0MHz to 4.000GHz) S(1,1) m2 S(2,2) m2 f req= S(1,1)=0.855 / -3.631 impedance = 549.490 - j221.017 1.900GHz 4.5 Choke Block
  31. 31. 30 4. (1) ( ) ( LNA PA ) (2) S12 0 ( unilateral condition) S12 -60 dB ( S12 0) ADS Optimization (3) L 4.6 50 DC Block ( ) 1 pF 10 nH 1.9 GHz 50 Vout S_Param SP1 Step=10 MHz Stop=4 GHz Start=100 MHz S-PARAMETERS C C_match_in C=1 pF L L_match_in R= L=10 nH C DC_Block2 C=10 pF L DC_Feed1 R= L=120 nH L DC_Feed2 R= L=120 nH C DC_Block1 C=10 pF VAR VAR2 Vdcs=5 V Eqn Var Vcc V_DC SRC1 Vdc=Vdcs R RB R=56 kOhm Vcc R RC R=590 Ohm Term Term2 Z=50 Ohm Num=2 bjt_pkg Q1 beta=160 Term Term1 Z=50 Ohm Num=1 Input matching network (L-shape matching) Frequency step is set to 10 MHz m2 freq= dB(S(2,1))=21.668 1.900GHz 0.5 1.0 1.5 2.0 2.5 3.0 3.50.0 4.0 -60 -40 -20 0 20 -80 40 freq, GHz dB(S(2,1)) m2 dB(S(1,2)) m2 freq= dB(S(2,1))=21.668 1.900GHz m1 f req= S(1,1)=0.793 / 100.094 impedance = 9.739 + j40.943 1.900GHz freq (100.0MHz to 4.000GHz) S(1,1) m1 S(2,2) m1 f req= S(1,1)=0.793 / 100.094 impedance = 9.739 + j40.943 1.900GHz Not matched to 50 Ohm 4.6
  32. 32. 31 (4) tuning 1.9 GHz 50 update Use tuning function to tune the input to 50 Ohm and update the tuned values to schematic. 4.7 Tuning (5) L Maker m1 ( S12 0 S12 m1 50 ) L L_match_out R= L=14.3 nH C C_match_out C=0.4 pF Term Term2 Z=50 Ohm Num=2 L L_match_in R= L=14.3 nH {t} C C_match_in C=0.4 pF {t} S_Param SP1 Step=10 MHz Stop=4 GHz Start=100 MHz S-PARAMETERS C DC_Block2 C=10 pF L DC_Feed1 R= L=120 nH L DC_Feed2 R= L=120 nH C DC_Block1 C=10 pF VAR VAR2 Vdcs=5 V Eqn Var Vcc V_DC SRC1 Vdc=Vdcs R RB R=56 kOhm Vcc R RC R=590 Ohm bjt_pkg Q1 beta=160 Term Term1 Z=50 Ohm Num=1 Input matching network (L-shape matching) Add output matching network (L-shape matching) freq (100.0MHz to 4.000GHz) S(1,1) m1 S(2,2) m3 m1 freq= S(1,1)=0.181 / -111.418 impedance = 41.510 - j14.469 1.900GHz m3 freq= S(2,2)=0.533 / -125.411 impedance = Z0 * (0.376 - j0.457) 1.900GHz After simulation, you can see the input matching is affected by the output matching network. 4.8
  33. 33. 32 5. (1) s_match.dsn s_opt.dsn ADS ADS (2) Optim/Stat/Yield/DOE Optim Goal Goal S11( ) 1850 MHz 1950 MHz -10 dB Goal S22( ) -10 dB Optim 125 (MaxIter) 4.9 4.10 Help Optim Optim1 SaveCurrentEF=no UseAllGoals=yes UseAllOptVars=yes SaveAllIterations=no SaveNominal=yes UpdateDataset=yes SaveOptimVars=no SaveGoals=yes SaveSolns=yes Seed= SetBestValues=yes NormalizeGoals=no FinalAnalysis="SP1" StatusLevel=4 DesiredError=0.0 MaxIters=125 OptimType=Random OPTIM Goal OptimGoal2 RangeMax[1]=1950 MHz RangeMin[1]=1850 MHz RangeVar[1]="freq" Weight= Max=-10 Min= SimInstanceName="SP1" Expr="dB(S(2,2))" GOAL Goal OptimGoal1 RangeMax[1]=1950 MHz RangeMin[1]=1850 MHz RangeVar[1]="freq" Weight= Max=-10 Min= SimInstanceName="SP1" Expr="dB(S(1,1))" GOAL Term Term1 Z=50 Ohm Num=1 bjt_pkg Q1 beta=160 Vcc R RC R=590 Ohm R RB R=56 kOhm Vcc V_DC SRC1 Vdc=Vdcs VAR VAR2 Vdcs=5 V Eqn Var C DC_Block1 C=10 pF L DC_Feed2 R= L=120 nH L DC_Feed1 R= L=120 nH C DC_Block2 C=10 pF S_Param SP1 Step=10 MHz Stop=4 GHz Start=100 MHz S-PARAMETERS C C_match_in C=0.4 pF {t} L L_match_in R= L=14.3 nH {t} Term Term2 Z=50 Ohm Num=2 C C_match_out C=0.4 pF L L_match_out R= L=14.3 nH We are now ready to use “optimization” function to let ADS automatically find the “best matching component values.” We have two goals: one is for input matching and the other is for output matching. 4.9 Goal OptimGoal1 RangeMax[1]=1950 MHz RangeMin[1]=1850 MHz RangeVar[1]="freq" Weight= Max=-10 Min= SimInstanceName="SP1" Expr="dB(S(1,1))" GOAL Goal OptimGoal2 RangeMax[1]=1950 MHz RangeMin[1]=1850 MHz RangeVar[1]="freq" Weight= Max=-10 Min= SimInstanceName="SP1" Expr="dB(S(2,2))" GOAL Input: dB(S(1,1)) Output: dB(S(2,2)) Optimization Control If you don’t know what the parameter means, please use “Help.” Optim Optim1 SaveCurrentEF=no UseAllGoals=yes UseAllOptVars=yes SaveAllIterations=no SaveNominal=no UpdateDataset=yes SaveOptimVars=no SaveGoals=yes SaveSolns=yes Seed= SetBestValues=yes NormalizeGoals=no FinalAnalysis="SP1" StatusLevel=4 DesiredError=0.0 MaxIters=125 OptimType=Random OPTIM 4.10
  34. 34. 33 (3) ( ) Tune/Opt/Stat/DOE Setup Tuning Tuning Status Optimization Enable {o} ADS S11 S22 Double click Clear tuning Enable optimization L L_match_in R= L=14.3 nH {o} {o} means this component is set to be optimized 4.11 (4) S11 S22 -10 dB C_match_in.C 4.044E-13 C_match_out.C 2.889E-13 L_match_in.L 1.467E-8 L_match_out.L 2.109E-8 m3 f req= dB(Optim1.SP1.SP.S)=36.121 optIter=64, index=(2,1) 1.900GHz m4 f req= dB(Optim1.SP1.SP.S)=-12.905 optIter=64, index=(2,2) 1.900GHz 0.5 1.0 1.5 2.0 2.5 3.0 3.50.0 4.0 -60 -40 -20 0 20 -80 40 freq, GHz dB(Optim1.SP1.SP.S) m3 m4 m3 f req= dB(Optim1.SP1.SP.S)=36.121 optIter=64, index=(2,1) 1.900GHz m4 f req= dB(Optim1.SP1.SP.S)=-12.905 optIter=64, index=(2,2) 1.900GHz m1 f req= Optim1.SP1.SP.S(1,1)=0.273 / -133.666 optIter=64 impedance = Z0 * (0.638 - j0.272) 1.900GHz m2 f req= Optim1.SP1.SP.S(2,2)=0.226 / -154.179 optIter=64 impedance = Z0 * (0.650 - j0.135) 1.900GHz freq (100.0MHz to 4.000GHz) Optim1.SP1.SP.S(1,1) m1 Optim1.SP1.SP.S(2,2) m2 m1 f req= Optim1.SP1.SP.S(1,1)=0.273 / -133.666 optIter=64 impedance = Z0 * (0.638 - j0.272) 1.900GHz m2 f req= Optim1.SP1.SP.S(2,2)=0.226 / -154.179 optIter=64 impedance = Z0 * (0.650 - j0.135) 1.900GHz Optimized results for dB(S(1,1)) and dB(S(2,2)) equal to -10 dB 4.12
  35. 35. 34 (5) S11 S22 Goal -20 dB 4.13 S11 S22 -20 dB (S21) S11 S22 50 C_match_in.C 3.015E-13 C_match_out.C 2.112E-13 L_match_in.L 2.064E-8 L_match_out.L 2.840E-8 m3 f req= dB(Optim1.SP1.SP.S)=37.031 optIter=120, index=(2,1) 1.900GHz m4 f req= dB(Optim1.SP1.SP.S)=-20.254 optIter=120, index=(2,2) 1.900GHz 0.5 1.0 1.5 2.0 2.5 3.0 3.50.0 4.0 -60 -40 -20 0 20 -80 40 freq, GHz dB(Optim1.SP1.SP.S) m3 m4 m3 f req= dB(Optim1.SP1.SP.S)=37.031 optIter=120, index=(2,1) 1.900GHz m4 f req= dB(Optim1.SP1.SP.S)=-20.254 optIter=120, index=(2,2) 1.900GHz m1 f req= Optim1.SP1.SP.S(1,1)=0.086 / -144.263 optIter=120 impedance = Z0 * (0.866 - j0.087) 1.900GHz m2 f req= Optim1.SP1.SP.S(2,2)=0.097 / -147.607 optIter=120 impedance = Z0 * (0.844 - j0.089) 1.900GHz freq (100.0MHz to 4.000GHz) Optim1.SP1.SP.S(1,1) m1 Optim1.SP1.SP.S(2,2) m2 m1 f req= Optim1.SP1.SP.S(1,1)=0.086 / -144.263 optIter=120 impedance = Z0 * (0.866 - j0.087) 1.900GHz m2 f req= Optim1.SP1.SP.S(2,2)=0.097 / -147.607 optIter=120 impedance = Z0 * (0.844 - j0.089) 1.900GHz Optimized results for dB(S(1,1)) and dB(S(2,2)) equal to -20 dB 4.13 (6) 4.14 Simulate Update Optimization Values Schematic Disable Optim L L_match_in R= L=20.637 nH {-o} Optim Optim1 SaveCurrentEF=no UseAllGoals=yes StatusLevel=4 DesiredError=0.0 MaxIters=125 OptimType=Random OPTIM Disable optimization for matching componentsUpdate optimization values After the optimization, deactivate the OPTIM controller to turn off this function. 4.14
  36. 36. 35 (7) Optim s_opt.dsn s_final.dsn Tuning 4.15 S11 S22 -33 dB m3 freq= dB(var("S"))=35.168 (2,1) 1.900GHz m4 freq= dB(var("S"))=-39.575 (2,2) 1.900GHz m5 freq= dB(var("S"))=-33.824 (1,1) 1.900GHz 0.5 1.0 1.5 2.0 2.5 3.0 3.50.0 4.0 -60 -40 -20 0 20 -80 40 freq, GHz dB(var("S")) m3 m4 m5 m3 freq= dB(var("S"))=35.168 (2,1) 1.900GHz m4 freq= dB(var("S"))=-39.575 (2,2) 1.900GHz m5 freq= dB(var("S"))=-33.824 (1,1) 1.900GHz m1 freq= S(1,1)=0.020 / 171.484 impedance = Z0 * (0.961 + j0.006) 1.900GHz m2 freq= S(2,2)=0.011 / -12.184 impedance = Z0 * (1.021 - j0.005) 1.900GHz freq (100.0MHz to 4.000GHz)S(1,1) m1 S(2,2) m2 m1 freq= S(1,1)=0.020 / 171.484 impedance = Z0 * (0.961 + j0.006) 1.900GHz m2 freq= S(2,2)=0.011 / -12.184 impedance = Z0 * (1.021 - j0.005) 1.900GHz As you can see: Improved gain with improved matching. 4.15 6. (1) s_final.dsn s_circles.dsn factor ADS Simulation-S_Param Mu MuPrim 4.16 Options Options1 MaxWarnings=10 GiveAllWarnings=yes I_AbsTol= I_RelTol= V_AbsTol= V_RelTol= Tnom=25 Temp=16.85 OPTIONS S_Param SP1 CalcNoise=yes Step=10 MHz Stop=1950 MHz Start=1850 MHz S-PARAMETERS NsCircle NsCircle1 NsCircle1=ns_circle(nf2,NFmin,Sopt,Rn/50,51) NsCircle GaCircle GaCircle1 GaCircle1=ga_circle(S,30,51) GaCircle MuPrime MuPrime1 MuPrime1=mu_prime(S) MuPrime Mu Mu1 Mu1=mu(S) Mu C C_match_out C=0.22 pF C C_match_in C=0.35 pF L L_match_out R=6 Ohm L=27.1 nH L L_match_in R=12 Ohm L=18.3 nH Term Term1 Z=50 Ohm Num=1 bjt_pkg Q1 beta=160 Vcc R RC R=590 Ohm R RB R=56 kOhm Vcc V_DC SRC1 Vdc=Vdcs VAR VAR2 Vdcs=5 V Eqn Var C DC_Block1 C=10 pF L DC_Feed2 R= L=120 nH L DC_Feed1 R= L=120 nH C DC_Block2 C=10 pF Term Term2 Z=50 Ohm Num=2 Mu(source) Mu(load) Constant gain circle (here, set gain = 30 dB) Constant NF circle (min NF is auto calculated) Frequency range is from 1850~1950 MHz with 10 MHz here. (avoid drawing too many traces) IEEE defined standard temperature with noise analysis. 4.16 ADS
  37. 37. 36 (2) 4.16 Simulation-S_Param GaCircle( ) NsCircle S_Param CalcNoise Options 16.85 ( IEEE ) 51 30 dB 51 ADS ( nf2) 1850 MHz~1950 MHz ( ) (3) Display GaCircle NsCircle ( ) Mu MuPrim 1 1850 MHz 1950 MHz ( ) (4) ( ) cir_pts (0.000 to 51.000) GaCircle1 NsCircle1 1.86 1.87 1.88 1.89 1.90 1.91 1.92 1.93 1.941.85 1.95 0.5 1.0 1.5 2.0 2.5 0.0 3.0 freq, GHz Mu1 MuPrime1 freq 1.850 GHz 1.860 GHz 1.870 GHz 1.880 GHz 1.890 GHz 1.900 GHz 1.910 GHz 1.920 GHz 1.930 GHz 1.940 GHz 1.950 GHz nf(2) 3.153 3.171 3.189 3.207 3.225 3.243 3.261 3.280 3.298 3.316 3.335 NFmin 1.055 1.056 1.056 1.056 1.057 1.057 1.057 1.058 1.058 1.058 1.058 Sopt 0.788 / -20.779 0.789 / -20.735 0.791 / -20.691 0.792 / -20.646 0.794 / -20.602 0.795 / -20.557 0.797 / -20.512 0.798 / -20.467 0.800 / -20.421 0.801 / -20.376 0.802 / -20.330 The load impedances that can result in constant gain (30 dB) from 1850 MHz to 1950 MHz. (resulted traces are circles) The maximum available power gain is around the center of the circles. The source impedances that can result in constant NF from 1850 MHz to 1950 MHz. (traces are circles) The minimum noise figure is around the center of the NF circles. When the minimum NF point is enclosed with the constant gain circles, the desired gain and NFmin can be simultaneously achieved while matched at the blue point in such frequency range. Stable: Mu > 1 nf(2) means the NF when port 2 is output port. When the source is matched to Sopt, the Nfmin can be achieved. 4.17
  38. 38. 37 7. s2p (1) s2p_data s2p s3p s4p ADS dataset dataset s2p (2) sparam_sim.dsn s2p 4.18 Write data file from dataset sparam_sim dataset mybjt.s2p Here, we are going to save the transistor s-parameter simulated in “sparam_sim.” If you forget what is this, just open that design and you will know. (It simulates the s-parameter of the BJT at certain bias point) 4.18 s2p (3) Data Items S2P mybjt.s2p mybjt.s2p bjt_pkg 0.5 1.0 1.5 2.0 2.5 3.0 3.50.0 4.0 18 19 20 21 17 22 freq, GHz dB(S(2,1)) dB(sparam_sim..S(2,1)) The blue circles are from s2p file, and the red line is the results from sparam_sim. S2P SNP1 File="mybjt..s2p" 21 Ref SweepPlan SwpPlan1 Reverse=no SweepPlan= UseSweepPlan= Start=100 MHz Stop=3 GHz Step=100 MHz Lin= SWEEP PLAN S_Param SP1 Step=1.0 GHz Stop=10.0 GHz Start=1.0 GHz SweepPlan="SwpPlan1" S-PARAMETERS Term Term2 Z=50 Ohm Num=2 Term Term1 Z=50 Ohm Num=1 4.19 file-based
  39. 39. 38 (4) Create Symbol 4.20 S2P SNP1 File="mybjt..s2p" 21 Ref Port P2 Num=2 Port P1 Num=1 bjt_s2p Q2 Term Term2 Z=50 Ohm Num=2 Term Term1 Z=50 Ohm Num=1 Place pins Go to “File” -> “Design Parameters…” Go to Library find your file-based amplifier bjt_s2p 4.20 file-based 8. s2p (1) Tools Instrument Server Agilent HPIB HPIB ( 16) dataset dataset 4.21 (2) ADS (3) (I-V Curve Tracer ) (4) ADS ADS Display csv ASCII Excel Matlab RF
  40. 40. 39 4.21 4.3 DC Blocks RF Chokes DC Block Choke ADS tuning optimization ADS ADS
  41. 41. 40 5.1 ADS 1dB 3 5.2 1. (Harmonic Balance, HB) (1) s_final.dsn hb_basic.dsn (2) P_1Tone 1900 MHz -40 dBm 5.1 (3) Simulation-HB (Harmonic Balance, HB) Freq[1] 1900 MHz Order[1] 3 1900 MHz Freq[1] Freq[2] Freq[3] Order[1] Order[1] 3 (DC) 1900 MHz( ) 3800 MHz( ) 5700 MHz( ) Vc Vb Vout Vin MeasEqn Meas1 dBmout=dBm(Vout[1]) Eqn Meas HarmonicBalance HB1 Order[1]=3 Freq[1]=1900 MHz HARMONIC BALANCE P_1Tone RF_Source Freq=1.9 GHz P=dbmtow(-40) Z=50 Ohm Num=1 Term Term2 Z=50 Ohm Num=2 L L_match_in R=12 Ohm L=18.3 nH C C_match_out C=0.22 pF C C_match_in C=0.35 pF L L_match_out R=6 Ohm L=27.1 nH bjt_pkg Q1 beta=160 Vcc R RC R=590 Ohm R RB R=56 kOhm Vcc V_DC SRC1 Vdc=Vdcs VAR VAR2 Vdcs=5 V Eqn Var C DC_Block1 C=10 pF L DC_Feed2 R= L=120 nH L DC_Feed1 R= L=120 nH C DC_Block2 C=10 pF This means we have a source numbered 1 and its frequency is Freq[1] = 1900MHz. In the simulation, we like to consider 3-harmonics into account, so Order[1]=3. The output voltage Vout is computed with 3-harmonics and the DC-component. Now, we want to see the power of the fundamental component (i.e. 1900 MHz) which is Vout[1]. The DC- component is Vout[0], the 2nd harmonic is Vout[2], and the 3rd harmonic is Vout[3]. 5.1
  42. 42. 41 (4) P_1Tone 1900 MHz Freq[1] 1900 MHz Freq[1] 1800 MHz 1900 MHz 1900 MHz (5) (1)~(3) Data Display Vout dBm(Vout) Vout 5.2 Vout DC 1.9 GHz 3.8 GHz 5.7 GHz ( Order[1]=3 ) m1 freq= dBm(Vout)=-4.876 1.900GHz 1 2 3 4 50 6 -80 -60 -40 -20 -100 0 freq, GHz dBm(Vout) m1 m1 freq= dBm(Vout)=-4.876 1.900GHz dBmout -4.876 DC Fundamental @1.9 GHz 2nd harmonic @3.8 GHz 3rd harmonic @5.7 GHz Use dBm(v) to transform voltage into power with 50 Ohm impedance in default. 5.2 (6) ( ) V1 f1 A1 A1V1 ( ) ( ) f1 (Harmonics)
  43. 43. 42 (7) (6) ( ) (3) Order[1]=3 3 Order[1] 1 (Fundamental component) ( Order[1] ) CPU (8) (6) (7)
  44. 44. 43 (9) (8) (Saturation power, Psat) 1 dB (1 dB gain compression point) (Intermodulation intercept point) (10) (5) Vin Vout Time domain signal 5.3 HB Vin Vout ADS HB -2 0 2 -4 4 ts(Vin),mV 0.2 0.4 0.6 0.8 1.00.0 1.2 -100 0 100 -200 200 time, nsec ts(Vout),mV 2 3 4 1 5 ts(Vc),V 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.00.0 1.1 790 800 810 780 820 time, nsec ts(Vb),mV Choose Vin, Vout, Vc and Vb in Time-domain 5.3 ts()
  45. 45. 44 (11) list Mix Mix 0, 1, 2, 3 5.4 freq 0.0000 Hz 1.900 GHz 3.800 GHz 5.700 GHz Mix 0 1 2 3 Vout 0.000 / 0.000 0.180 / -14.199 0.001 / -170.939 1.963E-5 / 46.135 “Mix” is the index sequence of the frequency components: Mix = 0, 1, 2, 3 Mix[0] = 0 : DC Mix[1] = 1 : Fundamental Mix[2] = 2 : 2nd harmonic Mix[3] = 3 : 3rd harmonic 5.4 Mix index (12) Vout dBm(Vout[1]) [1] Vout 5.5 dBm(Vout[2]) MeasEqn Meas1 dBmout=dBm(Vout[1]) Eqn Meas dBmout -4.876 dBm(Vout[1]) -4.876 Measurement equation in schematic List it in data display OR Just manipulate Vout[1] in data display freq 0.0000 Hz 1.900 GHz 3.800 GHz 5.700 GHz Mix 0 1 2 3 dBm(Vout) <invalid> -4.876 -49.839 -84.141 dBm(Vout) lists out the power of all components. If you want fundamental power: use dBm(Vout[1]) 2nd harmonic power: use dBm(Vout[2]) 3rd harmonic power : use dBm(Vout[3]) 5.5 (13) dBm() ADS dBm() 50 5.6 50 Vout dBm(Vout[1]) dBm(Vout[1], 50) Vin Zin Zin 50 dBm(Vin[1]) I_Probe 5.7 dBm(Vin[1], Zin) 50 dBm(Vin[1]) dBm(Vin[1], Zin)
  46. 46. 45 Here, we are using “Voltage” and 50 Ohm (default) to calculate power. Warning: (1) For the output, Vout is just on a 50 Ohm term that’s OK! (2) For the input, is Vin on a 50 Ohm term? Or, say, Zin = 50 Ohm? Is it correct to use dBm(Vin[1],50) to calculate input power? Incorrect! Vout Term Term2 Z=50 Ohm Num=2 C C_match_out C=0.22 pF L L_match_out R=6 Ohm L=27.1 nH Vin L L_match_in R=12 Ohm L=18.3 nH C C_match_in C=0.35 pF P_1Tone RF_Source Freq=1.9 GHz P=dbmtow(-40) Z=50 Ohm Num=1 C DC_Block1 C=10 pF Zin 5.6 Vin I_Probe I_inP_1Tone RF_Source Freq=1.9 GHz P=dbmtow(-40) Z=50 Ohm Num=1 L L_match_in R=12 Ohm L=18.3 nH C C_match_in C=0.35 pF EqnP_deliv_dBm=10*log(0.5*real(Vin[1]*conj(I_in.i[1])))+30 EqnZ_in=Vin[1]/I_in.i[1] dBm(Vin[1]) -40.214 P_deliv_dBm -40.003 dBm(Vin[1],Z_in) -40.003 Z_in 47.619 / 0.686 Insert the current probe named “I_in” Calculate the input impedance and the real input power in data display. You can use dBm(Vin[1], Z-in) referenced to the real input impedance. 5.7 2. 1 dB (P1dB) (1) 1 dB ( ) (2) hb_basic.dsn hb_compression.dsn 1 dB 5.8
  47. 47. 46 RF_pwr Sweep Parameter dataset hb_comp Data Display dbmout RF_pwr RF_pwr RF_pwr Marker m1 (Gain compression) ( ) RF_pwr Vin Vc Vb Vout VAR VAR3 RF_pwr=-40 Eqn Var MeasEqn Meas1 dBmout=dBm(Vout[1]) Eqn Meas HarmonicBalance HB1 Step=1 Stop=-20 Start=-50 SweepVar="RF_pwr" Order[1]=3 Freq[1]=1900 MHz HARMONIC BALANCE P_1Tone RF_Source Freq=1.9 GHz P=dbmtow(RF_pwr) Z=50 Ohm Num=1 XDB HB2 GC_MaxInputPower=100 GC_OutputPowerTol=1e-3 GC_InputPowerTol=1e-3 GC_OutputFreq=1.9 GHz GC_InputFreq=1.9 GHz GC_OutputPort=2 GC_InputPort=1 GC_XdB=1 Order[1]=3 Freq[1]=1.9 GHz GAIN COMPRESSION I_Probe I_in Term Term2 Z=50 Ohm Num=2 L L_match_in R=12 Ohm L=18.3 nH C C_match_out C=0.22 pF C C_match_in C=0.35 pF L L_match_out R=6 Ohm L=27.1 nH bjt_pkg Q1 beta=160 Vcc R RC R=590 Ohm R RB R=56 kOhm Vcc V_DC SRC1 Vdc=Vdcs VAR VAR2 Vdcs=5 V Eqn Var C DC_Block1 C=10 pF L DC_Feed2 R= L=120 nH L DC_Feed1 R= L=120 nH C DC_Block2 C=10 pF -45 -40 -35 -30 -25-50 -20 -10 -5 0 5 -15 10 RF_pwr dBmout m1 m1 indep(m1)= plot_vs(dBmout, RF_pwr)=3.358 -31.000 Dataset name: hb_comp Plot Output power v.s. Input power Linear region Gain compression Saturate 5.8 (Pout v.s. Pin) (3) 5.9 ( dB ) RF_pwr RF_pwr ( ) 1 dB ( ) 1 dB 1 dB IP1dB 5.10 1 dB 1 dB OP1dB
  48. 48. 47 Eqn Gain_db=dBmout-RF_pwr -45 -40 -35 -30 -25-50 -20 26 28 30 32 34 24 36 RF_pwr Gain_db Gain compression effect (large signal, high power region) Linear gain (small signal, low power region) -45 -40 -35 -30 -25-50 -20 26 28 30 32 34 24 36 RF_pwr Gain_db 1 dB 1 dB gain compression point Input power at 1 dB gain compression point is call IP1dB 5.9 1 dB IP1dB -14 -12 -10 -8 -6 -4 -2 0 2 4-16 6 26 28 30 32 34 24 36 dBmout Gain_db m3 m3 dBmout= plot_vs(Gain_db, dBmout)=34.358 3.358 -45 -40 -35 -30 -25-50 -20 26 28 30 32 34 24 36 RF_pwr Gain_db 1 dB 1 dB gain compression point Input power at 1 dB gain compression point is call IP1dB 1 dB 1 dB gain compression point Output power at 1 dB gain compression point is call OP1dB Many people would say “P1dB” to describe the gain compression effect (nonlinear effect). More correctly, you may ask that does he mean IP1dB or OP1dB? 5.10 IP1dB OP1dB ( x ) (4) IP1dB OP1dB 5.11 (dBmout) (RF_pwr) 5.11 Gain_db[0] Gain_db 1 (index=0) -50 dBm ( ) (Lin_pwr) (RF_pwr) ( dB )
  49. 49. 48 1 dB 1 dB ( 1 dB 1 dB) Marker m4 IP1dB OP1dB IP1dB -31 dBm OP1dB 3.4 dBm 5.11 Psat 4.7 dBm Eqn Lin_pwr=RF_pwr+Gain_db[0] m4 indep(m4)= plot_vs(dBmout, RF_pwr)=3.358 -31.000 -45 -40 -35 -30 -25-50 -20 -10 -5 0 5 10 15 -15 20 RF_pwr dBmout m4 Lin_pwr m4 indep(m4)= plot_vs(dBmout, RF_pwr)=3.358 -31.000 Output power drops 1 dB from the linear power IP1dB 1 dB OP1dB Linear power relation (if no compression) 5.11 IP1dB OP1dB (5) P1dB (IP1dB OP1dB) OP1dB OP1dB OP1dB IP1dB IP1dB IP1dB OP1dB IP1dB OP1dB Psat ( ) OP1dB ( Psat OP1dB ) OP1dB Psat
  50. 50. 49 3. (IP3) HB IP3out ip3_out() (1) hb_compression.dsn hb_2tone.dsn P_nTone RF_freq = 1900 MHz tone_spacing = 10 MHz 5.12 (2) 2 P1dB (One-tone CW test Single-tone CW test) IP3 (Two-tone CW test) (3) 0 1 2 ( 2 ) (Intermodulation products IM ) 1 2mf nf+ 1f 2f m n ( ) m n (order) ( m n+ ) Vin HarmonicBalance HB1 Step=1 Stop=-20 Start=-50 SweepVar="RF_pwr" Order[2]=4 Order[1]=4 Freq[2]=RF_freq-tone_spacing/2 Freq[1]=RF_freq+tone_spacing/2 MaxOrder=8 HARMONIC BALANCE VAR VAR3 tone_spacing=10 MHz RF_freq=1900 MHz RF_pwr=-40 Eqn Var VAR VAR2 Vdcs=5 V Eqn Var P_nTone PORT1 P[2]=dbmtow(RF_pwr) P[1]=dbmtow(RF_pwr) Freq[2]=RF_freq-tone_spacing/2 Freq[1]=RF_freq+tone_spacing/2 Z=50 Ohm Num=1 MeasEqn Meas1 dBmout=dBm(Vout[1]) Eqn Meas I_Probe I_in L L_match_in R=12 Ohm L=18.3 nH C C_match_in C=0.35 pF C DC_Block1 C=10 pF Use P_nTone source to provide 2 sinusoidal signals. fcenter= 1900 MHz Tone spacing = 10 MHz Freq[2] Freq[1] Intermodulation (IM) products Two-tone CW test for evaluating nonlinearity MaxOrder = number of mixing products Freq[1] is a variable or a number. Order[1] = 4 means the component at Freq[1] will be calculated with 4 harmonics. 5.12
  51. 51. 50 (4) ( )2, 1m n= = − ( )1, 2m n= − = 3 (Third order inptermodulation product, IM3) ( )1 22 f f− ( )1 2f f− + 1f 2f 1 1905 MHzf = 2 1895 MHzf = IM3 1915 MHz 1885 MHz IM3 ( ) IM3 ( IM2 ) ( IM3 IM5 IM7 ) ( IM2 IM4 IM6 ) IM3 IM3 (5) (4) Data Display dBm(Vout) (Frequency span) 1880 MHz 1920 MHz IM3 IM3 -46 dBm( AM/PM IM3 AM/PM ) -5 dBm IM3 ( ) IM3 IM3 ( ) IM3 IM3 -41 dBc 2 4 6 8 10 12 140 16 -150 -100 -50 -200 0 freq, GHz dBm(Vout) m1 m1 freq= dBm(Vout)=-4.935 1.895GHz 1.89 1.90 1.911.88 1.92 -150 -100 -50 -200 0 freq, GHz dBm(Vout) m1 m2 m1 freq= dBm(Vout)=-4.935 1.895GHz m2 freq= dBm(Vout)=-5.002 1.905GHz Show the result of dBm(Vout) See close to 1900 MHz 3rd order intermodulation products (IM3) 5.13 (Intermodulation distortion, IMD)
  52. 52. 51 (6) (5) IM3 IM3 (IP3 TOI, third order intercept) P1dB IP3 OIP3 IIP3 OIP3 IP3 IM3 IIP3 OIP3 OIP3 (7) OIP3 OIP3 IP1dB 10 dB ( ) 5.14 Simulation-HB IP3out lower band OIP3( 1895 MHz lower IM3 1885 MHz ) upper band OIP3( 1905 MHz upper IM3 1815 MHz ) Data Display OIP3 16 dBm OIP3 Data Display ADS IP3in ip3_in() IIP3 {1, 0} {2, -1} {m, n} freq 0.0000 Hz 10.00 MHz 20.00 MHz 30.00 MHz 40.00 MHz 1.865 GHz 1.875 GHz 1.885 GHz 1.895 GHz 1.905 GHz 1.915 GHz 1.925 GHz 1.935 GHz 3.770 GHz Mix Mix(1) Mix(2) 0 1 2 3 4 -3 -2 -1 0 1 2 3 4 -2 0 -1 -2 -3 -4 4 3 2 1 0 -1 -2 -3 4 Vin Vb IP3out ipo1 upper_toi=ip3_out(Vout,{1,0},{2,-1},50) P0 P in IP3out IP3out ipo2 lower_toi=ip3_out(Vout,{0,1},{-1,2},50) P 0 Pin IP3out I_Probe I_in P_nTone PORT1 P[2]=dbmtow(RF_pwr) P[1]=dbmtow(RF_pwr) Freq[2]=RF_freq-tone_spacing/2 Freq[1]=RF_freq+tone_spacing/2 Z=50 Ohm Num=1 MeasEqn Meas1 dBmout=dBm(Vout[1]) Eqn Meas HarmonicBalance HB1 Step= Stop= Start= SweepVar= Order[2]=4 Order[1]=4 Freq[2]=RF_freq-tone_spacing/2 Freq[1]=RF_freq+tone_spacing/2 MaxOrder=8 HARMONIC BALANCE VAR VAR3 tone_spacing=10 MHz RF_freq=1900 MHz RF_pwr=-40 Eqn Var VAR VAR2 Vdcs=5 V Eqn Var L L_match_in R=12 Ohm L=18.3 nH C C_match_in C=0.35 pF R RB R=56 kOhm C DC_Block1 C=10 pF L DC_Feed2 R= L=120 nH Prepare to simulate IP3 or the TOI (third order intercept) upper_toi 15.914 lower_toi 15.679 Eqn cal_toi_upper=ip3_out(Vout,{1,0},{2,-1},50) Eqn cal_toi_lower=ip3_out(Vout,{0,1},{-1,2},50) cal_toi_upper 15.914 cal_toi_lower 15.679 Use IP3out in schematic You can also calculate by using function ip3_out() in data display 5.14 OIP3
  53. 53. 52 4. (IP3) (1) hb_2tone.dsn hb_2toneip3.dsn -45dBm -30 dBm 5.15 Vin Vc Vb Vout HarmonicBalance HB1 Step=1 Stop=-30 Start=-45 SweepVar="RF_pwr" Order[2]=4 Order[1]=4 Freq[2]=RF_freq-tone_spacing/2 Freq[1]=RF_freq+tone_spacing/2 MaxOrder=8 HARMONIC BALANCE VAR VAR3 tone_spacing=10 MHz RF_freq=1900 MHz RF_pwr=-40 Eqn Var IP3out ipo1 upper_toi=ip3_out(Vout,{1,0},{2,-1},50) P0 P in IP3out IP3out ipo2 lower_toi=ip3_out(Vout,{0,1},{-1,2},50) P 0 Pin IP3out I_Probe I_in P_nTone PORT1 P[2]=dbmtow(RF_pwr) P[1]=dbmtow(RF_pwr) Freq[2]=RF_freq-tone_spacing/2 Freq[1]=RF_freq+tone_spacing/2 Z=50 Ohm Num=1 MeasEqn Meas1 dBmout=dBm(Vout[1]) Eqn Meas VAR VAR2 Vdcs=5 V Eqn Var Term Term2 Z=50 Ohm Num=2 L L_match_in R=12 Ohm L=18.3 nH C C_match_out C=0.22 pF C C_match_in C=0.35 pF L L_match_out R=6 Ohm L=27.1 nH bjt_pkg Q1 beta=160 Vcc R RC R=590 Ohm R RB R=56 kOhm Vcc V_DC SRC1 Vdc=Vdcs C DC_Block1 C=10 pF L DC_Feed2 R= L=120 nH L DC_Feed1 R= L=120 nH C DC_Block2 C=10 pF 5.15 (2) Data Display 5.16 OIP3 16 dBm 3 3 IP3out ip3_out() IP1dB 10dB 5.16 IP1dB 10dB Eqn Lin_pwr=RF_pwr_in+Gain_db_upper[0] Eqn Gain_db_upper=dBm(mix(Vout,{1,0}))-RF_pwr Eqn RF_pwr_in=[-45::1::10] Eqn IM3_upper=dBm(mix(Vout,{2,-1})) Eqn IM3_lin=IM3_upper[0]+3*(RF_pwr_in-(-45)) -44 -42 -40 -38 -36 -34 -32 -30 -28 -26 -24 -22 -20 -18 -16 -14 -12-46 -10 -60 -50 -40 -30 -20 -10 0 10 20 -70 30 RF_pwr dBm(mix(Vout,{1,0})) dBm(mix(Vout,{2,-1})) RF_pwr_in Lin_pwr m1 IM3_lin m1 indep(m1)= plot_vs(Lin_pwr, RF_pwr_in)=16.106 -19 Valid input power region to calculate OIP3 OIP3 IP1dB- 10 dB 5.16 OIP3
  54. 54. 53 (3) IP3out ip3_out() 5.17 OIP3 4 IP1dB 10 dB 10 dB ADS (ip3out() 4 ) m1 indep(m1)= plot_vs(Lin_pwr, RF_pwr_in)=1.106 -34 -44 -42 -40 -38 -36 -34 -32 -30 -28 -26 -24 -22 -20 -18 -16 -14 -12-46 -10 -60 -50 -40 -30 -20 -10 0 10 20 -70 30 RF_pwr dBm(mix(Vout,{1,0})) dBm(mix(Vout,{2,-1})) RF_pwr_in Lin_pwr m1 IM3_lin m1 indep(m1)= plot_vs(Lin_pwr, RF_pwr_in)=1.106 -34 Invalid input power region to calculate OIP3 Wrong OIP3 5.17 OIP3 5.3 HB IP3 IM3 IP3 IP3 ADS Data Display ( )

×