home *** CD-ROM | disk | FTP | other *** search
- 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*)