home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HAM Radio 1
/
HamRadio.cdr
/
tech
/
eepub12
/
microkop.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1986-06-03
|
12KB
|
350 lines
PROGRAM MICROKOP;
(* VERSION 27.05.86 *)
(* FRITZ ENDRESS, ULLI BOCHTLER, INSTITUT FUER HOCHFREQUENZ-
TECHNIK UNIVERSITAET STUTTGART, FRG *)
(* COMPUTATION OF SYMMETRIC COUPLED MICROSTRIP-LINES
ANALYSIS: EVEN- AND ODD-MODE-IMPEDANCE-COMPUTATION
FROM PHYSICAL PARAMETERS
SYNTHESIS: COMPUTAION OF GEOMETRICAL PARAMETERS DIELECTRICAL
PERMITTIVITY AND COUPLING COEFFICIENT FROM EVEN- AND ODD-MODE-
IMPEDANCE OR COUPLING COEFFICIENT AND CHARACTERISTIC IMPEDANCE. *)
CONST
VLIGHT = 2.997928E+8;
E0 = 8.8542E-12;
PI=3.1415927;
ZF=376.991;
VAR
ER,W,S,ZEVEN,ZSEVEN,ZSODD,EREFFE,EREFFO,
ZODD,K,Z0 : REAL;
I : INTEGER;
NEU : CHAR;
ENDE : BOOLEAN;
FUNCTION POW(X,Y : REAL) : REAL;
(* YTH POWER OF X *)
BEGIN
POW:=EXP(Y*LN(X));
END;
PROCEDURE EVENODD(ER,W,S :REAL; VAR ZEVEN,ZODD,EREFFE,EREFFO
: REAL);
(* COUPLED SYMMETRIC MICROSTRIP LINES, FORMULAS:
HAMMERSTAD/JENSEN FROM
R.K. HOFFMANN: INTEGRIERTE MIKROWELLENSCHALTUNGEN,
SPRINGER-VERLAG 1983, PP 242 FF.
PARAMETERS:
ER : RELATIVE PERMITTIVITY OF SUBSTRATE
W : LINE-WIDTH/THICKNESS OF DIELECTRIC SUPPORT
S : GAP-WIDTH/THICKNESS OF DIELECTRIC SUPPORT
ZEVEN : EVEN-MODE-IMPEDANCE
ZODD : ODD-MODE-IMPEDANCE
EREFFE : EFFECTIVE RELATIVE PERMITTIVITY EVEN-MODE
EREFFO : EFFEKTIVE RELATIVE PERMITTIVITY ODD-MODE
*)
VAR
F1,ZL0,PHI,PSI,ALPHA,M,BETA,H,N,AEVEN,AODD,ZLEV0,ZLOD0,
A,B,FEVEN,MUE,FODD,F0,F01,P,Q,R :REAL;
BEGIN
F1:=6+(2*PI-6)*EXP(-POW(30.666/W,0.7528)); (*3.30*)
ZL0:=ZF/2/PI*LN(F1/W+SQRT(1+4/W/W)); (*3.29*)
PHI:=0.8645*POW(W,0.172); (*9.49*)
PSI:=1+S/1.45+POW(S,2.09)/3.95; (*9.50*)
ALPHA:=0.5*EXP(-S); (*9.51*)
M:=0.2175+POW(4.113+POW(20.36/S,6.0),-0.251)
+1/323*LN(POW(S,10.0)/(1+POW(S/13.8,10.0))); (*9.52*)
H:=1.729+1.175*LN(1+0.627/(S+0.327*POW(S,2.17))); (*9.54*)
BETA:=0.2306+1/301.8*LN(POW(S,10.0)/(1+POW(S/3.73,
10.0)))+1.0/5.3*LN(1+0.646*POW(S,1.175)); (*9.55*)
N:=-6.424-0.76*LN(S)-POW(S/0.23,5.0);
IF N<-70.0 THEN N:=-70.0;
N:=(1/17.7+EXP(N))
*LN((10.0+68.3*S*S)/(1+32.5*POW(S,3.093))); (*9.56*)
AEVEN:=PHI/PSI/(ALPHA*POW(W,M)+(1-ALPHA)*
POW(W,-M)); (*9.48*)
AODD:=AEVEN-H/PSI*EXP(BETA*POW(W,-N)*LN(W)); (*9.53*)
ZLEV0:=ZL0/(1-ZL0*AEVEN/ZF); (*9.46*)
ZLOD0:=ZL0/(1-ZL0*AODD/ZF); (*9.47*)
A:=1+1/49.0*LN((POW(W,4.0)+POW(W/52,2.0))/
(POW(W,4.0)+0.432))+1/18.7*LN(1+POW(W/18.1,
3.0)); (*3.33*)
B:=0.564*POW((ER-0.9)/(ER+3.0),0.053); (*3.34*)
MUE:=S*EXP(-S)+W*(20.0+S*S)/(10.0+S*S); (*9.59*)
FEVEN:=POW(1+10.0/MUE,-A*B); (*9.58*)
EREFFE:=(ER+1)/2.0+(ER-1)/2.0*FEVEN; (*9.57*)
R:=1+0.15*(1-EXP(1-(ER-1)*(ER-1)/8.2)/
(1+POW(S,-6.0))); (*9.66*)
F01:=1-EXP(-0.179*POW(S,0.15)-0.328*POW(S,R)/
LN(EXP(1.0)+POW(S/7.0,2.8))); (*9.65*)
Q:=EXP(-1.366-S); (*9.64*)
P:=POW(S,0.68);
P:=(EXP(P)+EXP(-P))/2; (*COSH*)
P:=EXP(-0.745*POW(S,0.295))/P; (*9.63*)
F0:=F01*EXP(P*LN(W)+Q*SIN(PI*LN(W)/LN(10.0))); (*9.62*)
FODD:=F0*POW(1+10/W,-A*B); (*9.61*)
EREFFO:=(ER+1)/2.0+(ER-1)/2.0*FODD; (*9.60*)
ZEVEN:=ZLEV0/SQRT(EREFFE);
ZODD:=ZLOD0/SQRT(EREFFO);
END; (*PROCEDURE EVENODD*)
PROCEDURE ITERATION(ER,ZSEVEN,ZSODD,ZEVEN,ZODD : REAL;
VAR W,S : REAL);
(* VALUES OF W AND S FOR NEXT ITERATION *)
VAR
A1,A2,DZEVEN,DZODD,SX,SY,WX,WY,ZX,ZY : REAL;
BEGIN
(* COMPUTATION OF ZEVEN AND ZODD FROM (W+DELTAW) *)
EVENODD(ER,1.02*W,S,DZEVEN,DZODD,EREFFE,EREFFO);
(* DIFFERENCE-VECTOR OF IMPEDANCES *)
WX:=DZODD-ZODD;
WY:=DZEVEN-ZEVEN;
(* COMPUTATION OF ZEVEN AND ZODD FROM (W,S+DELTAS) *)
EVENODD(ER,W,1.02*S,DZEVEN,DZODD,EREFFE,EREFFO);
(* COMPUTAION OF DIFFERENCE-VECTOR *)
SX:=DZODD-ZODD;
SY:=DZEVEN-ZEVEN;
ZX:=ZSODD-ZODD;
ZY:=ZSEVEN-ZEVEN;
A1:=(ZX*SY-ZY*SX)/(WX*SY-WY*SX);
A2:=(ZX*WY-ZY*WX)/(SX*WY-SY*WX);
(* NEW W AND S *)
W:=W*(1+A1/50.0);
S:=S*(1+A2/50.0);
IF W<0.05 THEN W:=0.05;
IF W>15.0 THEN W:=15.0;
IF S<0.01 THEN S:=0.01;
END; (*PROCEDURE ITERATION*)
PROCEDURE STARTWERT(ZSEVEN,ZSODD,ER:REAL;VAR WSTART,SSTART:REAL);
(* INITIAL VALUES OF ITERATION *)
(* ZSEVEN = DESIRED EVEN-MODE-IMPEDANCE
ZSODD = DESIRED ODD-MODE-IMPEDANCE
ER = RELATIVE PERMITTIVITY OF SUBSTRATE
WSTART = INITIAL VALUE W/H
SSTART = INITIAL VALUE S/H *)
VAR
ZL,A1,A2 :REAL;
BEGIN
(*COMPUTATION WSTART
COMPUTAION OF W/H OF A UNCOUPLED STRIPLINE
ZL=(ZSEVEN+ZSODD)/2, EQUATIONS: WHEELER *)
ZL:=(ZSEVEN+ZSODD)/2.0;
IF (ZL > (44.0-2.0*ER)) THEN
BEGIN (* HIGH IMPEDANCES*)
A1:=LN(PI/2.0)+LN(4.0/PI)/ER;
A2:=EXP(ZL/60.0*SQRT((ER+1.0)/2.0)+(ER-1.0)/
(2.0*ER+2.0)*A1);
WSTART:=1.0/(A2/8.0-1.0/(4.0*A2));
END
ELSE
BEGIN (*LOW IMPEDANCES*)
A1:=60.0*PI*PI/(ZL*SQRT(ER));
WSTART:=2.0/PI*(A1-1)-2.0/PI*LN(2*A1-1);
WSTART:=WSTART+(ER-1)/(PI*ER)*(LN(A1-1)+0.293-
(0.517/ER));
END;
(* COMPUTAION OF SSTART *)
SSTART:=ZSODD/(3.0*(ZSEVEN-ZSODD));
IF WSTART<0.05 THEN WSTART:=0.05;
IF WSTART>15.0 THEN WSTART:=15.0;
IF SSTART<0.01 THEN SSTART:=0.01;
IF SSTART>10.0 THEN SSTART:=10.0;
END(*PROCEDURE STARTWERT*);
PROCEDURE HEADDING ;
BEGIN
WRITELN(' (C) INSTITUT FUER HOCHFREQUENZTECHNIK UNIVERSITAET STUTTGART, FRG');
WRITELN(' F. ENDRESS, U. BOCHTLER');
WRITELN;
WRITELN;
WRITELN(' COMPUTATION OF MICROSTRIP-COUPLERS');
WRITELN;
WRITELN;
WRITELN;
WRITELN('EQUATIONS: R.K. HOFFMANN:');
WRITELN(' INTEGRIERTE MIKROWELLENSCHALTUNGEN',
', SPRINGER VERLAG 1983');
WRITELN(' PP 242... ');
WRITELN;
END;
PROCEDURE SYNTHESE;
(* COMPUTAION OF W/H AND S/H FROM GIVEN IMPEDANCES *)
PROCEDURE EINSYNTH;
(* INPUT *)
BEGIN
WRITELN;
WRITELN(' S Y N T H E S I S ');
WRITELN;
WRITE(' RELATIVE PERMITTIVITY OF SUBSTRATE : ');
READLN(ER);
WRITELN;
WRITELN('POSSIBILITIES :');
WRITELN;
WRITELN(' A : EVEN- AND ODD-MODE-IMPEDANCE GIVEN');
WRITELN(' B : COUPLING COEFFICIENT AND CHARACTERISTC IMPEDANCE GIVEN');
WRITELN;
WRITE('A OR B ? ');
READLN(NEU);
WRITELN;
IF UPCASE(NEU)= 'A' THEN
BEGIN
WRITE('DESIRED EVEN-MODE-IMPEDANCE: ');
READLN(ZSEVEN);
WRITE('DESIRED ODD-MODE-IMPEDANCE : ');
READLN(ZSODD);
END
ELSE
BEGIN
WRITE('COUPLING COEFFICIENT : ');
READLN(K);
WRITE('CHARACTERISTIC IMPEDANCE : ');
READLN(Z0);
ZSEVEN:=Z0*SQRT((1+K)/(1-K));
ZSODD:=Z0*SQRT((1-K)/(1+K));
END;
WRITELN;
END (* EINGABE *);
PROCEDURE AUSSYNTH;
(* OUTPUT *)
BEGIN
WRITELN;
WRITELN(' R E S U L T S ');
WRITELN;
WRITELN ('W/H = ',W:7:3,' S/H = ',S:7:3);
WRITELN ('ZEVEN = ',ZEVEN:7:2,' ZODD = ',ZODD:7:2);
WRITELN('EREFF EVEN = ',EREFFE:8:5,' EREFF ODD = ',
EREFFO:8:5);
WRITELN('AVERAGE EFFEKTIVE RELATIVE PERMITTIVITY = ',
SQR((ZODD*SQRT(EREFFO)+ZEVEN*SQRT(EREFFE))/(ZODD+ZEVEN)):8:5);
WRITELN('COUPLING COEFFICIENT = ',(ZEVEN-ZODD)/(ZEVEN+ZODD):6:4);
WRITELN;
WRITELN;
END(* OUTPUT *);
BEGIN (*SYNTHESE*)
REPEAT
ENDE:=FALSE;
EINSYNTH;
STARTWERT(ZSEVEN,ZSODD,ER,W,S);
EVENODD(ER,W,S,ZEVEN,ZODD,EREFFE,EREFFO);
WRITELN;
WRITELN('ZEVEN = ',ZEVEN:7:2,' ZODD = ',ZODD:7:2);
I:= 0; (*CYCLE COUNTER*)
REPEAT (*BEGIN OF ITERATION*)
I:=I+1;
ITERATION(ER,ZSEVEN,ZSODD,ZEVEN,ZODD,W,S);
EVENODD(ER,W,S,ZEVEN,ZODD,EREFFE,EREFFO);
WRITELN('ZEVEN = ',ZEVEN:7:2,' ZODD = ',ZODD:7:2);
(* CHECKING ACCURACY *)
IF((ABS(ZEVEN/ZSEVEN-1.0) < 0.002) AND (ABS(ZODD/
ZSODD-1.0) < 0.002)) THEN ENDE:=TRUE;
IF I = 10 THEN
BEGIN
WRITELN;
WRITELN('TIME OUT AFTER 10 ITERATIONSSTEPS');
WRITELN(' MAYBE COUPLING TOO LOOSE OR TOO TIGHTEN');
WRITELN;
ENDE:=TRUE;
END;
UNTIL ENDE;
IF I < 10 THEN AUSSYNTH;
WRITELN;
WRITE(' ONCE MORE ? (Y/N) : ');
READLN(NEU);
UNTIL UPCASE(NEU)='N';
END; (*PROCEDURE SYNTHESE*)
PROCEDURE ANALYSE;
(* COMPUTATION OF INPEDANCES *)
PROCEDURE EINANA;
(* ANALYSIS INPUT *)
BEGIN
WRITELN;
WRITELN(' A N A L Y S I S');
WRITELN;
WRITE('RELATIVE PERMITTIVITY OF SUBSTRATE : ');
READLN(ER);
WRITE('LINE-WIDTH/THICKNESS OF DIEL. SUPPORT : ');
READLN(W);
WRITE('GAP-WIDTH/THICKNESS OF DIEL. SUPPORT : ');
READLN(S);
WRITELN;
END;
PROCEDURE AUSANA;
(*OUTPUT ANALYSIS*)
BEGIN
WRITELN;
WRITELN(' R E S U L T S ');
WRITELN;
WRITELN('W/H = ',W:7:3,' S/H = ',S:7:3);
WRITELN('ZEVEN = ',ZEVEN:7:2,' ZODD = ',ZODD:7:2);
WRITELN('EREFF EVEN = ',EREFFE:8:5,' EREFF ODD = ',EREFFO:8:5);
WRITELN('AVERAGE EFFEKTIVE RELATIVE PERMITTIVITY = ',
SQR((ZODD*SQRT(EREFFO)+ZEVEN*SQRT(EREFFE))/(ZODD+ZEVEN)):8:5);
WRITELN('COUPLING COEFFICIENT = ',(ZEVEN-ZODD)/(ZEVEN+ZODD):6:4);
WRITELN('CHARACTERISTIC IMPEDANCE = ',SQRT(ZEVEN*ZODD):7:2);
WRITELN;
WRITELN;
END;
BEGIN (*ANALYSE*)
REPEAT
EINANA;
EVENODD(ER,W,S,ZEVEN,ZODD,EREFFE,EREFFO);
AUSANA;
WRITELN;
WRITE(' ONCE MORE (Y/N) ? ');
READLN(NEU);
UNTIL UPCASE(NEU)='N';
END;
BEGIN (*MAINPROGRAM CMICRO*)
CLRSCR;
HEADDING;
REPEAT
WRITELN;
WRITE('ANALYSIS (A) OR SYNTHESIS (S) ? ');
READLN(NEU);
IF UPCASE(NEU)='A' THEN ANALYSE ELSE SYNTHESE;
WRITELN;
WRITE('END OF PROGRAM (Y/N) ? ');
READLN(NEU);
UNTIL UPCASE(NEU)='Y';
END. (*CMICRO*)