📄 application.lib
字号:
*
** Application library **
** Christophe Basso "Switch-Mode Power Supply SPICE Simulation and Practical Designs"
** Last modified February 2007
*
.subckt dcXFMR 1 2 3 4 d
Rp2 d 0 1Meg
VM 6 5
RS 5 3 1u
E1 6 4 Value = { V(1,2)*V(d) }
G2 1 2 Value = { I(VM)*V(d) }
Rp1 1 2 1Meg
.ends
*
**** MULTI-WINDING TRANSFORMER ****
.SUBCKT XFMR2 1 2 3 4 10 11 PARAMS: RATIO1=1 RATIO2=1
RP 1 2 1MEG
E1 5 4 VALUE = { V(1,2)*RATIO1 }
G1 1 2 VALUE = { I(VM1)*RATIO1 }
RS1 6 3 1U
VM1 5 6
E2 20 11 VALUE = { V(2,1)*RATIO2 }
G2 2 1 VALUE = { I(VM2)*RATIO2 }
RS2 21 10 1U
VM2 20 21
.ENDS XFMR2
**** SINGLE WINDING TRANSFORMER ****
.SUBCKT XFMR1 1 2 3 4 PARAMS: RATIO=1
RP 1 2 1MEG
E 5 4 VALUE = { V(1,2)*RATIO }
G 1 2 VALUE = { I(VM)*RATIO }
RS 6 3 1U
VM 5 6
.ENDS XFMR1
***********
.SUBCKT XFMR-TAP 1 2 3 4 5 PARAMS: RATIO=3.91
E1 7 8 VALUE = { V(1,2)*RATIO }
G1 1 2 VALUE = { I(VM1)*RATIO }
RP 1 2 1MEG
RS 6 3 1U
VM1 7 6
E2 9 5 VALUE = { V(1,2)*RATIO }
G2 1 2 VALUE = { I(VM2)*RATIO }
R5 8 4 1U
VM2 9 8
.ENDS XFMR-TAP
********
.SUBCKT TL431 k a ref
* made by Chris Basso - 2005
G1 a 2 5 ref -250u
Q1 k 2 1 QN3904
R1 1 7 240
R2 7 a 6.6k
Q2 k 7 a QN3904 50
D1 ref k DN4148
C2 7 a 1n
D2 a k D2_mod
C1 k 2 43p
V1 5 a DC=2.49
D3 a 2 D3_mod
.MODEL QN3904 NPN AF=1.0 BF=300 BR=7.5 CJC=3.5PF CJE=4.5PF
+ IKF=.025 IS=1.4E-14 ISE=3E-13 KF=9E-16 NE=1.5 RC=2.4
+ TF=4E-10 TR=21E-9 VAF=100 XTB=1.5
.MODEL DN4148 D BV=100V CJO=4PF IS=7E-09 M=.45 N=2 RS=.8
+ TT=6E-09 VJ=.6V
.MODEL D2_mod D BV=36 CJO=4PF IS=7E-09 M=.45 N=1.3 RS=.8
+ TT=6E-09 VJ=.6V
.MODEL D3_mod D N=0.01
.ENDS
********
.model Sbreak VSWITCH Roff=100 Ron=10 Voff=0.0 Von=1.0
.model Sbreak2 VSWITCH Roff=1E6 Ron=10m Voff=0.0 Von=1.0
.model Sbreak3 VSWITCH Roff=100 Ron=50 Voff=0.0 Von=1.0
.model dbreak d N=0.01
.model dbreakz d BV=15.6 RS=10m
.model dbreakPFC d BV=460 RS=10m
.model dbreakCL d BV=3 RS=10m
.MODEL MBR20100 D
+IS=0.000210108 RS=0.0123882 N=2 EG=0.817576
+XTI=0.500001 BV=1000 IBV=0.0001 CJO=1e-11
+VJ=0.7 M=0.5 FC=0.5 TT=0
+KF=0 AF=1
.MODEL mbr845 d
+IS=6.50276e-05 RS=0.0119924 N=1.33205 EG=0.6
+XTI=3.09376 BV=45 IBV=0.0001 CJO=1.3657e-09
+VJ=0.4 M=0.478505 FC=0.5 TT=1e-09
+KF=0 AF=1
.MODEL mbra210et3 d
+IS=1.58646e-09 RS=0.01 N=0.797738 EG=0.71104
+XTI=4 BV=10 IBV=8e-07 CJO=1.5593e-09
+VJ=0.570707 M=0.478061 FC=0.5 TT=0
+KF=0 AF=1
*
.MODEL mbrf2060ct d
+IS=1e-15 RS=0.0238648 N=0.510622 EG=0.947814
+XTI=0.5 BV=60 IBV=0.00015 CJO=1e-11
+VJ=0.7 M=0.5 FC=0.5 TT=0
+KF=0 AF=1
*
.MODEL mbrp30045ct d
+IS=0.001 RS=0.000431628 N=1.97975 EG=1.3
+XTI=2.80944 BV=45 IBV=0.0008 CJO=1e-11
+VJ=0.7 M=0.5 FC=0.5 TT=0
+KF=0 AF=1
*
.MODEL mbrp400100ctl d
+IS=8.7097e-06 RS=0.000508603 N=1.63909 EG=1.07087
+XTI=2.80619 BV=100 IBV=0.006 CJO=1e-11
+VJ=0.7 M=0.5 FC=0.5 TT=0
+KF=0 AF=1
*
.MODEL 1n5820 d
+IS=0.001 RS=0.0274674 N=2.34208 EG=0.550905
+XTI=3.02706 BV=20 IBV=0.002 CJO=6.36939e-10
+VJ=1.5 M=0.364419 FC=0.5 TT=0
+KF=0 AF=1
*
.MODEL mbrs340t3 d
+IS=0.000182183 RS=0.0312608 N=1.40283 EG=0.576586
+XTI=0.000499955 BV=1000 IBV=0.0001 CJO=4.92728e-10
+VJ=0.573693 M=0.464284 FC=0.5 TT=1e-09
+KF=0 AF=1
*
*****
.SUBCKT FFLOP 6 8 2 1
* S R Q Q\
E_BQB 10 0 VALUE = { IF ( (V(8)<2.5) & (V(2)>2.5), 0, 5V ) }
E_BQ 20 0 VALUE = { IF ( (V(6)<2.5) & (V(1)>2.5), 0, 5V ) }
RD1 10 1 100
CD1 1 0 10P IC=5
RD2 20 2 100
CD2 2 0 10P IC=0
.ENDS FFLOP
*******
.SUBCKT DFFLOP 1 2 11 12 5 6
* CLK D R S QB Q
X1 7 4 2 8 NAND30_64
X2 8 3 10 9 NAND30_64
X3 1 8 10 7 NAND31_64
X4 4 9 1 10 NAND30_64
X5 4 7 6 5 NAND31_64
X6 5 10 3 6 NAND30_64
X7 11 4 INV_64
X8 12 3 INV_64
.ENDS DFFLOP
***** INTERNAL F_FLOP DEFINITION ****
.SUBCKT NAND30_64 1 2 3 4
E1 5 0 VALUE = { IF ( (V(1)>2.5) & (V(2)>2.5) & (V(3)>2.5), 100m, 10 ) }
R1 5 4 10
C1 4 0 10P IC=100m
.ENDS NAND30_64
*
.SUBCKT NAND31_64 1 2 3 4
E1 5 0 VALUE = { IF ( (V(1)>2.5) & (V(2)>2.5) & (V(3)>2.5), 100m, 10 ) }
R1 5 4 10
C1 4 0 10P IC=10
.ENDS NAND31_64
*
.SUBCKT INV_64 1 2
E1 3 0 VALUE = { IF ( V(1)>2.5, 100m, 10 ) }
R1 3 2 10
C1 2 0 10P IC=10
.ENDS INV_64
*******
.SUBCKT OR2 1 2 3
E_B1 4 0 VALUE = { IF ( (V(1)>2.5) | (V(2)>2.5), 5V, 0 ) }
RD 4 3 10
CD 3 0 10P
.ENDS OR2
*******
.SUBCKT INV 1 2
E1 3 0 VALUE = { IF ( V(1)>2.5V, 100m, 5 ) }
R1 3 2 10
C1 2 0 10P
.ENDS INV
*******
.SUBCKT AND2 1 2 3
E_B1 4 0 VALUE = { IF ( (V(1)>2.5) & (V(2)>2.5), 5V, 0 ) }
RD 4 3 10
CD 3 0 10P
.ENDS AND2
*******
.SUBCKT Opto A K C E params: Cpole=2.2n CTR=2
VILED 2 K
DLED A 2 Dmod
Vsat C 4 DC=100m
D2 E 4 DCLAMP
F2 4 E VILED {CTR}
Cpole 4 E {Cpole}
.MODEL DCLAMP D BV=30 N=0.01
.MODEL Dmod D N=1.8
.ENDS
*******
.SUBCKT SWhyste NodeMinus NodePlus Plus Minus PARAMS: RON=1 ROFF=1MEG VT=5 VH=2
S5 NodePlus NodeMinus 8 0 smoothSW
EBcrtl 8 0 Value = { IF ( V(plus)-V(minus) > V(ref), 1, 0 ) }
EBref ref1 0 Value = { IF ( V(8) > 0.5, {VT-VH}, {VT+VH} ) }
Rdel ref1 ref 100
Cdel ref 0 100p IC={VT+VH}
Rconv1 8 0 10Meg
Rconv2 plus 0 10Meg
Rconv3 minus 0 10Meg
.model smoothSW VSWITCH (RON={RON} ROFF={ROFF} VON=1 VOFF=0)
.ends SWhyste
******
.MODEL MBR20100CT D
+IS=0.000210108 RS=0.0123882 N=2 EG=0.817576
+XTI=0.500001 BV=1000 IBV=0.0001 CJO=1e-11
+VJ=0.7 M=0.5 FC=0.5 TT=0
+KF=0 AF=1
******
.SUBCKT shuntreg FB gnd out params: pole=7k
*
R4 1 2 2k
C3 gnd 2 {1/(2*3.14*pole*2k)}
R3 3 FB 15
X1 5 3 6 AMPSIMP params: POLE=10Meg VHIGH=10
X2 7 6 3 MOS
V1 5 gnd DC=5.7V
R5 7 gnd 165
E1 1 0 8 7 1
V3 8 gnd DC=670m
V6 9 gnd DC=645m
Rsupply FB gnd 2.3k
E2 out 0 2 gnd 1
Dclamp 7 9 DCLAMP
.MODEL DCLAMP D N=0.01
.ENDS
*******
.SUBCKT AMPSIMP 1 5 7 params: POLE=30 GAIN=30000 VHIGH=4V VLOW=100mV
* + - OUT
G1 0 4 1 5 100u
R1 4 0 {GAIN/100u}
C1 4 0 {1/(6.28*(GAIN/100u)*POLE)}
E1 2 0 4 0 1
Ro 2 7 10
Vlow 3 0 DC={VLOW}
Vhigh 8 0 DC={VHIGH}
Dlow 3 4 DCLP
Dhigh 4 8 DCLP
.MODEL DCLP D N=0.01
.ENDS
*
.SUBCKT MOS 30 40 50
* NODES: DRAIN GATE SOURCE
M1 30 20 50 50 MOD L=1u W=1u
RG 40 20 167
RL 30 50 50E6
D1 30 50 DIODE
.MODEL MOD PMOS VTO=-1.709 RS=3.091 RD=0.979 IS=1E-15 KP=0.146
+CGSO=26P CGDO=4P CBD=12P PB=1
.MODEL DIODE D IS=1.072E-13 RS=0.527 N=1.077
.ENDS MOS
*****
.SUBCKT UVLO_G 1 2 30 params: VON=12 VOFF=10
* VIN OUT Gnd
X1 1 3 1 30 SWhyste RON=1 ROFF=1E6 VT={((VON-VOFF)/2) + VOFF} VH={(VON-VOFF)/2}
RUV 3 30 100K
B1 4 0 V= V(3,30) > 5V ? 5V : 0
RD 4 2 100
CD 2 0 100P
.ENDS UVLO_G
******
.SUBCKT COMPARHYS NINV INV OUT params: VHIGH=5 VLOW=100m VHYS=50m
E2 HYS NINV Value = { IF ( V(OUT) > {(VHIGH+VLOW)/2}, {VHYS}, 0 ) }
E1 4 0 Value = { IF ( V(HYS,INV) > 0, {VHIGH}, {VLOW} ) }
RO 4 OUT 100
CO OUT 0 100PF
.ENDS
******
.SUBCKT COMPAR NINV INV OUT params: VHIGH=12 VLOW=100m
E1 4 0 Value = { IF ( V(NINV,INV) > 0, {VHIGH}, {VLOW} ) }
RO 4 OUT 10
CO OUT 0 10PF
.ENDS
******
.SUBCKT REFVAR In Out Gnd params: Vref=5 Zo=2.5 Slope=10k Imax=1.5m Ripple=1mV
Rout 5 6 {Zo}
Vdum 6 Out
Eout 5 Gnd Value = { IF ( I(Vdum) < {Imax}, ({Vref}-V(in)*{Ripple}),
+ ((({Vref}-V(in)*{Ripple}) - {Slope}*I(Vdum))+({Slope}*{Imax})) ) }
.ENDS
*******
.SUBCKT VARIRES 1 2 CTRL
R1 1 2 1E10
G1 1 2 Value = { V(1,2)/(V(CTRL)+1u) }
.ENDS
*******
.SUBCKT VARICAP 1 2 CTRL
R1 1 3 1u
VC 3 4
EC 4 2 Value = { (1/(v(ctrl)+1p))*v(int) }
GINT 0 INT Value = { I(VC) }
Rdum INT 0 1G
CINT INT 0 1
.ENDS
*******
.SUBCKT VARICOIL 1 2 CTRL
GC 1 2 Value = { V(INT)/(V(CTRL)+1p) }
GINT 0 INT Value = { V(1,2) }
Rdum INT 0 1G
CINT INT 0 1
.ENDS
*******
.subckt DTAND 1 5 6 params: delay=150n
.param Cdel={delay/(0.693*1k)}
*
X1 1 2 5 AND2
X2 3 4 6 AND2
Rdel1 1 2 1k
C1 2 0 {Cdel}
Rdel2 3 4 1k
C2 4 0 {Cdel}
X3 1 3 INV
.ENDS
*********
.SUBCKT GAIN 1 2
*Connections: In Out
E1 2 0 1 0 1
.ENDS
*********
.subckt POWERVCO err out params: Fmin=50k Fmax=400k Vout=350
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -