home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / eepub12 / microkop.pas < prev    next >
Pascal/Delphi Source File  |  1986-06-03  |  12KB  |  350 lines

  1. PROGRAM MICROKOP;
  2.    (* VERSION  27.05.86 *)
  3.    (* FRITZ ENDRESS, ULLI BOCHTLER, INSTITUT FUER HOCHFREQUENZ-
  4.       TECHNIK UNIVERSITAET STUTTGART, FRG *)
  5.  
  6.    (* COMPUTATION OF SYMMETRIC COUPLED MICROSTRIP-LINES
  7.       ANALYSIS: EVEN- AND ODD-MODE-IMPEDANCE-COMPUTATION
  8.       FROM PHYSICAL PARAMETERS
  9.       SYNTHESIS: COMPUTAION OF GEOMETRICAL PARAMETERS DIELECTRICAL
  10.       PERMITTIVITY AND COUPLING COEFFICIENT FROM EVEN- AND ODD-MODE-
  11.       IMPEDANCE OR COUPLING COEFFICIENT AND CHARACTERISTIC IMPEDANCE. *)
  12.  
  13. CONST
  14.    VLIGHT = 2.997928E+8;
  15.    E0 = 8.8542E-12;
  16.    PI=3.1415927;
  17.    ZF=376.991;
  18. VAR
  19.    ER,W,S,ZEVEN,ZSEVEN,ZSODD,EREFFE,EREFFO,
  20.    ZODD,K,Z0 : REAL;
  21.    I : INTEGER;
  22.    NEU : CHAR;
  23.    ENDE : BOOLEAN;
  24.  
  25.  
  26.  
  27.  
  28. FUNCTION POW(X,Y : REAL) : REAL;
  29.    (* YTH POWER OF X *)
  30.    BEGIN
  31.       POW:=EXP(Y*LN(X));
  32.    END;
  33.  
  34. PROCEDURE EVENODD(ER,W,S :REAL; VAR ZEVEN,ZODD,EREFFE,EREFFO
  35.                   : REAL);
  36.  
  37.    (* COUPLED SYMMETRIC MICROSTRIP LINES, FORMULAS:
  38.       HAMMERSTAD/JENSEN FROM
  39.       R.K. HOFFMANN: INTEGRIERTE MIKROWELLENSCHALTUNGEN,
  40.       SPRINGER-VERLAG 1983, PP 242 FF.
  41.  
  42.       PARAMETERS:
  43.          ER      : RELATIVE PERMITTIVITY OF SUBSTRATE
  44.          W       : LINE-WIDTH/THICKNESS OF DIELECTRIC SUPPORT
  45.          S       : GAP-WIDTH/THICKNESS OF DIELECTRIC SUPPORT
  46.          ZEVEN   : EVEN-MODE-IMPEDANCE
  47.          ZODD    : ODD-MODE-IMPEDANCE
  48.          EREFFE  : EFFECTIVE RELATIVE PERMITTIVITY EVEN-MODE
  49.          EREFFO  : EFFEKTIVE RELATIVE PERMITTIVITY ODD-MODE
  50.  
  51.                                                              *)
  52.  
  53.    VAR
  54.       F1,ZL0,PHI,PSI,ALPHA,M,BETA,H,N,AEVEN,AODD,ZLEV0,ZLOD0,
  55.       A,B,FEVEN,MUE,FODD,F0,F01,P,Q,R :REAL;
  56.  
  57.    BEGIN
  58.  
  59.       F1:=6+(2*PI-6)*EXP(-POW(30.666/W,0.7528));        (*3.30*)
  60.       ZL0:=ZF/2/PI*LN(F1/W+SQRT(1+4/W/W));              (*3.29*)
  61.       PHI:=0.8645*POW(W,0.172);                         (*9.49*)
  62.       PSI:=1+S/1.45+POW(S,2.09)/3.95;                   (*9.50*)
  63.       ALPHA:=0.5*EXP(-S);                               (*9.51*)
  64.       M:=0.2175+POW(4.113+POW(20.36/S,6.0),-0.251)
  65.          +1/323*LN(POW(S,10.0)/(1+POW(S/13.8,10.0)));   (*9.52*)
  66.       H:=1.729+1.175*LN(1+0.627/(S+0.327*POW(S,2.17))); (*9.54*)
  67.       BETA:=0.2306+1/301.8*LN(POW(S,10.0)/(1+POW(S/3.73,
  68.             10.0)))+1.0/5.3*LN(1+0.646*POW(S,1.175));   (*9.55*)
  69.       N:=-6.424-0.76*LN(S)-POW(S/0.23,5.0);
  70.       IF N<-70.0 THEN N:=-70.0;
  71.       N:=(1/17.7+EXP(N))
  72.          *LN((10.0+68.3*S*S)/(1+32.5*POW(S,3.093)));    (*9.56*)
  73.       AEVEN:=PHI/PSI/(ALPHA*POW(W,M)+(1-ALPHA)*
  74.              POW(W,-M));                                (*9.48*)
  75.       AODD:=AEVEN-H/PSI*EXP(BETA*POW(W,-N)*LN(W));      (*9.53*)
  76.       ZLEV0:=ZL0/(1-ZL0*AEVEN/ZF);                      (*9.46*)
  77.       ZLOD0:=ZL0/(1-ZL0*AODD/ZF);                       (*9.47*)
  78.       A:=1+1/49.0*LN((POW(W,4.0)+POW(W/52,2.0))/
  79.          (POW(W,4.0)+0.432))+1/18.7*LN(1+POW(W/18.1,
  80.          3.0));                                         (*3.33*)
  81.       B:=0.564*POW((ER-0.9)/(ER+3.0),0.053);            (*3.34*)
  82.       MUE:=S*EXP(-S)+W*(20.0+S*S)/(10.0+S*S);           (*9.59*)
  83.       FEVEN:=POW(1+10.0/MUE,-A*B);                      (*9.58*)
  84.       EREFFE:=(ER+1)/2.0+(ER-1)/2.0*FEVEN;              (*9.57*)
  85.       R:=1+0.15*(1-EXP(1-(ER-1)*(ER-1)/8.2)/
  86.          (1+POW(S,-6.0)));                              (*9.66*)
  87.       F01:=1-EXP(-0.179*POW(S,0.15)-0.328*POW(S,R)/
  88.            LN(EXP(1.0)+POW(S/7.0,2.8)));                (*9.65*)
  89.       Q:=EXP(-1.366-S);                                 (*9.64*)
  90.       P:=POW(S,0.68);
  91.       P:=(EXP(P)+EXP(-P))/2;                            (*COSH*)
  92.       P:=EXP(-0.745*POW(S,0.295))/P;                    (*9.63*)
  93.       F0:=F01*EXP(P*LN(W)+Q*SIN(PI*LN(W)/LN(10.0)));    (*9.62*)
  94.       FODD:=F0*POW(1+10/W,-A*B);                        (*9.61*)
  95.       EREFFO:=(ER+1)/2.0+(ER-1)/2.0*FODD;               (*9.60*)
  96.       ZEVEN:=ZLEV0/SQRT(EREFFE);
  97.       ZODD:=ZLOD0/SQRT(EREFFO);
  98.    END; (*PROCEDURE EVENODD*)
  99.  
  100.  
  101.  
  102. PROCEDURE ITERATION(ER,ZSEVEN,ZSODD,ZEVEN,ZODD : REAL;
  103.                     VAR W,S : REAL);
  104.    (* VALUES OF W AND S FOR NEXT ITERATION *)
  105.  
  106.  
  107.    VAR
  108.       A1,A2,DZEVEN,DZODD,SX,SY,WX,WY,ZX,ZY : REAL;
  109.  
  110.    BEGIN
  111.       (* COMPUTATION OF ZEVEN AND ZODD FROM (W+DELTAW) *)
  112.       EVENODD(ER,1.02*W,S,DZEVEN,DZODD,EREFFE,EREFFO);
  113.       (* DIFFERENCE-VECTOR OF IMPEDANCES *)
  114.       WX:=DZODD-ZODD;
  115.       WY:=DZEVEN-ZEVEN;
  116.       (* COMPUTATION OF ZEVEN AND ZODD FROM (W,S+DELTAS) *)
  117.       EVENODD(ER,W,1.02*S,DZEVEN,DZODD,EREFFE,EREFFO);
  118.       (* COMPUTAION OF DIFFERENCE-VECTOR *)
  119.       SX:=DZODD-ZODD;
  120.       SY:=DZEVEN-ZEVEN;
  121.       ZX:=ZSODD-ZODD;
  122.       ZY:=ZSEVEN-ZEVEN;
  123.       A1:=(ZX*SY-ZY*SX)/(WX*SY-WY*SX);
  124.       A2:=(ZX*WY-ZY*WX)/(SX*WY-SY*WX);
  125.       (* NEW W AND S *)
  126.       W:=W*(1+A1/50.0);
  127.       S:=S*(1+A2/50.0);
  128.       IF W<0.05 THEN W:=0.05;
  129.       IF W>15.0 THEN W:=15.0;
  130.       IF S<0.01 THEN S:=0.01;
  131.    END; (*PROCEDURE ITERATION*)
  132.  
  133.  
  134. PROCEDURE STARTWERT(ZSEVEN,ZSODD,ER:REAL;VAR WSTART,SSTART:REAL);
  135.    (* INITIAL VALUES OF ITERATION *)
  136.    (* ZSEVEN = DESIRED EVEN-MODE-IMPEDANCE
  137.       ZSODD  = DESIRED ODD-MODE-IMPEDANCE
  138.       ER     = RELATIVE PERMITTIVITY OF SUBSTRATE
  139.       WSTART = INITIAL VALUE W/H
  140.       SSTART = INITIAL VALUE S/H *)
  141.  
  142.    VAR
  143.       ZL,A1,A2     :REAL;
  144.  
  145.    BEGIN
  146.       (*COMPUTATION WSTART
  147.         COMPUTAION OF W/H OF A UNCOUPLED STRIPLINE
  148.         ZL=(ZSEVEN+ZSODD)/2,  EQUATIONS: WHEELER  *)
  149.  
  150.       ZL:=(ZSEVEN+ZSODD)/2.0;
  151.       IF (ZL > (44.0-2.0*ER)) THEN
  152.          BEGIN (* HIGH IMPEDANCES*)
  153.             A1:=LN(PI/2.0)+LN(4.0/PI)/ER;
  154.             A2:=EXP(ZL/60.0*SQRT((ER+1.0)/2.0)+(ER-1.0)/
  155.                 (2.0*ER+2.0)*A1);
  156.             WSTART:=1.0/(A2/8.0-1.0/(4.0*A2));
  157.          END
  158.       ELSE
  159.          BEGIN (*LOW IMPEDANCES*)
  160.             A1:=60.0*PI*PI/(ZL*SQRT(ER));
  161.             WSTART:=2.0/PI*(A1-1)-2.0/PI*LN(2*A1-1);
  162.             WSTART:=WSTART+(ER-1)/(PI*ER)*(LN(A1-1)+0.293-
  163.                     (0.517/ER));
  164.          END;
  165.  
  166.       (* COMPUTAION OF SSTART *)
  167.       SSTART:=ZSODD/(3.0*(ZSEVEN-ZSODD));
  168.       IF WSTART<0.05 THEN WSTART:=0.05;
  169.       IF WSTART>15.0 THEN WSTART:=15.0;
  170.       IF SSTART<0.01 THEN SSTART:=0.01;
  171.       IF SSTART>10.0 THEN SSTART:=10.0;
  172.  
  173.  
  174.    END(*PROCEDURE STARTWERT*);
  175.  
  176.  
  177. PROCEDURE HEADDING ;
  178.    BEGIN
  179.       WRITELN(' (C) INSTITUT FUER HOCHFREQUENZTECHNIK UNIVERSITAET STUTTGART, FRG');
  180.       WRITELN('                  F. ENDRESS, U. BOCHTLER');
  181.       WRITELN;
  182.       WRITELN;
  183.       WRITELN('             COMPUTATION OF MICROSTRIP-COUPLERS');
  184.       WRITELN;
  185.       WRITELN;
  186.       WRITELN;
  187.       WRITELN('EQUATIONS:   R.K. HOFFMANN:');
  188.       WRITELN('             INTEGRIERTE MIKROWELLENSCHALTUNGEN',
  189.                ', SPRINGER VERLAG 1983');
  190.       WRITELN('             PP 242...  ');
  191.       WRITELN;
  192.    END;
  193.  
  194.  
  195. PROCEDURE SYNTHESE;
  196.    (* COMPUTAION OF W/H AND S/H FROM GIVEN IMPEDANCES *)
  197.  
  198.    PROCEDURE EINSYNTH;
  199.          (* INPUT *)
  200.       BEGIN
  201.          WRITELN;
  202.          WRITELN('     S Y N T H E S I S ');
  203.          WRITELN;
  204.          WRITE(' RELATIVE PERMITTIVITY OF SUBSTRATE : ');
  205.          READLN(ER);
  206.          WRITELN;
  207.          WRITELN('POSSIBILITIES :');
  208.          WRITELN;
  209.          WRITELN('   A :  EVEN- AND ODD-MODE-IMPEDANCE GIVEN');
  210.          WRITELN('   B :  COUPLING COEFFICIENT AND CHARACTERISTC IMPEDANCE GIVEN');
  211.          WRITELN;
  212.          WRITE('A OR B ? ');
  213.          READLN(NEU);
  214.          WRITELN;
  215.          IF UPCASE(NEU)= 'A' THEN
  216.             BEGIN
  217.                WRITE('DESIRED EVEN-MODE-IMPEDANCE: ');
  218.                READLN(ZSEVEN);
  219.                WRITE('DESIRED ODD-MODE-IMPEDANCE : ');
  220.                READLN(ZSODD);
  221.             END
  222.          ELSE
  223.             BEGIN
  224.                WRITE('COUPLING COEFFICIENT : ');
  225.                READLN(K);
  226.                WRITE('CHARACTERISTIC IMPEDANCE : ');
  227.                READLN(Z0);
  228.                ZSEVEN:=Z0*SQRT((1+K)/(1-K));
  229.                ZSODD:=Z0*SQRT((1-K)/(1+K));
  230.             END;
  231.          WRITELN;
  232.       END (* EINGABE *);
  233.  
  234.  
  235.    PROCEDURE AUSSYNTH;
  236.           (* OUTPUT *)
  237.       BEGIN
  238.          WRITELN;
  239.          WRITELN('  R E S U L T S  ');
  240.          WRITELN;
  241.          WRITELN ('W/H =   ',W:7:3,'                S/H = ',S:7:3);
  242.          WRITELN ('ZEVEN = ',ZEVEN:7:2,'                ZODD = ',ZODD:7:2);
  243.          WRITELN('EREFF EVEN = ',EREFFE:8:5,'     EREFF ODD = ',
  244.                   EREFFO:8:5);
  245.          WRITELN('AVERAGE EFFEKTIVE RELATIVE PERMITTIVITY = ',
  246.                  SQR((ZODD*SQRT(EREFFO)+ZEVEN*SQRT(EREFFE))/(ZODD+ZEVEN)):8:5);
  247.          WRITELN('COUPLING COEFFICIENT = ',(ZEVEN-ZODD)/(ZEVEN+ZODD):6:4);
  248.          WRITELN;
  249.          WRITELN;
  250.       END(* OUTPUT *);
  251.  
  252.  
  253.     BEGIN (*SYNTHESE*)
  254.       REPEAT
  255.          ENDE:=FALSE;
  256.          EINSYNTH;
  257.          STARTWERT(ZSEVEN,ZSODD,ER,W,S);
  258.          EVENODD(ER,W,S,ZEVEN,ZODD,EREFFE,EREFFO);
  259.          WRITELN;
  260.          WRITELN('ZEVEN = ',ZEVEN:7:2,'     ZODD = ',ZODD:7:2);
  261.          I:= 0; (*CYCLE COUNTER*)
  262.          REPEAT (*BEGIN OF ITERATION*)
  263.             I:=I+1;
  264.             ITERATION(ER,ZSEVEN,ZSODD,ZEVEN,ZODD,W,S);
  265.             EVENODD(ER,W,S,ZEVEN,ZODD,EREFFE,EREFFO);
  266.             WRITELN('ZEVEN = ',ZEVEN:7:2,'     ZODD = ',ZODD:7:2);
  267.             (* CHECKING ACCURACY *)
  268.             IF((ABS(ZEVEN/ZSEVEN-1.0) < 0.002) AND (ABS(ZODD/
  269.                ZSODD-1.0) < 0.002)) THEN ENDE:=TRUE;
  270.             IF I = 10 THEN
  271.                BEGIN
  272.                   WRITELN;
  273.                   WRITELN('TIME OUT AFTER 10 ITERATIONSSTEPS');
  274.                   WRITELN('   MAYBE COUPLING TOO LOOSE OR TOO TIGHTEN');
  275.                   WRITELN;
  276.                   ENDE:=TRUE;
  277.                END;
  278.          UNTIL ENDE;
  279.          IF I < 10 THEN AUSSYNTH;
  280.          WRITELN;
  281.          WRITE(' ONCE MORE ? (Y/N)  : ');
  282.          READLN(NEU);
  283.       UNTIL UPCASE(NEU)='N';
  284.    END; (*PROCEDURE SYNTHESE*)
  285.  
  286.  
  287. PROCEDURE ANALYSE;
  288.    (* COMPUTATION OF INPEDANCES  *)
  289.  
  290.    PROCEDURE EINANA;
  291.       (* ANALYSIS INPUT *)
  292.  
  293.       BEGIN
  294.          WRITELN;
  295.          WRITELN('    A N A L Y S I S');
  296.          WRITELN;
  297.          WRITE('RELATIVE PERMITTIVITY OF SUBSTRATE     : ');
  298.          READLN(ER);
  299.          WRITE('LINE-WIDTH/THICKNESS OF DIEL. SUPPORT  : ');
  300.          READLN(W);
  301.          WRITE('GAP-WIDTH/THICKNESS OF DIEL. SUPPORT   : ');
  302.          READLN(S);
  303.          WRITELN;
  304.       END;
  305.  
  306.  
  307.    PROCEDURE AUSANA;
  308.       (*OUTPUT ANALYSIS*)
  309.  
  310.       BEGIN
  311.          WRITELN;
  312.          WRITELN('    R E S U L T S  ');
  313.          WRITELN;
  314.          WRITELN('W/H =   ',W:7:3,'                 S/H = ',S:7:3);
  315.          WRITELN('ZEVEN = ',ZEVEN:7:2,'                ZODD = ',ZODD:7:2);
  316.          WRITELN('EREFF EVEN = ',EREFFE:8:5,'     EREFF ODD = ',EREFFO:8:5);
  317.          WRITELN('AVERAGE EFFEKTIVE RELATIVE PERMITTIVITY = ',
  318.                  SQR((ZODD*SQRT(EREFFO)+ZEVEN*SQRT(EREFFE))/(ZODD+ZEVEN)):8:5);
  319.          WRITELN('COUPLING COEFFICIENT     = ',(ZEVEN-ZODD)/(ZEVEN+ZODD):6:4);
  320.          WRITELN('CHARACTERISTIC IMPEDANCE = ',SQRT(ZEVEN*ZODD):7:2);
  321.          WRITELN;
  322.          WRITELN;
  323.       END;
  324.  
  325.    BEGIN (*ANALYSE*)
  326.       REPEAT
  327.          EINANA;
  328.          EVENODD(ER,W,S,ZEVEN,ZODD,EREFFE,EREFFO);
  329.          AUSANA;
  330.          WRITELN;
  331.          WRITE('  ONCE MORE  (Y/N) ? ');
  332.          READLN(NEU);
  333.       UNTIL UPCASE(NEU)='N';
  334.    END;
  335.  
  336.  
  337. BEGIN (*MAINPROGRAM CMICRO*)
  338.    CLRSCR;
  339.    HEADDING;
  340.    REPEAT
  341.       WRITELN;
  342.       WRITE('ANALYSIS (A) OR SYNTHESIS (S) ? ');
  343.       READLN(NEU);
  344.       IF UPCASE(NEU)='A' THEN ANALYSE ELSE SYNTHESE;
  345.       WRITELN;
  346.       WRITE('END OF PROGRAM (Y/N) ? ');
  347.       READLN(NEU);
  348.     UNTIL UPCASE(NEU)='Y';
  349. END. (*CMICRO*)
  350.