Program SOLVE;
const
U1 : Real=(6.0); { В }
U0 : Real=(0.8); { В }
Upu : Real=(0.5); { В }
P : Real=(0.4); { мВт }
n : Real=(0.3); { коэффициент влияния подложки }
dok : Real=(50); { нм }
eok : Real=(4);
e0 : Real=(8.85e-12); { Ф/м }
un : Real=(500); { см2/Вс }
xj : Real=(0.7); { мкм }
cn : Real=(1); { пФ }
lamda : Real=(2); { мкм }
var
I0, Uin : real;
Wn, Ln, Wk, Lk : real;
Kn, Kk, Kyd : real;
A, B, C, K : real;
Up, Unop0, U3 : real;
Uv1, Uv2, Uv : real;
procedure WL(a:real;var W,L:Real); { процедура нахождения W и L }
begin
if a<1 then
begin
W:=2*lamda;L:=round(W/a);
end
else
begin
L:=2*lamda;W:=round(L*a);
end;
end;
begin
Up:=U1;writeln('Напряжение источника питания Uип=',Up:3:3,' В');
Uin:=U1;writeln('Входное напряжение ключа Uвх=',Uin:3:3,' В');
Unop0:=U0+Upu;
writeln('Пороговое напряжение транзисторов Uпор0=',Unop0:3:3,' В');
I0:=2*P*1e-3/Up;
writeln('Максимальный ток лог. "0" Io=',I0*1e6:3:6,' мкА');
U3:=Up*(1+n)+Unop0;write('Напряжение на затворе Uз > ',U3:3:3,' В');
U3:=round(U3)+1;writeln(', принимаем Uз=',U3:3:3,' В');
K:=U0*(2*(Uin-Unop0)-U0*(1+n))/((Up-U0)*(2*(U3-Unop0)-(Up+U0)*(1+n)));
writeln('Отношение крутизн Kн/Kк=',K:3:6);
A:=(1+n)*(2+K);
B:=2*(2*(Uin-Unop0)+K*(U3-Unop0));
C:=Up*K*(2*(U3-Unop0)-Up*(1+n));
writeln('Коэффициенты в квадратном уравнении для расчета U'':');
writeln('A=',A:3:6,'; B=',B:3:6,'; C=',C:3:6,';');
Uv1:=(B-sqrt(sqr(B)-4*A*C))/(2*A);
Uv2:=(B+sqrt(sqr(B)-4*A*C))/(2*A);
if Uv1<U0 then Uv:=Uv1 else Uv:=Uv2;
write('Решения квадратного уравнения [В]: U''(1,2)=(');
writeln(Uv1:3:3,',',Uv2:3:3,') < ',U0:3:3,' =>> U''=',Uv:3:3);
Kn:=2*I0/((Up-Uv)*(2*(U3-Unop0)-(Up+Uv)*(1+n)));
Kk:=I0/(Uv*(2*(Uin-Unop0)-Uv*(1+n)));
Kyd:=un*1e-4*eok*e0/(dok*1e-9);
write('Рассчитанные крутизны [мкB/A2]: Kуд=',Kyd*1e6:3:3);
writeln('; Kн=',Kn*1e6:3:6,'; Kк=',Kk*1e6:3:6,';');
WL(Kn/Kyd,Wn,Ln);
WL(Kk/Kyd,Wk,Lk);
write('Округленные значения размеров канала [мкм]: Wн=',Wn:3:1);
writeln(', Lн=',Ln:3:1,'; Wк=',Wk:3:1,', Lк=',Lk:3:1,';');
write('*** Пересчет параметров с учетом округленных ');
writeln('значений ширины и длины канала ***');
Kn:=Kyd*Wn/Ln;
Kk:=Kyd*Wk/Lk;
write('Значения крутизн [мкB/A2]: ');
writeln('Kн=',Kn*1e6:3:6,'; Kк=',Kk*1e6:3:6,';');
K:=Kn/Kk;
writeln('Отношение крутизн Kн/Kк=',K:3:6);
A:=(1+n)*(1+K);
B:=2*(Uin-Unop0+K*(U3-Unop0));
C:=Up*K*(2*(U3-Unop0)-Up*(1+n));
writeln('Коэффициенты в квадратном уравнении для расчета Uo:');
writeln('A=',A:3:6,'; B=',B:3:6,'; C=',C:3:6,';');
Uv1:=(B-sqrt(sqr(B)-4*A*C))/(2*A);
Uv2:=(B+sqrt(sqr(B)-4*A*C))/(2*A);
if Uv1<Uv2 then Uv:=Uv1 else Uv:=Uv2;
writeln('Рассчитанное значение уровня лог. "0" Uo=',Uv:3:3,' В');
A:=(1+n)*(2+K);
B:=2*(2*(Uin-Unop0)+K*(U3-Unop0));
C:=Up*K*(2*(U3-Unop0)-Up*(1+n));
writeln('Коэффициенты в квадратном уравнении для расчета U'':');
writeln('A=',A:3:6,'; B=',B:3:6,'; C=',C:3:6,';');
Uv1:=(B-sqrt(sqr(B)-4*A*C))/(2*A);
Uv2:=(B+sqrt(sqr(B)-4*A*C))/(2*A);
if Uv1<Uv2 then Uv:=Uv1 else Uv:=Uv2;
writeln('Перерассчитанное значение U''=',Uv:3:3,' В');
I0:=Kk*(Uv*(2*(Uin-Unop0)-Uv*(1+n)));
writeln('Заново рассчитанный MAX ток лог. "0" Io=',I0*1e6:3:6,' мкА');
P:=Up*I0/2;
write('Максимальная мощность потребления ЛЭ P=');
writeln(P*1e3:3:6,' мВт');
end.
|
|