Upload
simenli
View
313
Download
48
Embed Size (px)
Citation preview
1
(Advanced Design System, ADS) DCS
1900
I ADS II DCS
1900 III
IV
ADS
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
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
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
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_ParamSP1
Step=0.5 GHzStop=10.0 GHzStart=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
6
(6) Data Display
Rectangular Plot S(2,1) dB
Marker Marker S(2,1)
Marker Ctrl+s Data Display
1.8 Rectangular Plot
m1freq=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
m1freq=dB(S(2,1))=-3.850
5.500GHz
1.9 Marker
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
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
m1freq=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
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_ModelBJTM1
AllParams=Xti=Xtb=Eg=Trise=Tnom=Approxqb=yesRbModel=MDSLateral=noFfe=
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=noNPN=yes
BJT_NPNBJT1
Mode=nonlinearTrise=Temp=Region=Area=Model=BJTM1
BJT_ModelBJTM1BJT_NPN
BJT1
Mode=nonlinearTrise=Temp=Region=Area=Model=BJTM1
Double click
Turn parameter
visibility off.
parameter
visibility off
2.1 (Model Card)
10
(3) Bf( BJT Beta) Vaf( ) Ise(
) 2.2 Display parameter
on schematic Schematic
BJT_ModelBJTM1BJT_NPN
BJT1
Mode=nonlinearTrise=Temp=Region=Area=Model=BJTM1
Double click
BJT_ModelBJTM1
Ise=0.02e-12Vaf=50Bf=beta
BJT_NPNBJT1
Mode=nonlinearTrise=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
CC2C=120 fF
CC1C=120 fF
LL3
R=L=320 pH
PortP3Num=3
BJT_ModelBJTM1
Ise=0.02e-12Vaf=50Bf=beta
LL1
R=0.01 OhmL=320 pH
LL2
R=L=320 pH
PortP2Num=2
PortP1Num=1
BJT_NPNBJT1Model=BJTM1
Package
parasitics
Package
parasitics
2.3
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
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
13
(2) Library Analog/RF DC_BJT BJT I-V
Curve Tracer FET Curve Tracer
Tracer (Push into Hierarchy) DC_BJT
Tracer
PortCollectorNum=2
PortBaseNum=1
I_ProbeIC
I_DCSRC1Idc=IBB
ParamSweepS1SweepVar="IBB"SimInstanceName[1]="DC1"SimInstanceName[2]=SimInstanceName[3]=SimInstanceName[4]=SimInstanceName[5]=SimInstanceName[6]=Start=IBB_startStop=IBB_stopLin=IBB_points
PARAMETER SWEEP
VARVAR1VCE=1.5IBB=1.0 mA
EqnVar
V_DCSRC2Vdc=VCE
DCDC1SweepVar="VCE"Start=VCE_startStop=VCE_stopLin=VCE_points
DC
MeasEqnmeas1DC_power=IC.i*VCE
EqnMeas
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
14
bjt_pkgQ1beta=100
DC_BJTDC_BJT1
VCE_points=41VCE_stop=5.0VCE_start=0IBB_points=11IBB_stop=100 uAIBB_start=0 uA
BJT Curve Tracer
Base Collector
m1indep(m1)=plot_vs(IC.i, VCE)=0.002DC_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
m1indep(m1)=plot_vs(IC.i, VCE)=0.002DC_BJT1.IBB=0.000040
3.000
indep(m1)
3.000
m1
0.002
PDC
0.007
VCE
Eqn PDC=indep(m1)*m1
IC PDC
m1indep(m1)=plot_vs(IC.i, VCE)=0.003DC_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
m1indep(m1)=plot_vs(IC.i, VCE)=0.003DC_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
ParamSweepSweep1
Step=10 uAStop=100 uAStart=0 uASimInstanceName[6]=SimInstanceName[5]=SimInstanceName[4]=SimInstanceName[3]=SimInstanceName[2]=SimInstanceName[1]="DC1"SweepVar="IBB"
PARAMETER SWEEP
bjt_pkgQ1beta=100
I_ProbeIC
V_DCSRC1Vdc=VCE
I_DCSRC2Idc=IBB
DCDC1SweepVar="VCE"Start=0Stop=5Step=0.1
DC
VARVAR2VCE =0 VIBB =0 A
EqnVar
DisplayTemplatedisptemp1"BJT_curve_tracer"
TempDisp
2.10 I-V Curve Tracer (Template)
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
VARVAR2
VCE= 3 VIBB =0 A
EqnVar
DCDC1
Step=10 uAStop=100 uAStart=10 uASweepVar="IBB"
DC
V_DCSRC1Vdc=VCE
bjt_pkgQ1beta=160
I_ProbeIC
I_DCSRC2Idc=IBB
IBB
1.000E-52.000E-53.000E-54.000E-55.000E-56.000E-57.000E-58.000E-59.000E-51.000E-4
IC.i
599.8 uA1.430 mA2.349 mA3.325 mA4.341 mA5.389 mA6.462 mA7.557 mA8.669 mA9.798 mA
VBE
754.8 mV777.1 mV789.9 mV798.8 mV805.7 mV811.3 mV815.9 mV819.9 mV823.5 mV826.6 mV
VCE
3.0003.0003.0003.0003.0003.0003.0003.0003.0003.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
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-52.000E-53.000E-54.000E-55.000E-56.000E-57.000E-58.000E-59.000E-51.000E-4
Rb
224518.366111142.833
73669.69855029.02743886.10336479.13231201.14027250.72624183.63721733.818
Rc
3334.2331398.882
851.344601.500460.687371.123309.494264.671230.704204.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 = 0Index = 1Index = 2Index = 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_DCSRC1Vdc=5 V
RRBR=56 kOhm
RRCR=590 Ohm
VARVAR2
VCE= 3 VIBB =0 A
EqnVar
DCDC1
DCI_ProbeIC
bjt_pkgQ1beta=160
Turn off the variable sweeping,
and add bias resistors.
3.03 VVC
799 mVVBE
5 V
5 V
-3.34 mA
V_DCSRC1Vdc=5 V
-39.8 uARRBR=56 kOhm
3.34 mA
RRCR=590 Ohm
VARVAR2
VCE= 3 VIBB =0 A
EqnVar
DCDC1
DC3.34 mA I_Probe
IC
3.31 mA
39.8 uA
-3.34 mA
bjt_pkgQ1beta=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
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 templatedoes not provide the required informationfor the application, it can be appropriatelymodified.
bjt_pkgQ1beta=160
ParamSweepSweep1
Step=IBBstepStop=IBBmaxStart=IBBminSimInstanceName[6]=SimInstanceName[5]=SimInstanceName[4]=SimInstanceName[3]=SimInstanceName[2]=SimInstanceName[1]="DC1"SweepVar="IBB"
PARAMETER SWEEP
DCDC1
Step=VCEstepStop=VCEmaxStart=VCEminSweepVar="VCE"
DC
OptionsOptions1
Tnom=25Temp=16.85
OPTIONS
VARVAR1
Rload=50 _ohmsIBB=0 AVCE=0 V
EqnVar
VARVAR3Z0=50IBBmin=20 uAIBBmax=100 uAIBBstep=20 uAVCEmin=0.25 VVCEmax=5 VVCEstep=0.1 V
EqnVar
DC_BlockDC_Block2
DC_BlockDC_Block1
DC_FeedDC_Feed2
DC_FeedDC_Feed1
I_DCSRC2Idc=IBB
TermTerm1
Z=Z0Num=1
V_DCSRC1Vdc=VCE
I_ProbeIC
TermTerm2
Z=Z0Num=2
m1VCE=IC.i=5.494mIBB=0.000060
2.200 m2VCE=IC.i=8.793mIBB=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
ICm
axlin
e
m1VCE=IC.i=5.494mIBB=0.000060
2.200 m2VCE=IC.i=8.793mIBB=0.000100
400.0m
12.09 m
Eqn VCEmax=5
523.151
2.969 m 24.56
Eqn PDmax=0.03
Fol low 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 l ine between marker m2 and the (IC=0, VCE=VCEmax) point.3) Specify maximum allowed DC power dissipation, PDmax, in Watts. 4) Posi tion marker m1 at some other bias point, if desired. (Must be less than VCEmax.)5) DC power consumption, average output power in l inear 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
Bet
a
Beta versus IBB, at ICEspecified by marker m1
DC-to-RF Efficiency,%
DC PowerConsumptionRload
Output PowerWatts dBm
DC-to-RF Effic iency,%
Optimal VCE
Optimal ICE
DC Power Consumption at Optimal Bias
Output Powerat Optimal BiasWatts dBm
Rload atOptimal Bias
Optimal Class A bias point values.
Marker m1 bias point values, (Assuming Class A, AC current l imited to marker m2 value and AC voltage nohigher 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
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 BiasDisplay AssistantTransistor 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
PortP4Num=4
PortP3Num=3
PortP2Num=2Port
P1Num=1
RR3R=0 mOhm
RR2R=55.001167 kOhm
RR1R=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
19
VC
VBE
DCDC1
Step=5Stop=125Start=-55SweepVar="temp"
DC
V_DCSRC1Vdc=5 V
RRBR=56 kOhm
RRCR=590 Ohm
VARVAR2
VCE= 3 VIBB =0 A
EqnVar
I_ProbeIC
bjt_pkgQ1beta=160
Sweep temperature
variable “temp” from
-55 to 125 degree.
Show the variable
2.16
m1indep(m1)=plot_vs(VC, temp)=3.079
-55.000
m2ind Delta=dep Delta=-0.122Delta 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
VB
EV
C
m1m2
m1indep(m1)=plot_vs(VC, temp)=3.079
-55.000
m2ind Delta=dep Delta=-0.122Delta 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
20
Activate for available gain and stability circles:
SP_NWAX1
Port2Z=50Port1Z=50VBias2=3.03 VVBias1=799 mVNumPoints=101Stop=5 GHzStart=0.1 GHz
+ +
21
bjt_pkgQ1beta=160
DisplayTemplatedisptemp1
"S_21_11_wZoom""SP_NWA_T"
TempDisp
DisplayTemplatedisptemp2
"Circles_Stability""Circles_Ga_Stab"
TempDisp
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_lim1freq=dB(S(2,1))=20.323
2.060GHz
F_lim2freq=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_lim1F_lim2 F_lim1
freq=dB(S(2,1))=20.323
2.060GHz
F_lim2freq=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, dBZoomed Forward Transmission, dB
Zoomed Input Reflection Coefficient
Move markers to set frequency range of datadisplayed in "zoomed" plots
Set value for constant-VSWRcircle 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
21
VBE
pb_hp_AT41533_19950125Q3
V_DCSRC1Vdc=VCE
I_ProbeIC
I_DCSRC2Idc=IBB
2.19
2.3
Design Parameter
I-V
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
VinV_ACSRC2
Freq=freqVac=polar(1,0) V
RR1R=50 Ohm
DC_BlockDC_Block2
DC_BlockDC_Block1
RRBR=56 kOhm
bjt_pkgQ1beta=160
Vcc
V_DCSRC1Vdc=5 V
VccRRCR=590 Ohm
AC voltage source
DC block is an ideal ac-coupled capacitor
Same node
3.1
23
3. AC
(1) AC Controller 100 MHz 4 GHz 100 MHz
3.2
(2) AC Controller Noise Calculate noise
Vout Display CalcNoise
NoiseNode
ACAC1
Step=100 MHzStop=4.0 GHzStart=100 MHz
AC
ACAC1
NoiseNode[1]="Vout"CalcNoise=yesStep=100 MHzStop=4.0 GHzStart=100 MHz
AC
Setup noise
3.2 AC
4. AC
(1) list name vnc
Vout
index
freq=100.0 MHz012345678
freq=200.0 MHz012345678
freq=300.0 MHz0123456
name
_totalQ1.BJT1
Q1.BJT1.ibeQ1.BJT1.ice
Q1.L1R1RBRC
SRC2
_totalQ1.BJT1
Q1.BJT1.ibeQ1.BJT1.ice
Q1.L1R1RBRC
SRC2
_totalQ1.BJT1
Q1.BJT1.ibeQ1.BJT1.ice
Q1.L1R1RB
vnc
1.729 nV1.494 nV8.479 pV1.494 nV75.74 pV833.3 pV24.90 pV242.6 pV0.0000 V
1.728 nV1.492 nV16.93 pV1.492 nV75.65 pV833.0 pV24.89 pV242.5 pV0.0000 V
1.725 nV1.489 nV25.35 pV1.489 nV75.51 pV832.7 pV24.88 pV
3.3 ADS
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 MHz200.0 MHz300.0 MHz400.0 MHz500.0 MHz600.0 MHz700.0 MHz800.0 MHz900.0 MHz1.000 GHz1.100 GHz1.200 GHz1.300 GHz1.400 GHz1.500 GHz1.600 GHz1.700 GHz1.800 GHz1.900 GHz2.000 GHz2.100 GHz2.200 GHz2.300 GHz2.400 GHz2.500 GHz2.600 GHz2.700 GHz2.800 GHz
Gain_dB
15.41915.40915.39315.37015.34015.30515.26315.21515.16215.10315.03914.97014.89614.81814.73514.64914.55814.46514.36814.26814.16514.06013.95313.84413.73313.62113.50713.392
Gain_dB1
15.41915.40915.39315.37015.34015.30515.26315.21515.16215.10315.03914.97014.89614.81814.73514.64914.55814.46514.36814.26814.16514.06013.95313.84413.73313.62113.50713.392
dB(gain_voltage)
15.41915.40915.39315.37015.34015.30515.26315.21515.16215.10315.03914.97014.89614.81814.73514.64914.55814.46514.36814.26814.16514.06013.95313.84413.73313.62113.50713.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
_vol
tage
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
Gai
n_d
B
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
Gai
n_dB
x-axis in log-scale
3.5
25
5.
(1)
(2) 3.6
You can write an equation to
calculate the group delay.
3.6
6.
(1)
3.7
ACAC1
NoiseNode[1]="Vout"CalcNoise=noStep=100 MHzStop=4.0 GHzStart=100 MHz
AC
ParamSweepSweep1
Step=0.5Stop=5Start=0SimInstanceName[6]=SimInstanceName[5]=SimInstanceName[4]=SimInstanceName[3]=SimInstanceName[2]=SimInstanceName[1]="AC1"SweepVar="Vdcs"
PARAMETER SWEEP
Vcc
V_DCSRC1Vdc=Vdcs
VARVAR2Vdcs=5 V
EqnVar
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
_vol
tag
e
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
26
7.
(1) V_AC ( )
P_AC( 50 ) V_AC
3.8 Term2 3.1 R1
Vout
Vin
MeasEqnMeas1gain_voltage=mag(Vout)/mag(Vin)
EqnMeas
TermTerm2
Z=50 OhmNum=2P_AC
PORT1
Freq=freqPac=polar(dbmtow (0),0)Z=50 OhmNum=1
DC_BlockDC_Block2
DC_BlockDC_Block1
RRBR=56 kOhm
bjt_pkgQ1beta=160
VccRRCR=590 Ohm
index
freq=100.0 MHz012345678
freq=200.0 MHz012345678
freq=300.0 MHz0123456
name
_totalPORT1
Q1.BJT1Q1.BJT1.ibeQ1.BJT1.ice
Q1.L1RBRC
Term2
_totalPORT1
Q1.BJT1Q1.BJT1.ibeQ1.BJT1.ice
Q1.L1RBRC
Term2
_totalPORT1
Q1.BJT1Q1.BJT1.ibeQ1.BJT1.ice
Q1.L1RB
vnc
5.382 nV5.001 nV1.783 nV984.2 pV1.486 nV70.80 pV174.2 pV241.4 pV829.2 pV
5.376 nV4.995 nV1.780 nV983.0 pV1.484 nV70.71 pV174.0 pV241.3 pV829.0 pV
5.365 nV4.984 nV1.777 nV981.1 pV1.481 nV70.56 pV173.6 pV
Port noises are considered
3.8
3.3
( )
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_ParamSP1
Step=100 MHzStop=4 GHzStart=100 MHz
S-PARAMETERS
VARVAR2Vdcs=5 V
EqnVar
Vcc
V_DCSRC1Vdc=Vdcs
DC_FeedDC_Feed1
RRBR=56 kOhm
DC_FeedDC_Feed2
VccRRCR=590 Ohm
TermTerm2
Z=50 OhmNum=2Term
Term1
Z=50 OhmNum=1
DC_BlockDC_Block2
DC_BlockDC_Block1
bjt_pkgQ1beta=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
m1freq=dB(S(2,1))=20.422
1.900GHz
Power gain
dB(S(2,1))
4.1
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
m2freq=S(1,1)=0.855 / -3.631impedance = Z0 * (10.990 - j4.420)
1.900GHz
freq (100.0MHz to 4.000GHz)
m2
m2freq=S(1,1)=0.855 / -3.631impedance = 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-91.100E-82.100E-83.100E-84.100E-85.100E-86.100E-87.100E-88.100E-89.100E-81.010E-71.110E-71.210E-71.310E-71.410E-71.510E-71.610E-71.710E-71.810E-71.910E-7
XL
11.938131.319250.699370.080489.460608.841728.221847.602966.982
1086.3631205.7431325.1241444.5041563.8851683.2651802.6461922.0262041.4072160.7872280.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
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_ParamSP1
Step=100 MHzStop=4 GHzStart=100 MHz
S-PARAMETERS
CDC_Block2C=10 pF
LDC_Feed1
R=L=120 nH
LDC_Feed2
R=L=120 nH
CDC_Block1C=10 pF
VARVAR2Vdcs=5 V
EqnVar
Vcc
V_DCSRC1Vdc=Vdcs
RRBR=56 kOhm
VccRRCR=590 Ohm
TermTerm2
Z=50 OhmNum=2Term
Term1
Z=50 OhmNum=1
bjt_pkgQ1beta=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
))
m2f req=dB(S(2,1))=20.253
1.900GHz
freq (100.0MHz to 4.000GHz)
S(1
,1)
m1
S(2
,2)
m1f req=S(1,1)=0.856 / -3.557impedance = 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
))
m1f req=dB(S(2,1))=20.422
1.900GHz
freq (100.0MHz to 4.000GHz)
S(1
,1)
m2
S(2
,2)
m2f req=S(1,1)=0.855 / -3.631impedance = 549.490 - j221.017
1.900GHz
4.5 Choke Block
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_ParamSP1
Step=10 MHzStop=4 GHzStart=100 MHz
S-PARAMETERS
CC_match_inC=1 pF
LL_match_in
R=L=10 nH
CDC_Block2C=10 pF
LDC_Feed1
R=L=120 nH
LDC_Feed2
R=L=120 nH
CDC_Block1C=10 pF
VARVAR2Vdcs=5 V
EqnVar
Vcc
V_DCSRC1Vdc=Vdcs
RRBR=56 kOhm
VccRRCR=590 Ohm
TermTerm2
Z=50 OhmNum=2
bjt_pkgQ1beta=160
TermTerm1
Z=50 OhmNum=1
Input matching network
(L-shape matching)
Frequency step is set to
10 MHz
m2f req=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
))
m2f req=dB(S(2,1))=21.668
1.900GHz
m1f req=S(1,1)=0.793 / 100.094impedance = 9.739 + j40.943
1.900GHz
freq (100.0MHz to 4.000GHz)
S(1
,1)
m1
S(2
,2)
m1f req=S(1,1)=0.793 / 100.094impedance = 9.739 + j40.943
1.900GHz
Not matched to 50 Ohm
4.6
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 )
LL_match_out
R=L=14.3 nH
CC_match_outC=0.4 pF
TermTerm2
Z=50 OhmNum=2
LL_match_in
R=L=14.3 nH {t} C
C_match_inC=0.4 pF {t}
S_ParamSP1
Step=10 MHzStop=4 GHzStart=100 MHz
S-PARAMETERS
CDC_Block2C=10 pF
LDC_Feed1
R=L=120 nH
LDC_Feed2
R=L=120 nH
CDC_Block1C=10 pF
VARVAR2Vdcs=5 V
EqnVar
Vcc
V_DCSRC1Vdc=Vdcs
RRBR=56 kOhm
VccRRCR=590 Ohm
bjt_pkgQ1beta=160
TermTerm1
Z=50 OhmNum=1
Input matching network
(L-shape matching)
Add output matching network
(L-shape matching)
freq (100.0MHz to 4.000GHz)
S(1
,1)
m1S(2
,2)
m3
m1freq=S(1,1)=0.181 / -111.418impedance = 41.510 - j14.469
1.900GHz
m3freq=S(2,2)=0.533 / -125.411impedance = Z0 * (0.376 - j0.457)
1.900GHz
After simulation, you can see the input
matching is affected by the output
matching network.
4.8
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
OptimOptim1
SaveCurrentEF=noUseAllGoals=yes
UseAllOptVars=yesSaveAllIterations=noSaveNominal=yesUpdateDataset=yesSaveOptimVars=noSaveGoals=yesSaveSolns=yesSeed= SetBestValues=yesNormalizeGoals=noFinalAnalys is="SP1"StatusLevel=4Des iredError=0.0Max Iters=125OptimType=Random
OPTIM
GoalOptimGoal2
RangeMax[1]=1950 MHzRangeMin[1]=1850 MHzRangeVar[1]="freq"Weight=Max=-10Min=SimInstanceName="SP1"Expr="dB(S(2,2))"
GOAL
GoalOptimGoal1
RangeMax[1]=1950 MHzRangeMin[1]=1850 MHzRangeVar[1]="freq"Weight=Max=-10Min=SimInstanceName="SP1"Expr="dB(S(1,1))"
GOAL
TermTerm1
Z=50 OhmNum=1
bjt_pkgQ1beta=160
VccRRCR=590 Ohm
RRBR=56 kOhm
Vcc
V_DCSRC1Vdc=Vdcs
VARVAR2Vdcs=5 V
EqnVar
CDC_Block1C=10 pF
LDC_Feed2
R=L=120 nH
LDC_Feed1
R=L=120 nH
CDC_Block2C=10 pF
S_ParamSP1
Step=10 MHzStop=4 GHzStart=100 MHz
S-PARAMETERS
CC_match_inC=0.4 pF {t}
LL_match_in
R=L=14.3 nH {t}
TermTerm2
Z=50 OhmNum=2
CC_match_outC=0.4 pF
LL_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
GoalOptimGoal1
RangeMax[1]=1950 MHzRangeMin[1]=1850 MHzRangeVar[1]="freq"Weight=Max=-10Min=SimInstanceName="SP1"Expr="dB(S(1,1))"
GOAL
GoalOptimGoal2
RangeMax[1]=1950 MHzRangeMin[1]=1850 MHzRangeVar[1]="freq"Weight=Max=-10Min=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.”
OptimOptim1
SaveCurrentEF=noUseAllGoals=yes
UseAllOptVars=yesSaveAllIterations=noSaveNominal=noUpdateDataset=yesSaveOptimVars=noSaveGoals=yesSaveSolns=yesSeed= SetBestValues=yesNormalizeGoals=noFinalAnalysis="SP1"StatusLevel=4DesiredError=0.0MaxIters=125OptimType=Random
OPTIM
4.10
33
(3) ( )
Tune/Opt/Stat/DOE Setup Tuning Tuning Status
Optimization Enable
{o} ADS S11
S22
Double clickClear tuning
Enable optimization
LL_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
m3f req=dB(Optim1.SP1.SP.S)=36.121optIter=64, index=(2,1)
1.900GHzm4f req=dB(Optim1.SP1.SP.S)=-12.905optIter=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(O
ptim
1.S
P1.
SP
.S)
m3
m4
m3f req=dB(Optim1.SP1.SP.S)=36.121optIter=64, index=(2,1)
1.900GHzm4f req=dB(Optim1.SP1.SP.S)=-12.905optIter=64, index=(2,2)
1.900GHz
m1f req=Optim1.SP1.SP.S(1,1)=0.273 / -133.666optIter=64impedance = Z0 * (0.638 - j0.272)
1.900GHz
m2f req=Optim1.SP1.SP.S(2,2)=0.226 / -154.179optIter=64impedance = Z0 * (0.650 - j0.135)
1.900GHz
freq (100.0MHz to 4.000GHz)
Opt
im1.
SP
1.S
P.S
(1,1
)
m1
Opt
im1.
SP
1.S
P.S
(2,2
)
m2
m1f req=Optim1.SP1.SP.S(1,1)=0.273 / -133.666optIter=64impedance = Z0 * (0.638 - j0.272)
1.900GHz
m2f req=Optim1.SP1.SP.S(2,2)=0.226 / -154.179optIter=64impedance = 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
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
m3f req=dB(Optim1.SP1.SP.S)=37.031optIter=120, index=(2,1)
1.900GHzm4f req=dB(Optim1.SP1.SP.S)=-20.254optIter=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(O
ptim
1.S
P1.
SP
.S)
m3
m4
m3f req=dB(Optim1.SP1.SP.S)=37.031optIter=120, index=(2,1)
1.900GHzm4f req=dB(Optim1.SP1.SP.S)=-20.254optIter=120, index=(2,2)
1.900GHz
m1f req=Optim1.SP1.SP.S(1,1)=0.086 / -144.263optIter=120impedance = Z0 * (0.866 - j0.087)
1.900GHz
m2f req=Optim1.SP1.SP.S(2,2)=0.097 / -147.607optIter=120impedance = Z0 * (0.844 - j0.089)
1.900GHz
freq (100.0MHz to 4.000GHz)
Opt
im1.
SP
1.S
P.S
(1,1
)
m1
Opt
im1.
SP
1.S
P.S
(2,2
)
m2
m1f req=Optim1.SP1.SP.S(1,1)=0.086 / -144.263optIter=120impedance = Z0 * (0.866 - j0.087)
1.900GHz
m2f req=Optim1.SP1.SP.S(2,2)=0.097 / -147.607optIter=120impedance = 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
LL_match_in
R=L=20.637 nH {-o}
OptimOptim1
SaveCurrentEF=noUseAllGoals=yes
StatusLevel=4DesiredError=0.0MaxIters=125OptimType=Random
OPTIM
Disable optimization for matching componentsUpdate optimization values
After the optimization,
deactivate the OPTIM
controller to turn off
this function.
4.14
35
(7) Optim s_opt.dsn s_final.dsn Tuning
4.15 S11 S22 -33 dB
m3freq=dB(var("S"))=35.168(2,1)
1.900GHz
m4freq=dB(var("S"))=-39.575(2,2)
1.900GHzm5freq=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(v
ar("
S")
)
m3
m4m5
m3freq=dB(var("S"))=35.168(2,1)
1.900GHz
m4freq=dB(var("S"))=-39.575(2,2)
1.900GHzm5freq=dB(var("S"))=-33.824(1,1)
1.900GHz
m1freq=S(1,1)=0.020 / 171.484impedance = Z0 * (0.961 + j0.006)
1.900GHz
m2freq=S(2,2)=0.011 / -12.184impedance = Z0 * (1.021 - j0.005)
1.900GHz
freq (100.0MHz to 4.000GHz)S
(1,1
) m1
S(2
,2) m2
m1freq=S(1,1)=0.020 / 171.484impedance = Z0 * (0.961 + j0.006)
1.900GHz
m2freq=S(2,2)=0.011 / -12.184impedance = 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
1 ADS Simulation-S_Param
Mu MuPrim 4.16
OptionsOptions1
MaxWarnings=10GiveAllWarnings=yesI_AbsTol=I_RelTol=V_AbsTol=V_RelTol=Tnom=25Temp=16.85
OPTIONS
S_ParamSP1
CalcNoise=yesStep=10 MHzStop=1950 MHzStart=1850 MHz
S-PARAMETERS
NsCircleNsCircle1NsCircle1=ns_circle(nf2,NFmin,Sopt,Rn/50,51)
NsCircle
GaCircleGaCircle1GaCircle1=ga_circle(S,30,51)
GaCircle
MuPrimeMuPrime1MuPrime1=mu_prime(S)
MuPrime
MuMu1Mu1=mu(S)
Mu
CC_match_outC=0.22 pF
CC_match_inC=0.35 pF
LL_match_out
R=6 OhmL=27.1 nH
LL_match_in
R=12 OhmL=18.3 nH
TermTerm1
Z=50 OhmNum=1
bjt_pkgQ1beta=160
VccRRCR=590 Ohm
RRBR=56 kOhm
Vcc
V_DCSRC1Vdc=Vdcs
VARVAR2Vdcs=5 V
EqnVar
CDC_Block1C=10 pF
LDC_Feed2
R=L=120 nH
LDC_Feed1
R=L=120 nH
CDC_Block2C=10 pF
TermTerm2
Z=50 OhmNum=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
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)
GaC
ircle
1N
sCirc
le1
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
MuP
rime1
freq
1.850 GHz1.860 GHz1.870 GHz1.880 GHz1.890 GHz1.900 GHz1.910 GHz1.920 GHz1.930 GHz1.940 GHz1.950 GHz
nf(2)
3.1533.1713.1893.2073.2253.2433.2613.2803.2983.3163.335
NFmin
1.0551.0561.0561.0561.0571.0571.0571.0581.0581.0581.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
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
(spa
ram
_sim
..S(2
,1))
The blue circles are from s2p file, and the red line is the
results from sparam_sim.
S2PSNP1File="mybjt..s2p"
21
Ref
SweepPlanSwpPlan1
Reverse=noSweepPlan=UseSweepPlan=Start=100 MHz Stop=3 GHz Step=100 MHz Lin=
SWEEP PLAN
S_ParamSP1
Step=1.0 GHzStop=10.0 GHzStart=1.0 GHzSweepPlan="SwpPlan1"
S-PARAMETERS
TermTerm2
Z=50 OhmNum=2
TermTerm1
Z=50 OhmNum=1
4.19 file-based
38
(4) Create
Symbol 4.20
S2PSNP1File="mybjt..s2p"
21
Ref
PortP2Num=2
PortP1Num=1
bjt_s2pQ2
TermTerm2
Z=50 OhmNum=2
TermTerm1
Z=50 OhmNum=1
Place pinsGo 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
39
4.21
4.3
DC Blocks RF Chokes
DC Block
Choke ADS tuning
optimization ADS
ADS
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
MeasEqnMeas1dBmout=dBm(Vout[1])
EqnMeas
HarmonicBalanceHB1
Order[1]=3Freq[1]=1900 MHz
HARMONIC BALANCE
P_1ToneRF_Source
Freq=1.9 GHzP=dbmtow(-40)Z=50 OhmNum=1
TermTerm2
Z=50 OhmNum=2
LL_match_in
R=12 OhmL=18.3 nH
CC_match_outC=0.22 pF
CC_match_inC=0.35 pF
LL_match_out
R=6 OhmL=27.1 nH
bjt_pkgQ1beta=160
VccRRCR=590 Ohm
RRBR=56 kOhm
Vcc
V_DCSRC1Vdc=Vdcs
VARVAR2Vdcs=5 V
EqnVar
CDC_Block1C=10 pF
LDC_Feed2
R=L=120 nH
LDC_Feed1
R=L=120 nH
CDC_Block2C=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
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 )
m1freq=dBm(Vout)=-4.876
1.900GHz
1 2 3 4 50 6
-80
-60
-40
-20
-100
0
freq, GHz
dBm
(Vou
t)
m1
m1freq=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)
42
(7) (6)
(
)
(3)
Order[1]=3 3
Order[1] 1
(Fundamental component)
( Order[1] )
CPU
(8) (6) (7)
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(V
in),
mV
0.2 0.4 0.6 0.8 1.00.0 1.2
-100
0
100
-200
200
time, nsec
ts(V
out),
mV
2
3
4
1
5
ts(V
c), 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(V
b), m
V
Choose Vin, Vout, Vc and Vb in
Time-domain
5.3 ts()
44
(11) list Mix Mix 0, 1, 2, 3
5.4
freq
0.0000 Hz1.900 GHz3.800 GHz5.700 GHz
Mix
0123
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])
MeasEqnMeas1dBmout=dBm(Vout[1])
EqnMeas 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 Hz1.900 GHz3.800 GHz5.700 GHz
Mix
0123
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)
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!
VoutTermTerm2
Z=50 OhmNum=2
CC_match_outC=0.22 pF
LL_match_out
R=6 OhmL=27.1 nH
Vin
LL_match_in
R=12 OhmL=18.3 nH
CC_match_inC=0.35 pF
P_1ToneRF_Source
Freq=1.9 GHzP=dbmtow(-40)Z=50 OhmNum=1
CDC_Block1C=10 pF
Zin
5.6
Vin
I_ProbeI_inP_1Tone
RF_Source
Freq=1.9 GHzP=dbmtow(-40)Z=50 OhmNum=1
LL_match_in
R=12 OhmL=18.3 nH
CC_match_inC=0.35 pF
Eqn P_deliv_dBm=10*log(0.5*real(Vin[1]*conj(I_in.i[1])))+30
Eqn Z_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
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
VARVAR3RF_pwr=-40
EqnVar
MeasEqnMeas1dBmout=dBm(Vout[1])
EqnMeas
HarmonicBalanceHB1
Step=1Stop=-20Start=-50SweepVar="RF_pwr"Order[1]=3Freq[1]=1900 MHz
HARMONIC BALANCE
P_1ToneRF_Source
Freq=1.9 GHzP=dbmtow(RF_pwr)Z=50 OhmNum=1
XDBHB2
GC_MaxInputPower=100GC_OutputPowerTol=1e-3GC_InputPowerTol=1e-3GC_OutputFreq=1.9 GHzGC_InputFreq=1.9 GHzGC_OutputPort=2GC_InputPort=1GC_XdB=1Order[1]=3Freq[1]=1.9 GHz
GAIN COMPRESSION
I_ProbeI_in
TermTerm2
Z=50 OhmNum=2
LL_match_in
R=12 OhmL=18.3 nH
CC_match_outC=0.22 pF
CC_match_inC=0.35 pF
LL_match_out
R=6 OhmL=27.1 nH
bjt_pkgQ1beta=160
VccRRCR=590 Ohm
RRBR=56 kOhm
Vcc
V_DCSRC1Vdc=Vdcs
VARVAR2Vdcs=5 V
EqnVar
CDC_Block1C=10 pF
LDC_Feed2
R=L=120 nH
LDC_Feed1
R=L=120 nH
CDC_Block2C=10 pF
-45 -40 -35 -30 -25-50 -20
-10
-5
0
5
-15
10
RF_pwr
dB
mou
t
m1
m1indep(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
47
Eqn Gain_db=dBmout-RF_pwr
-45 -40 -35 -30 -25-50 -20
26
28
30
32
34
24
36
RF_pwr
Gai
n_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
Gai
n_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
Gai
n_db
m3
m3dBmout=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
Gai
n_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 )
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]
m4indep(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
dBm
out m4
Lin_
pwr
m4indep(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
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
HarmonicBalanceHB1
Step=1Stop=-20Start=-50SweepVar="RF_pwr"Order[2]=4Order[1]=4Freq[2]=RF_freq-tone_spacing/2Freq[1]=RF_freq+tone_spacing/2MaxOrder=8
HARMONIC BALANCE
VARVAR3
tone_spacing=10 MHzRF_freq=1900 MHzRF_pwr=-40
EqnVar
VARVAR2Vdcs=5 V
EqnVar
P_nTonePORT1
P[2]=dbmtow(RF_pwr)P[1]=dbmtow(RF_pwr)Freq[2]=RF_freq-tone_spacing/2Freq[1]=RF_freq+tone_spacing/2Z=50 OhmNum=1
MeasEqnMeas1dBmout=dBm(Vout[1])
EqnMeas
I_ProbeI_in
LL_match_in
R=12 OhmL=18.3 nH
CC_match_inC=0.35 pF
CDC_Block1C=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
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
(Vou
t)
m1
m1freq=dBm(Vout)=-4.935
1.895GHz
1.89 1.90 1.911.88 1.92
-150
-100
-50
-200
0
freq, GHz
dBm
(Vou
t)
m1 m2
m1freq=dBm(Vout)=-4.935
1.895GHzm2freq=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)
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 Hz10.00 MHz20.00 MHz30.00 MHz40.00 MHz1.865 GHz1.875 GHz1.885 GHz1.895 GHz1.905 GHz1.915 GHz1.925 GHz1.935 GHz3.770 GHz
MixMix(1) Mix(2)
01234
-3-2-101234
-2
0-1-2-3-443210
-1-2-34
Vin Vb
IP3outipo1upper_toi=ip3_out(Vout,{1,0},{2,-1},50)
P0
Pin
IP3out
IP3outipo2lower_toi=ip3_out(Vout,{0,1},{-1,2},50)
P0
Pin
IP3out
I_ProbeI_in
P_nTonePORT1
P[2]=dbmtow(RF_pwr)P[1]=dbmtow(RF_pwr)Freq[2]=RF_freq-tone_spacing/2Freq[1]=RF_freq+tone_spacing/2Z=50 OhmNum=1
MeasEqnMeas1dBmout=dBm(Vout[1])
EqnMeas
HarmonicBalanceHB1
Step=Stop=Start=SweepVar=Order[2]=4Order[1]=4Freq[2]=RF_freq-tone_spacing/2Freq[1]=RF_freq+tone_spacing/2MaxOrder=8
HARMONIC BALANCE
VARVAR3
tone_spacing=10 MHzRF_freq=1900 MHzRF_pwr=-40
EqnVar
VARVAR2Vdcs=5 V
EqnVar
LL_match_in
R=12 OhmL=18.3 nH
CC_match_inC=0.35 pF
RRBR=56 kOhm
CDC_Block1C=10 pF
LDC_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
52
4. (IP3)
(1) hb_2tone.dsn hb_2toneip3.dsn
-45dBm -30 dBm 5.15
Vin
Vc
Vb
Vout
HarmonicBalanceHB1
Step=1Stop=-30Start=-45SweepVar="RF_pwr"Order[2]=4Order[1]=4Freq[2]=RF_freq-tone_spacing/2Freq[1]=RF_freq+tone_spacing/2MaxOrder=8
HARMONIC BALANCE
VARVAR3
tone_spacing=10 MHzRF_freq=1900 MHzRF_pwr=-40
EqnVar
IP3outipo1upper_toi=ip3_out(Vout,{1,0},{2,-1},50)
P0
Pin
IP3out
IP3outipo2lower_toi=ip3_out(Vout,{0,1},{-1,2},50)
P0
Pin
IP3out
I_ProbeI_in
P_nTonePORT1
P[2]=dbmtow(RF_pwr)P[1]=dbmtow(RF_pwr)Freq[2]=RF_freq-tone_spacing/2Freq[1]=RF_freq+tone_spacing/2Z=50 OhmNum=1
MeasEqnMeas1dBmout=dBm(Vout[1])
EqnMeas
VARVAR2Vdcs=5 V
EqnVar
TermTerm2
Z=50 OhmNum=2
LL_match_in
R=12 OhmL=18.3 nH
CC_match_outC=0.22 pF
CC_match_inC=0.35 pF
LL_match_out
R=6 OhmL=27.1 nH
bjt_pkgQ1beta=160
VccRRCR=590 Ohm
RRBR=56 kOhm
Vcc
V_DCSRC1Vdc=Vdcs
CDC_Block1C=10 pF
LDC_Feed2
R=L=120 nH
LDC_Feed1
R=L=120 nH
CDC_Block2C=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
(Vou
t,{1,
0})
)dB
m(m
ix(V
out,{
2,-1
}))
RF_pwr_in
Lin
_pw
r
m1
IM3
_lin
m1indep(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
53
(3) IP3out ip3_out()
5.17 OIP3
4
IP1dB 10 dB 10 dB
ADS (ip3out()
4 )
m1indep(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
dB
m(m
ix(V
ou
t,{1
,0})
)d
Bm
(mix
(Vo
ut,{
2,-
1})
)
RF_pwr_in
Lin
_pw
r
m1
IM3_
lin
m1indep(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 (
)