* ------------------------------------------------------------ *
*
* Original models from Ben-Gurion University (ISRAEL)
* http://www.ee.bgu.ac.il/~pel
* Models translated by Christophe BASSO, Toulouse (FRANCE)
* These models automatically toggle between DCM and CCM
* Please report bugs to CBASSO@WANADOO.FR
* OrCAD's PSpice compatible
* Last modified: October 10th 1999
*
* VM extension: voltage-mode models
* CM extension: current-mode models with:
* RI = current sense element
* MC = ramp compensation in V/s
*
* ------------------------------------------------------------ *
.SUBCKT FLYBACKVM DON IN OUT GND PARAMS: FS={FS} L={L}
* Set N to 1 if an external XFMR is used
GIN IN GND VALUE = { I(VLM)*V(DON)/(V(DON)+V(DOFF)) }
ELM OUT1 GND VALUE = { V(IN)*V(DON)-V(OUT)*V(DOFF) }
RM OUT1 5 1M
LM 5 8 {L}
VLM 8 GND
GOUT GND OUT VALUE = { I(VLM)*V(DOFF)/(V(DON)+V(DOFF)) }
VCLP VC 0 9M
D2 VC DOFF DBREAK
D1 DOFF 6 DBREAK
R4 DOFF 7 10
EDOFFM 6 GND VALUE = { 1-V(DON)-9M }
EDOFF 7 GND VALUE = { 2*I(VLM)*{FS}*{L}/(V(DON))/(V(IN))-V(DON) }
.MODEL DBREAK D (TT=1N CJO=10P N=0.01)
.ENDS
*******
.SUBCKT FLYBACKCM CONTROL IN OUT GND PARAMS: FS={FS} L={FS} MC={MC} RI={RI}
* Set N to 1 if an external XFMR is used
GIN IN GND VALUE = { I(VLM)*V(DON)/(V(DON)+V(DOFF)) }
ELM OUT1 GND VALUE = { V(IN)*V(DON)-V(OUT)*V(DOFF) }
RM OUT1 5 1M
LM 5 8 {L}
VLM 8 GND
GOUT GND OUT VALUE = { I(VLM)*V(DOFF)/(V(DON)+V(DOFF)) }
VCLP VC 0 9M
D2 VC DOFF DBREAK
D1 DOFF 6 DBREAK
R4 DOFF 7 10
EDOFFM 6 GND VALUE = { 1-V(DON)-9M }
EDOFF 7 GND VALUE = { 2*I(VLM)*{FS}*{L}/(V(DON))/(V(IN))-V(DON) }
EDON  DON GND TABLE { ((V(CONTROL)-I(VLM)*{RI})*{FS})/({MC}+((0.5*{RI}*V(IN))/{L})) } 
+ ( (10m,10m) (.999,.999) )
.MODEL DBREAK D (TT=1N CJO=10P N=0.01)
.ENDS
*******
.SUBCKT BUCKVM DON IN OUT GND PARAMS: FS={FS} L={L} RS={L}
GA IN GND VALUE = { I(VLM)*V(DON)/(V(DON)+V(DOFF)) }
GB B GND VALUE = { V(DOFF)*I(VLM)/(V(DON)+V(DOFF)) }
D1 GND B DBREAK
ELM OUT1 GND VALUE = { V(DON)*V(IN,C)+V(DOFF)*V(B,C) }
RM OUT1 5 {RS}
LM 5 8 {L}
VLM 8 GND
GC GND C VALUE = { I(VLM) }
Rx C OUT 1u
VCLP VC 0 9M
D2 VC DOFF DBREAK
D3 DOFF 6 DBREAK
R4 DOFF 7 10
EDOFFM 6 GND VALUE = { 1-V(DON)-9M }
EDOFF 7 GND VALUE = { 2*I(VLM)*{L}/({1/FS}*(V(IN)-V(C))*V(DON))-V(DON) }
.MODEL DBREAK D (TT=1N CJO=10P N=0.01)
.ENDS
***********
.SUBCKT BUCKCM CONTROL IN OUT GND PARAMS: FS={FS} L={L} RS={RS} MC={MC} RI={RI}
GA IN GND VALUE = { I(VLM)*V(DON)/(V(DON)+V(DOFF)) }
GB B GND VALUE = { V(DOFF)*I(VLM)/(V(DON)+V(DOFF)) }
D1 GND B DBREAK
ELM OUT1 GND VALUE = { V(DON)*V(IN,C)+V(DOFF)*V(B,C) }
RM OUT1 5 {RS}
LM 5 8 {L}
VLM 8 GND
GC GND C VALUE = { I(VLM) }
Rx C OUT 1u
VCLP VC 0 9M
D2 VC DOFF DBREAK
D3 DOFF 6 DBREAK
R4 DOFF 7 10
EDOFFM 6 GND VALUE = { 1-V(DON)-9M }
EDOFF 7 GND VALUE = { 2*I(VLM)*{L}/({1/FS}*(V(IN)-V(C))*V(DON))-V(DON) }
EDON  DON GND TABLE { ((V(CONTROL)-I(VLM)*{RI})*{FS})/({MC}+((0.5*{RI}*V(IN,C))/{L})) } 
+ ( (10m,10m) (.999,.999) )
.MODEL DBREAK D (TT=1N CJO=10P N=0.01)
.ENDS
*********
.SUBCKT FORWARDVM DON IN OUT GND PARAMS: FS={FS} Ls={Ls} RS={L} N={N}
.PARAM L={Ls/N^2}
GA IN GND VALUE = { I(VLM)*V(DON)/(V(DON)+V(DOFF)) }
GB B GND VALUE = { V(DOFF)*I(VLM)/(V(DON)+V(DOFF)) }
D1 GND B DBREAK
ELM OUT1 GND VALUE = { V(DON)*V(IN,C)+V(DOFF)*V(B,C) }
RM OUT1 5 {RS}
LM 5 8 {L}
VLM 8 GND
GC GND C VALUE = { I(VLM) }
Rx C OUT 1u
VCLP VC 0 9M
D2 VC DOFF DBREAK
D3 DOFF 6 DBREAK
R4 DOFF 7 10
EDOFFM 6 GND VALUE = { 1-V(DON)-9M }
EDOFF 7 GND VALUE = { 2*I(VLM)*{L}/({1/FS}*(V(IN)-V(C))*V(DON))-V(DON) }
.MODEL DBREAK D (TT=1N CJO=10P N=0.01)
.ENDS
***********
.SUBCKT FORWARDCM CONTROL IN OUT GND PARAMS: FS={FS} Ls={Ls} RS={RS} MC={MC} RI={RI} N={N}
.PARAM L={Ls/N^2}
GA IN GND VALUE = { I(VLM)*V(DON)/(V(DON)+V(DOFF)) }
GB B GND VALUE = { V(DOFF)*I(VLM)/(V(DON)+V(DOFF)) }
D1 GND B DBREAK
ELM OUT1 GND VALUE = { V(DON)*V(IN,C)+V(DOFF)*V(B,C) }
RM OUT1 5 {RS}
LM 5 8 {L}
VLM 8 GND
GC GND C VALUE = { I(VLM) }
Rx C OUT 1u
VCLP VC 0 9M
D2 VC DOFF DBREAK
D3 DOFF 6 DBREAK
R4 DOFF 7 10
EDOFFM 6 GND VALUE = { 1-V(DON)-9M }
EDOFF 7 GND VALUE = { 2*I(VLM)*{L}/({1/FS}*(V(IN)-V(C))*V(DON))-V(DON) }
EDON  DON GND TABLE { ((V(CONTROL)-I(VLM)*{RI})*{FS})/({MC}+((0.5*{RI}*V(IN,C))/{L})) } 
+ ( (10m,10m) (.999,.999) )
.MODEL DBREAK D (TT=1N CJO=10P N=0.01)
.ENDS
***********
.SUBCKT BOOSTVM DON IN OUT GND PARAMS: FS={FS} L={L} RS={RS}
GC IN GND VALUE = { I(VLM) }
ELM OUT1 GND VALUE = { -(V(DON)*V(GND,IN)+V(DOFF)*V(B,IN)) }
RM OUT1 5 {RS}
LM 5 8 {L}
VLM 8 GND
GB GND B VALUE = { V(DOFF)*I(VLM)/(V(DON)+V(DOFF)) }
D5 B OUT DBREAK
VCLP VC 0 9M
D2 VC DOFF DBREAK
D3 DOFF 6 DBREAK
R4 DOFF 7 10
EDOFFM 6 GND VALUE = { 1-V(DON)-9M }
EDOFF 7 GND VALUE = { 2*I(VLM)*{L}/({1/FS}*V(IN)*(V(DON)))-V(DON) }
.MODEL DBREAK D (TT=1N CJO=10P N=0.01)
.ENDS
************
.SUBCKT BOOSTCM CONTROL IN OUT GND PARAMS: RI={RI} FS={FS} MC={MC} L={L} RS={RS}
GC IN GND VALUE = { I(VLM) }
ELM OUT1 GND VALUE = { -(V(DON)*V(GND,IN)+V(DOFF)*V(B,IN)) }
RM OUT1 5 {RS}
LM 5 8 {L}
VLM 8 GND
GB GND B VALUE = { V(DOFF)*I(VLM)/(V(DON)+V(DOFF)) }
D5 B OUT DBREAK
VCLP VC 0 9M
D2 VC DOFF DBREAK
D3 DOFF 6 DBREAK
R4 DOFF 7 10
EDOFFM 6 GND VALUE = { 1-V(DON)-9M }
EDOFF 7 GND VALUE = { 2*I(VLM)*{L}/({1/FS}*V(IN)*(V(DON)))-V(DON) }
EDON  DON GND TABLE { ((V(CONTROL)-I(VLM)*{RI})*{FS})/({MC}+((0.5*{RI}*V(IN))/{L})) } 
+ ( (10m,10m) (.999,.999) )
.MODEL DBREAK D (TT=1N CJO=10P N=0.01)
.ENDS
******
.SUBCKT SEPICVM DON IN GND CP CS PARAMS: RON={RON} LP={LP} LS={LS}
GCS GND CS VALUE = { -I(LP)*V(DON)+I(LS)*(1-V(DON)) }
RCS CS GND 1MEG
GVDON  GND DION VALUE = { I(Ls)+I(Lp) }
ELS 1 GND VALUE = { (I(LS)+I(LP))*RON*V(DON)+(V(CS)+V(dion)+v(cp))*(1-v(Don)) }
ELP 7 GND VALUE = { (v(cs)-(I(LS)+I(LP))*RON)*v(Don)-(v(dion)+v(cp))*(1-v(Don)) }
GCP GND CP VALUE = { (I(LS)+I(LP))*(1-v(Don)) }
D1  DION GND DBREAK
LS IN 100 {LS}
RLS 100 1 1m
LP 7 3 {LP}
RLP 3 GND 1m
RDON DON GND 1MEG
.MODEL DBREAK D (TT=1N CJO=10P N=0.01)
.ENDS
******
.SUBCKT SEPICCM CONTROL IN GND CP CS PARAMS: RON={RON} LP={LP} LS={LS} MC={MC} RI={RI} FS={FS}
GCS GND CS VALUE = { -I(LP)*V(DON)+I(LS)*(1-V(DON)) }
RCS CS GND 1MEG
GVDON  GND DION VALUE = { I(Ls)+I(Lp) }
ELS 1 GND VALUE = { (I(LS)+I(LP))*RON*V(DON)+(V(CS)+V(dion)+v(cp))*(1-v(Don)) }
ELP 7 GND VALUE = { (v(cs)-(I(LS)+I(LP))*RON)*v(Don)-(v(dion)+v(cp))*(1-v(Don)) }
GCP GND CP VALUE = { (I(LS)+I(LP))*(1-v(Don)) }
D1  DION GND DBREAK
LS IN 100 {LS}
RLS 100 1 1m
LP 7 3 {LP}
RLP 3 GND 1m
EDON  DON GND TABLE { ((V(CONTROL)-(I(LS)+I(LP))*{RI})*{FS})/({MC}+0.5*{RI}*
+((V(IN)/{LS})+(V(CS)/{LP})))} ( (10m,10m) (.999,.999) )
.MODEL DBREAK D (TT=1N CJO=10P N=0.01)
.ENDS
******
.SUBCKT SIM_VM a b c DON PARAMS: FS=100k L=50u RS=100m
GA a 0 VALUE = { I(VIL)*V(DON)/(V(DON)+V(DOFF)) }
GB 0 b VALUE = { (VIL)*V(DOFF)/(V(DON)+V(DOFF)) }
GC 0 c VALUE = { I(VIL) }
EL el 0 VALUE = { V(a,c)*V(DON)+V(b,c)*V(DOFF) }
L1 el erl {L}
RL erl vil {RS}
vil vil 0 0
EDOFF doffc 0 VALUE = { (2*I(VIL)*{L}*{FS}/(V(a,c)*V(DON)))-V(DON) }
Rdoffc doffc 0 10E10
Rlmt doffc doff 1
Dlmtz 0 doff Dclamp
Dlmtc doff doffm Dclamp
Eclamp doffm 0 VALUE = { 1-V(DON) }
Rdoff doff 0 10E10
.Model Dclamp D (N=0.01 Rs=10m TT=10n)
.ENDS
*******
* Series-parallel model
.SUBCKT SERPA FREQ IN GND OUT PARAMS: LR={LR} CS={CS} CP={CP}
.PARAM PI=3.14159
RDUM IN GND 100Meg
EW W GND VALUE = { 2*pi*V(FREQ) }
Ein FUND GND VALUE = { 4/pi*V(IN) }
ERac RAC GND VALUE = { 1u + (pi*pi/8)*abs(v(out)/(-i(ecp)+1u)) }
Ecp OUT GND VALUE = { v(fund)*(2/pi)*v(w)*cs*v(rac)/sqrt(v(den1)*v(den1)+v(den2)*v(den2)) }
Eden1 den1 GND VALUE = { 1-v(w)*v(w)*Lr*Cs }
Eden2 den2 GND VALUE = { v(w)*v(rac)*(Cs+Cp-V(w)*V(w)*Cs*Cp*Lr) }
.ENDS
*******
