Presentation - aslanistan.com

Download Report

Transcript Presentation - aslanistan.com

SPICE USING LTSPICE
DR. ASLAN
TEXAS STATE UNIVERSITY
OUTLINE
• Introduction to SPICE
• DC Analysis
• Transient Analysis
• AC Analysis
• Subcircuits
• Optimization
• Power Measurement
INTRODUCTION TO SPICE
• Simulation Program with Integrated Circuit Emphasis
• Developed in 1970’s at Berkeley
• Many commercial versions are available
• HSPICE is a robust industry standard
• Has many enhancements that we will use
• Written in FORTRAN for punch-card machines
• Circuits elements are called cards
• Complete description is called a SPICE deck
WRITING SPICE DECKS
• Writing a SPICE deck is like writing a good program
• Plan: sketch schematic on paper or in editor
• Modify existing decks whenever possible
• Code: strive for clarity
• Start with name, email, date, purpose
• Generously comment
• Test:
• Predict what results should be
• Compare with actual
• Garbage In, Garbage Out!
SOME FACTS AND RULES ABOUT SPICE
•
•
•
•
•
•
•
Spice is not case sensitive. Rsource and RsOuRcE and RSOURCE are equivelent.
All element names must be unique. You can't have two capacitors that both are named “C1”.
The first line in the data file is used as a title. Spice will ignore this line as circuit data. Put your name and title.
There must be a node designated "0" (Zero). This is the reference node against which all voltages are calculated.
Each node must have at least two elements attached to it.
The last line in any data file must be ".END" (a period followed by the word "end.")
All lines that are not blank (except for the title line) must have a character in column 1, the leftmost position on the
line.
• Use "*" (an asterisk) in column 1 in order to create a comment line.
• Use "+" (plus sign) in column 1 in order to continue the previous line (for better readability of very long lines).
• Use "." (period) in column 1 followed by the rest of the "dot command" to pass special instructions to the program.
• Use the designated letter for a part in column 1 followed by the rest of the name for that part (no spaces in the part name).
• Use "whitespace" (spaces or tabs) to separate data fields on a line.
• Use ";" (semicolon) to terminate data on a line if you wish to add commentary information on that same line.
SPICE ELEMENTS
UNITS
Letter
Unit
Magnitude
a
atto
10-18
f
fempto
10-15
p
pico
10-12
n
nano
10-9
u
micro
10-6
m
mili
10-3
k
kilo
103
x
mega
106
g
giga
109
Ex: 100 femptofarad capacitor = 100fF, 100f, 100e-15
SOURCES - DC
<source name> <positive node> <negative node> <source model>
• DC Source
Vname
N1
N2
Type Value
Iname
N1
N2
Type Value
Vs
1
0
DC
20V
Is
0
4
DC
50MA
Va
vs
VWX
vwx
Vdep
4
qe
23
14
15
2
qc
14
23
27
DC
dc
18k
DC
DC
16.0V
24m
; "V" after "16.0" is optional
; "QE" is +node & "qc" is -node
; "dc" not really needed
-1.8E4 ; same as above
0V
; V-source used as ammeter
SOURCES - AC
• DC Source
Vname
n+
n-
Type
Value
Phase (Deg)
Iname
n+
n-
Type
Value
Phase (Deg)
Vac 4 1 AC 120V 30
Vba 2 5 AC 240
Ix 3 6 AC 10.0A -45
Isv 12 9 AC 25mA
; phase angle 0 degrees
; phase angle -45 degrees
; 25 milliamps @ 0 degrees
SOURCES – DEPENDENT
• Voltage controlled voltage source:
Ename n+
n-
nc+
Ebar
17 8 42 18
efix
3 1
nc-
Voltage Gain Value
24.0; gain is 24
0 11 -20.0; same as above
Ellen 12 0 20 41
16.0
• Voltage controlled current source:
Gname
Glab 23
G1 12
Grad 19
Grad 19
Grad 40
n+
n-
nc+
nc-
17 8 3 2.5
9 1 0 4E-2
40 6 99 0.65
40 99 6 -0.65 ; same as above
19 99 6 0.65 ; etc.
Value
SOURCES – DEPENDENT (CONT.)
•
Current controlled voltage source:
Hname
N1
N2
Vcontrol Value
Hvx 20 12 Vhx
Vhx 80 76 DC
50.0
0V ; controls Hvx
Hab 10 0 V20
V20 15 5 DC
75.0
0V ; controls Hab
HAL 20 99 Vuse
10.0
Vuse 3 5 DC
20V ; actual voltage source
•
Current controlled current source:
Fname N1
Ftrn
Vclt
Fcur
Vx
F3
V1
81
23
63
33
2
3
N2
Vcontrol Value
19 Vctl
12 DC
48 Vx
71 DC
0 V1
1 DC
50.0
0V ; controls Ftrn
20.0
0V ; controls Fcur
15.0
0V ; controls F3
SOURCES – PULSE
Vname n+ n- Pulse(V1 V2 Td Tr Tf Tw Period)
V1
: Initial voltage
V2
: Peak voltage
Td
: Initial delay time
Tr
: Rise time;
Tf
: Fall time;
Tw
: Pulse width
Period
: Period.
Vs 1 0 Pulse(0V 10V 0 0.1 0.1 0.9 2)
Vs 1 0 Pulse(0V 10V 0s 100ms 100ms 900ms 2s)
Vs 1 0 Pulse(0 10 0 100m 100m 900m 2)
SOURCES – SINUSOIDAL
Vname n+ n- Sin(Vo Va fr Td Theta phase)
Vname = Vo + Va e[-Theta.(t - Td)] sin[2pi.fr (t - Td) + (Phase/360)]
Vo : Offset voltage in volt.
Va : Amplitude in volt.
fr
: The frequency in Hz.
Td
: Delay in seconds
Theta : Damping factor per second
Phase : Phase in degrees
Vs 1 0 SIN(2V 5V 2Hz 200ms 2Hz 30d)
VG 1 2 SIN(5 10 50 0.2 0.1)
VG2 3 4 SIN(0 10 50)
SOURCES – PIECEWISE LINEAR SOURCE
Vname n+ n- PWL(T1 V1 T2 V2 T3 V3 ...)
T1
: Time for the first point
V1 : Voltage for the first point
T2
: Time for the second point
V2 : Voltage for the second point
Vgpwl 1 2 PWL(0 0 10U 5 100U 5 110U 0)
CIRCUIT ANALYSIS - .OP
• .OP
(Operating Point Analysis)
Example_OP.CIR
Vs 1 0 DC 20.0V ; note the node placements
Ra 1 2 5.0k
Rb 2 0 4.0k
Rc 3 0 1.0k
Is 3 2 DC 2.0mA ; note the node placements
.OP
.END
If you need some values use
.PRINT DC V(3,2) I(Ra)
CIRCUIT ANALYSIS - .TRAN
•
.TRANTransient Analysis
*
prt_stp t_max prt_dly max_stp
.TRAN 20us 20ms 8ms
10us UIC
1. The following example performs and prints the transient analysis every 1 ns for 100
ns.
.TRAN 1NS 100NS
2. The following example performs the calculation every 10 ns for 1 µs; the initial DC
operating point calculation is bypassed, and the nodal voltages specified in the .IC
statement (or by IC parameters in element statements) are used to calculate initial
conditions.
.TRAN 10NS 1US UIC
CIRCUIT ANALYSIS - .TRAN
Example_TRAN.cir
Rp 0 1 1.0
Lp 1 0 8mH IC=20A
Cp 1 0 10mF IC=0V
.TRAN 500us 100ms 0s 500us UIC
.PROBE
.END
DATA TRANSFER TO MATLAB
Assume I have the previous circuit Example_TRAN.cir. After you run Simulate
import your data to MATLAB for further analysis. In LTSpice go to
now you can
Change the file name. Keep the
extension (mace it .xls if you want to
open in excel)
File → Export
Highlight the data values
(Transient analysis time will be added)
Now you can open your MATLAB and relocate MATLAB directory where you saved
“Example_ TRAN.txt” file.
DATA TRANSFER TO MATLAB (CONT.)
Now you can open your MATLAB and relocate MATLAB directory where you saved
“Example_ TRAN.txt” file. In MATLAB command window type
>> load Example_TRAN.txt
will create and error. This is due to forst line of the txt file.
Txt file
xls file
MATLAB cannot read that first line as data. Delete that line and save your file. Do not forget
the order of the columns. (1st Column is time, 2nd I(Cp) and 3rd one is I(Lp))
>> load Example_TRAN.txt
In workspace of MATLAB you will see the loaded data. It hae 202 rows and 3 columns. Next
step we will save the data as time, I(Cp) and I(Lp).
DATA TRANSFER TO MATLAB (CONT.)
In workspace of MATLAB you will see the loaded data. It hae 202 rows and 3 columns. Next step we will save the
data as time, I(Cp) and I(Lp).
>> t=Example_TRAN(:,1); %This will save t as time variable
>> I_Cp=Example_TRAN(:,2); %This will save I_Cp as time I(Cp)
>> I_Lp=Example_TRAN(:,3); %This will save I_Lp as time I(Lp)
Your work place shoul look like this
Now we can plot these
>> >> plot (t, I_Cp, t,I_Lp)
CIRCUIT ANALYSIS - .AC
*
.AC
.AC
.AC
type
LIN
LIN
DEC
#points
1
11
20
start
60Hz
100
1Hz
stop
60Hz; <== what we want now.
200;
<== a linear range sweep
10kHz; <== a logarithmic range sweep
.PRINT AC VM(30,9) VP(30,9); magnitude & angle of voltage
.PRINT AC IR(Rx) II(Rx); real & imag. parts Rx current
.PRINT AC VM(17) VP(17) VR(17) VI(17); the whole works on node 17
CIRCUIT ANALYSIS - .AC
Example_AC.cir
Vs 1 0 AC 120V 0
Rg 1 2 0.5
Lg 2 3 3.183mH
Rm 3 4 16.0
Lm 4 0 31.83mH
Cx 3 0 132.8uF
.AC LIN 1 60 60
.PRINT AC VM(3) VP(3) IM(Rm) IP(Rm) IM(Cx) IP(Cx)
.END
CIRCUIT ANALYSIS - .AC
First-order low-pass RC filter
Vin 1 0 AC 1.0V
Rf 1 2 1.59
Cf 2 0 100uF
.AC DEC 20 100Hz 100kHz
.PROBE
.END
Second-Order High-Pass Filter
Vin 1 0 AC 10V
Rf 1 2 4.0
CF 2 3 2.0uF
Lf 3 0 127uH
.AC DEC 20 100Hz 1MEG
.PROBE
.END
SUBCIRCUITS
*
name
nodelist
.SUBCKT Example_1 5 12 18
Iw 10 12 DC 10A
Ra 5 12 5.0
Rb 5 13 4.0
Rc 12 13 2.0
Rd 5 18 8.0
Re 13 18 3.0
Rf 10 13 1.0
Rg 10 18 6.0
.ENDS
Subcircuit Example No. 1
*
name
nodelist
.SUBCKT Example_1 5 12 18
Iw 10 12 DC 10A
Ra 5 12 2.0
Rb 5 13 5.0
Rc 12 13 2.0
Rd 5 18 8.0
Re 13 18 3.0
Rf 10 13 1.0
Rg 10 18 6.0
.ENDS
Vs 1 0 DC 50V
Ra 1 2 1.0 ; different from Ra above
Rb 3 4 3.0 ; different from Rb above
Rc 7 0 25.0 ; different from Rc above
Rd 6 0 45.0 ; different from Rd above
* nodelist
name
X1 2 7 3 Example_1
X2 4 6 5 Example_1
.END
SUBCIRCUITS
.SUBCKT OpAmp p_in n_in com out
Ex int com p_in n_in 1e5
Ri p_in n_in 500k
Ro int out 50.0
.ENDS
Subcircuit Example No. 2 - Inverting OpAmp
.SUBCKT OpAmp p_in n_in com out
Ex int com p_in n_in 1e5
Ri p_in n_in 500k
Ro int out 50.0
.ENDS
Vg 1 0 DC
50mV
Rg 1 2 5k
Rf 2 3 50k
RL 3 0 20k
X1 0 2 0
3 OpAmp
.END
CIRCUIT ANALYSIS
Voltage Divider Circuit
VCC
4
0
DC
12V
R1
4
1
10K
R2
1
0
RMOD 1
.MODEL RMOD RES(R=1)
.STEP RES RMOD(R) .1k, 15k, 1k
RC
4
3
2.7K
RE
2
0
1K
Q1
3
1
2
Q2N3904
Model for 2N3904 NPN BJT (from Eval library in Pspice)
.model Q2N3904
NPN(Is=6.734f Xti=3 Eg=1.11 Vaf=74.03 Bf=416.4 Ne=1.259
+ Ise=6.734f Ikf=66.78m Xtb=1.5 Br=.7371 Nc=2 Isc=0 Ikr=0 Rc=1
+ Cjc=3.638p Mjc=.3085 Vjc=.75 Fc=.5 Cje=4.493p Mje=.2593 Vje=.75
+ Tr=239.5n Tf=301.2p Itf=.4 Vtf=4 Xtf=2 Rb=10)
.OP
.PRINT DC I(VCC) I(RC)
.END
CIRCUIT ANALYSIS
Voltage Divider Circuit
VCC
4
0
DC
12V
R1
4
1
10K
R2
1
0
RMOD 1
.MODEL RMOD RES(R=1)
.STEP RES RMOD(R) .1k, 15k, 1k
RC
4
3
2.7K
RE
2
0
1K
Q1
3
1
2
Q2N3904
.include bjt.lib
.OP
.PRINT DC I(VCC) I(RC)
.END
THEVENIN’S THEOREM
Thevenin Example No. 1
Vs 2 5 DC 100V
Vc 2 3 DC
0V; controls Fx
Fx 6 7 Vc
4.0; gain = 4
* n+ n- NC+ NC gain
Ex 2 1 5 4 3.0; gain = 3
R1 3 4 5.0
R2 4 7 5.0
R3 5 4 4.0
R4 7 0 4.8
R5 5 6 1.0
R10 1 0 1MEG; satisfies PSpice
* out_var input_source
.TF V(1,0) Vs
.END
REFERENCES
• http://www.uta.edu/ee/hw/pspice/
• http://cmosedu.com/
• http://www.seas.upenn.edu/~jan/spice/spice.overview.html#Output