本帖最后由 xukun977 于 2020-2-27 13:44 编辑
做DC-DC设计,或者是研究DC-DC的动态特性,所需要的matlab程序:
在2108版本的matlab中验证过了,可以直接用。
使用者根据需要,修改电压值、元件值和寄生参数。
同时根据需要,用%号屏蔽某些传递函数,把想看的传递函数前面%号删除掉。
V1=3.3, Vo=1.2, L=4.7e-6, C=20e-6, T=5e-7, Ro=5,
rc=0.07, RL=0.1, r1=0.19, r2=0.16, Td=10e-9, %寄生参数
%rc=0.05, RL=0.04, r1=0, r2=0, Td=0, %寄生参数
Cc1=2.2e-9, Cc2=5e-10, Rc1=11e3, Rmo=10e3,gm=1000e-6, %斜率补偿参数
Rs=0.42, %电流采样电阻
IL=Vo/Ro,
D=(Vo+1.4*Td/T)/V1,
A=2.*r2.*IL-1.4,
Rsw=r1.*D+r2.*(1-D-2*Td/T)+RL,
M1=(V1-(r1+RL)*IL-Vo)*Rs/L,
M2=(Vo-(r2+RL)*IL)*Rs/L,
M3=8e4,
E=V1-IL*(r1-r2),
Fm=1/(M3*T+M1*T),
Kf=-D*T*Rs*(1-0.5*D)/L,
Kr=T*Rs/(2*L),
% Fm=1/(M3*T+0.7*Td/L),
% Kf=-D*D*T/(2*L),
% Kr=(T*(D*D*(2*RL+r1+r2)-(1-2*D)*(Ro-r2-RL)))/(2*L*Ro),
Kt=-0.7*(1-D)*T/L,
a3=[T*T/(pi*pi) -T/2 1],b3=[0 0 1],
He=tf(a3,b3),
Fi=Rs*He,
Wo=1/sqrt(L*C*(1+rc/Ro)),
Qp=1/(Wo*(L/Ro+rc*C)+Rsw/(Wo*L)),
Wn=pi/T,
Qn=-2/pi,
% a=Fm*E*Rs*(Ro+rc)*C*T*T/(Ro*pi*pi),
% b=1/(Wo*Wo)+a*Wn/Qn+a/((Ro+rc)*C),
% c=1/(Wo*Qp)+a*Wn*Wn+a*Wn/((Ro+rc)*C*Qn)-Kr*Fm*E*rc*C,
% d=1+Rsw/Ro+Fm*E*Rs/Ro-Kr*Fm*E,
% xx=1/((b/d-a/c)*d/c),
% Wx=sqrt((c*Fm*E*gm*Rmo)/(a*d)), %pi/T*sqrt(gm*Rmo*Ro/(d*Rs)*(1/(Wo*Qp)+Fm*E*Rs/Ro))
% nn=c*c/(d*d)-4*b/d,
% Rss=2*Wn/(Wo*Wo*pi*E*Fm*(Ro+rc)*C),
% wp1=2/(c/d+sqrt(c*c/(d*d)-4*b/d)),
% wp1_1=d/c,
% wp1_2=1/(Ro*C)+T*(M3*(1-D)/M1-0.5)/(L*C),
% wp1_3=1/(Ro*C)+T*(1-D)*(M3*(1-D)*(Rs+Ro)/(Ro*M1)-(1-D)/2)/(L*C),
% wp2=2*d/(c-sqrt(c*c-4*b*d)),
% fa=((c+sqrt(c*c-4*b*d))^(1/2))/(wp2*2*sqrt(2*a*Fm*E*gm*Rmo/d)),
X=[1/(Wo*Wo) 1/(Wo*Qp) 1+Rsw/Ro],
a4=[0 1], b4=[0 1],
Tc=tf(a4,b4),
%b41=[Rc1*Cc1*Rmo*Cc2 Cc1*(Rmo+Rc1)+Rmo*Cc2 1],
%Tc1=gm*Rmo*tf(a4,b41),
a1=[C*rc 1],
a2=[C*(Ro+rc) 1],
Gtv=A*tf(a1,X),
Gti=(A/Ro)*tf(a2,X),
Mvv=D*tf(a1,X),
Mvi=(D/Ro)*tf(a2,X),
Tpv=E*tf(a1,X),
Tpi=(E/Ro)*tf(a2,X),
Hv=(Mvv+Kf*Tpv*Fm)/(1+Tpi*Fi*Fm-Kr*Tpv*Fm+Tc*Fm*Tpv),
%Hr1=9*Tc*Fm*Tpv/(Tpi*Fi*Fm+9*Tc*Fm*Tpv-Kr*Fm*Tpv+1),
%Hr2=15*Tc*Fm*Tpv/(Tpi*Fi*Fm+15*Tc*Fm*Tpv-Kr*Fm*Tpv+1),
Hr=Tc*Fm*Tpv/(Tpi*Fi*Fm+Tc*Fm*Tpv-Kr*Fm*Tpv+1),
Hn=(Gtv+Kt*Tpv*Fm)/(1+Tpi*Fi*Fm-Kr*Tpv*Fm+Tc*Fm*Tpv),
Ac=(Fm*Tpv)/(1+Fi*Fm*Tpi-Kr*Fm*Tpv), %电流闭环 电压开环的环路增益
Ti=Fi*Fm*Tpi, %电流环路增益
Lp1=Ac*Tc*18,
Lp2=Ac*Tc*32,
Lp3=Ac*Tc*56,
% Tt=(9*a*b*c-2*b*b*b)/(27*a*a*Fm*E),
% mc=1+M3/M1,
% M=mc*(1-D)-0.5,
% %Tt1=10*L*C*M*(9-2*pi*pi*M*M)/(T*T*27*Fm*E*(M+0.5)),
% Tt2=10*C*M*Rs*(9-20*M*M)/(T*27),
Z=zero(Ac),
P=pole(Ac),
% Z=zero(Hr),
% P=pole(Hr),
%
% figure
% [y1,t]=step(Ac),
% plot(y1)
% [y1,t1]=step(Hr1),
% y11=y1*0.03+1.2,
% plot(t1,y11,'r'),
% hold on
% [y2,t2]=step(Hr2),
% y22=y2*0.03+1.2,
% plot(t2,y22,'b'),
% hold on
% [y3,t3]=step(Hr3),
% y33=y3*0.03+1.2,
% plot(t3,y33,'y'),
% hold on
% y4=t-t+1.23,
% plot(t,y4),
% Heaviside(t),
% figure
% aaa=[0 0 1],bbb=[1 0 0],
% ccc=1e4*tf(aaa,bbb),
% G11=Hr*ccc,
% impulse(G11), %斜坡响应
% [y2,t]=step(Hr),
% plot(y2,'b')
% title('Hr的阶跃响应,红色虚线为考虑MOS管道通损耗和死区时间,蓝色实线不考虑')
figure
margin(Ac),
title('Ac'),
% figure
% margin(Lp1),
% %title('Lp( Vo=1.2v )'),
% hold on,
%
% margin(Lp2),
% %title('Lp( EA=30 dB )'),
% hold on,
%
% margin(Lp3),
% title('Lp( Vo=1.2v )'),
% [y2,t2]=step(Hr2),
% plot(t2,y2,'r'),
% hold on
% [y3,t3]=step(Hr3),
% plot(t3,y3,'b'),
% hold on
|