Исследование эффекта автодинного детектирования в многоконтурном генераторе на диоде ГаннаРефераты >> Технология >> Исследование эффекта автодинного детектирования в многоконтурном генераторе на диоде Ганна
program gist_f3;
uses crt,graph,AN;
label 1,2;
const
n=15;
q1=1.6e-19;
n123=1e21; c2=0.03e-12;
s123=1e-8; c3=0.3e-12;
mm1=0.6; c4=0.8e-12;
Lg=1e-5; c5=10e-12; { отсечение НЧ цепи }
Eb=4e5; c6=1e-6;
T10=300.0; c7=15e-12;
r1=0.01; l2=0.2e-9;
r3=1; l3=0.6e-9;
r4=0.0005; l4=0.01e-9; { крутим }
r5=100; l5=100e-9;
Eds=3.8; l6=35e-9;
l7=0.12e-9;
ll0=0.03; {sm}
llk=0.046; maxpoint=1000000000;
z0=39.43e3;
Type FL=EXTENDED;
Type ry=array[1 1100]of FL;
Type tt=array[1 N]of FL;
var sign,g1,sign1,sign2,sign3:ry;
oldy1,oldy:array[1 10] of integer;
K1,y,f,w:tt;
delta_i,frequency,old_f,old_cur,di,oldc1,oldc2,c1,l1, sign0,d_visir,bn,iv1,iv11,iv12,x,h,vp1,smax,f0,s0,Vs,Vs1, y1,s1,ppp:FL;
mark,count,fcount,point,deltax,fsign,gd,oldx,oldx1,dh,dj,
visir_1,visir_2,visir_3,visir_4,k,aaa,i,ii,iii,phas_x, phas_y:integer;
round,fpoint,iii1,loop:longint;
visir_f,visir_f1,visir_s,power,size_x,size_y:real;
c:char;
P: Pointer;
Size: Word;
s:string;
Procedure current;
var U:real; { BAX }
begin
Vs:=eds/(Eb*Lg);
Vs1:=Vs*Vs*Vs;
Vs:=(1+0.265*Vs1/(1-T10*5.3E-4))/(1+Vs1*Vs);
Vs:=1.3E7*Eds*Vs/T10;
if y[3]<3.3 then u:=y[3];
if y[3]>3.6 then u:=y[3]+2
else begin
if f[3]>0 then u:=y[3]
else u:=y[3]+2;
end;
iv12:=sqr(sqr(u/eb/Lg));
iv11:=mm1*u/Lg+vs*iv12;
iv1:=q1*n123*s123*iv11/(1+iv12);
end;
procedure kzp; { КЗП }
var ll2:FL;
begin
l1:=0.2e-9;
c1:=0.1e-12;
llv:=ll0/sqrt(1-sqr(ll0/llk));
z:=z0*Sin(6.28*lll/llv)/Cos(6.28*lll/llv);
if z<0 then begin
ll2:=abs(z)/6.28e10;
l1:=l1*ll2/(l1+ll2);
end
else c1:=c1+1/(z*6.28e10);
}
end;
Procedure anna(y:tt; var f1:tt);
begin
current;
f[1]:=(y[6]-y[7]-y[12])/c5; { Uag }
f[2]:=(y[7]-y[8]-y[9])/c4; { Ubg }
f[3]:=(y[8]-iv1)/c3; { Ucc'}
f[4]:=(y[9]-y[4]*r1-y[10])/c1; { Udg }
f[5]:=0; { Ueg }
f[6]:=(eds-y[1]-y[6]*r4)/l1; { i1 }
f[7]:=(y[1]-y[2])/l4; { i2 }
f[8]:=(y[2]-y[3]-y[8]*r3)/l3; { i7 }
f[9]:=(y[2]-y[11]-y[4])/l2; { i6 }
f[10]:=y[4]/l1; { iL1 }
f[11]:=y[9]/c2; { Uc2 }
f[12]:=(y[1]-y[13]-y[14])/L7; { i3' }
f[13]:=y[12]/c6; { Uc6 }
f[14]:=(y[12]-y[15]-y[14]/r5)/c7; { Ukg }
f[15]:=y[14]/L6; { iL6 }
end;
procedure an2; { spector }
begin
XMIN:=0;XMAX:=40;YMIN:=0;YMAX:=100;
YGMIN:=25;YGMAX:=200;XGMIN:=350;XGMAX:=630;
nx:=4;ny:=5;
setcolor(7);
OutTextxy(XGMIN,YGMIN-10,'Спектр тока на диоде');
OutTextxy(XGMAX-50,YGMAX+20,'f,GHz.');
setcolor(15);
moveto(xgmin,ygmax);
end;
procedure an3; { u,i }
begin
XMIN:=0;XMAX:=4;YMIN:=-4;YMAX:=10;
YGMIN:=240;YGMAX:=420;XGMIN:=50;XGMAX:=630;
nx:=8;ny:=7;
setcolor(7);
OutTextxy(XGMIN,YGMIN-10,'i7-green, Uag-magenta');
OutTextxy(XGMAX-50,YGMAX+20,'t, ns.');
setcolor(15);
end;
procedure an4; { phasa i7 }
begin
XMIN:=-4;XMAX:=8;YMIN:=-15;YMAX:=5;
YGMIN:=25;YGMAX:=200;XGMIN:=50;XGMAX:=320;
nx:=1;ny:=1;
setcolor(7);
OutTextxy(XGMIN,YGMIN-10,'di7/dt Фаз.портрет тока на диоде');
OutTextxy(XGMAX-50,YGMAX+20,'i7');
setcolor(15);
end;
procedure Result; { вычисление и вывод отношения частот }
begin
if (visir_f>=visir_f1) then
begin
if (visir_f1<>0) then
begin
setcolor(0);
outtextxy(540,75,' _');
setcolor(13);
line(540,70,620,70);
str((visir_f/visir_f1):5:3,s);
outtextxy(540,75,s);
end;
end
else begin
if (visir_f<>0) then
begin
setcolor(0);
outtextxy(540,75,' _');
setcolor(13);
str((visir_f1/visir_f):5:3,s);
outtextxy(540,75,s);
end;
end;
end;
procedure v12; { вывод информации физиров 1 и 2 }
begin
d_visir:=1e-9*abs(visir_2-visir_1)*(xmax-xmin)/(xgmax- xgmin);
setcolor(0);
outtextxy(540,255,' _');
outtextxy(540,35,' _');
setcolor(15);
if(d_visir<>0) then begin
an2;
line(trunc(visir_s),ygmin,trunc(visir_s),ygmax);
visir_s:=xgmax-trunc((xmax-1/(d_visir*1e9))*(xgmax- xgmin)/(xmax-xmin));
line(trunc(visir_s),ygmin,trunc(visir_s),ygmax);
str((1e-9/d_visir):5:3,s);
outtextxy(540,35,s+' GHz');
end;
str(d_visir*1e9:5:4,s);
outtextxy(540,255,s+' ns');
end;
BEGIN
oldc1:=0;
oldc2:=0;
gd:=0;
InitGraph(gd,gm,'E:\tp-7\bgi');
an2; scal;
an4; scal;
an3; scal;
setcolor(11);
current;
kzp;
{ Начальные условия }
dh:=4;
dj:=2;
x:=0;
h:=8e-13;
y[1]:=eds;
w[1]:=eds;
y[3]:=eds; y[6]:=iv1;
w[3]:=eds; w[6]:=iv1;
y[2]:=eds; y[7]:=iv1;
w[2]:=eds; w[7]:=iv1;
y[5]:=eds; y[8]:=iv1;
w[5]:=eds; w[8]:=iv1;
y[4]:=eds; y[6]:=iv1;
w[4]:=eds; w[6]:=iv1;
y[11]:=eds; y[10]:=0;
y[9]:=iv1; w[9]:=iv1;
w[11]:=eds; w[10]:=0;
y[12]:=0; w[12]:=y[12];
y[13]:=eds; w[13]:=y[13];
y[14]:=0; w[14]:=y[14];
y[15]:=0; w[15]:=y[15];
loop:=1; { номеp pазвеpтки тока }
phas_x:=0; phas_y:=0; { сдвиг фазового поpтpета }
size_x:=1;size_y:=1; { масштаб фазового портрета }
an2;
visir_s:=800;
visir_3:=xgmin;
visir_f:=0;
visir_4:=xgmin;
visir_f1:=0;
an3;
visir_1:=xgmin;
visir_2:=xgmin; { визиры }
count:=1;
mark:=0;
round:=0;
old_cur:=iv1;
fcount:=0;
fsign:=1;
fpoint:=1;
frequency:=1e10;
old_f:=1e10;
Smax:=0;
power:=0;
oldx:=xgmax-trunc((xmax-0)*(xgmax-xgmin)/(xmax-xmin));
for aaa:=1 to 10 do
oldy[aaa]:=ygmin-trunc((ymax-y[8]*10)*(ygmin- ygmax)/(ymax-ymin));
{ Рунге-Кутт }
for iii1:=-249 to maxpoint do begin
for iii:=0 to 4 do begin
anna(y,f);
for k:=1 to n do begin
K1[k]:=f[k]*h;
y[k]:=w[k]+h*f[k]/2;
end;
x:=x+h/2;
anna(y,f);
for k:=1 to n do begin
K1[k]:=K1[k]+2*f[k]*h;
y[k]:=w[k]+f[k]*h/2;
end;
anna(y,f);
for k:=1 to n do begin
K1[k]:=K1[k]+2*f[k]*h;
y[k]:=w[k]+f[k]*h;
end;
x:=x+h/2;
anna(y,f);
for k:=1 to n do begin
y[k]:=w[k]+(K1[k]+f[k]*h)/6;
w[k]:=y[k];
end;
end;
{ вычисление мощности }
power:=power+y[8]*y[2];
{ вычисление частоты по изменению знака производной }
if fsign > 0 then begin
if y[8]-old_cur <= 0 then begin
if fcount = 0 then fpoint:=iii1;
fcount:=fcount+1;
fsign:=-1;
end;
end
else begin
if y[8]-old_cur >= 0 then begin
if fcount = 0 then fpoint:=iii1;
fcount:=fcount+1;
fsign:=1;
end;
end;
old_cur:=y[8];
if fcount = 15 then begin { Частота сигнала }
fcount:=1;
mark:=1;
old_f:=frequency;
frequency:=(iii1-fpoint)/(h*4.2e3 * 5);