*PWM Switch Model (CCM & DCM - Voltage Mode) PSPICE-coded extracted from Christophe P. Basso book (ISBN: 978-0-07-150859-9) *simulator lang=spice * .SUBCKT PWMVM a d p c params: L=75u Fs=100k * * Auto toggling between DCM and CCM, voltage-mode * Xd d dc limit params: clampH=0.99 clampL=16m EVcp 6 p value = {(V(dc)/(V(dc)+V(d2)))*V(a,p)} GIap a p value = {(V(dc)/(V(dc)+V(d2)))*I(VM)} Ed2 d2X 0 value = {(2*{L}*{Fs}*I(VM)/(V(dc)*V(a,c)+1u))-V(dc)} Xd2 d2X dc d2 limit2 VM 6 c *Rtest1 6 61 0.1m .ENDS * ****** Subckts ****** * .SUBCKT limit d dc params: clampH=0.99 clampL=16m * Gd 0 dcx value = {V(d)*100u} Rdc dcx 0 10k V1 clpn 0 {clampL} V2 clpp 0 {clampH} D1 clpn dcx dclamp D2 dcx clpp dclamp Edc dc 0 value = {V(dcx)} .model dclamp d n=0.01 rs=100m .ENDS * ******** * .SUBCKT limit2 d2nc d d2c * Gd 0 d2cx d2nc 0 100u Rdc d2cx 0 10k V1 clpn 0 7m E2 clpp 0 value = {1-V(d)-6.687m} D1 clpn d2cx dclamp D2 d2cx clpp dclamp Edc d2c 0 value = {V(d2cx)} .model dclamp d n=0.01 rs=100m .ENDS * simulator lang=spectre