home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1986-08-18 | 17.2 KB | 388 lines |
- 10 CLS: PRINT "AMP-CALC: S-PARAMETER AMPLIFIER ANALYSIS PROGRAM V3.2 3/1/86": PRINT
- 20 PRINT " *********************************************
- 30 PRINT " * *
- 40 PRINT " * BY DR. ALLEN KATZ, CHAIRMAN *
- 50 PRINT " * DEPT ELECTRONICS ENGINEERING TECHNOLOGY *
- 60 PRINT " * TRENTON STATE COLLEGE, CN550 *
- 70 PRINT " * TRENTON, NEW JERSEY 8625 *
- 80 PRINT " * *
- 90 PRINT " * THE AUTHOR RESERVES RIGHTS TO THIS *
- 100 PRINT " * PROGRAM; HOWEVER, COPYING AND USE FOR *
- 110 PRINT " * EDUCATIONAL PURPOSES IS ENCOURAGED. *
- 120 PRINT " * *
- 130 PRINT " * PLEASE REPORTS ANY ERRORS OR PROBLEMS *
- 140 PRINT " * WITH THIS PROGRAM TO THE AUTHOR. *
- 150 PRINT " * TEL (609) 771 2487 *
- 160 PRINT " * *
- 170 PRINT " *********************************************
- 180 PI=4*ATN(1): DG=180/PI: Z0=50
- 190 DIM SR(2,2), SX(2,2), SM(2,2), SA(2,2), ZR(2), ZX(2)
- 200 DIM GR(2), GX(2), GM(2), GA(2), RZ(2), XZ(2), PR(4), PX(4)
- 210 DIM CR(2), CX(2), CM(2), CA(2)
- 220 DIM XG(2), RG(2), MG(2), AG(2)
- 230 REM **************** COMPLEX ARITHMATIC ROUTINES **********
- 240 DEF FNMR(AR,AX,BR,BX)=AR*BR-AX*BX
- 250 DEF FNMX(AR,AX,BR,BX)=AR*BX+AX*BR
- 260 DEF FNDR(AR,AX,BR,BX)=(AR*BR+AX*BX)/(BR^2+BX^2)
- 270 DEF FNDX(AR,AX,BR,BX)=(AX*BR-AR*BX)/(BR^2+BX^2)
- 280 DEF FNMG(AR,AX)=SQR(AR^2+AX^2)
- 290 DEF FNAG(AR,AX) = DG*(ATN(AX/AR)-(SGN(AR)-1)*PI/2)
- 300 DEF FNR(MG,AG)=MG*COS(AG/DG)
- 310 DEF FNX(MG,AG)=MG*SIN(AG/DG)
- 320 REM ********** INITIAL & S PARAMETER I/O *************
- 330 PRINT: PRINT "FOR CALCULATING SMALL SIGNAL AMPLIFIER CHARTERISTICS"
- 340 PRINT: PRINT "S PARAMETER ANGLES IN DEGREES"
- 350 PRINT:INPUT"PARAMETER FORM = ('POL' OR 'RECT' OR 'FILE')";Q$: PRINT
- 360 IF Q$="POL" THEN 410 ELSE IF Q$="RECT" THEN 470 ELSE IF Q$="FILE" THEN 370 ELSE 350
- 370 PRINT: INPUT "PARAMETER FILE NAME OR FILES OR QUIT"; F$: PRINT
- 380 IF F$="FILES" THEN GOTO 390 ELSE IF F$="QUIT" THEN 350 ELSE F$=F$+".S": GOTO 400
- 390 FILES "*.S": PRINT: GOTO 370
- 400 OPEN "I",#1,F$: FOR I=1 TO 2: FOR J=1 TO 2: INPUT#1,SR(I,J),SX(I,J),SM(I,J),SA(I,J):NEXT J:NEXT I: CLOSE#1: GOTO 570
- 410 FOR J=1 TO 2: FOR I=1 TO 2
- 420 PRINT "MAG OF S("; I; ","; J; ")=";: INPUT SM(I,J)
- 430 PRINT "ANG OF S("; I; ","; J; ")=";: INPUT SA(I,J)
- 440 SR(I,J)=FNR(SM(I,J),SA(I,J)): PRINT "REAL S("; I; ","; J; ")="; SR(I,J)
- 450 SX(I,J)=FNX(SM(I,J),SA(I,J)): PRINT "IMAG. S("; I; ","; J; ")="; SX(I,J)
- 460 PRINT: NEXT: NEXT: GOTO 530
- 470 FOR J=1 TO 2: FOR I=1 TO 2
- 480 PRINT "REAL OF S("; I; ","; J; ")=";: INPUT SR(I,J)
- 490 PRINT "IMG OF S("; I; ","; J; ")=";: INPUT SX(I,J): IF SX(I,J)=0 THEN SX(I,J)=9.9999E-05
- 500 SM(I,J)=FNMG(SR(I,J),SX(I,J)): PRINT "MAG S("; I; ","; J; ")="; SM(I,J)
- 510 SA(I,J)=FNAG(SR(I,J),SX(I,J)): PRINT "ANGLE S("; I; ","; J; ")="; SA(I,J)
- 520 PRINT: NEXT: NEXT
- 530 INPUT "WANT TO SAVE FILE (Y/N)"; Q$: IF Q$<>"Y" THEN 570
- 540 INPUT"FILE NAME";F$:F$=F$+".S":OPEN "O",#1,F$
- 550 FOR I=1 TO 10:FOR J=1 TO 10:DIR$(I,J)=F$:NEXT J:NEXT I
- 560 FOR I=1 TO 2: FOR J=1 TO 2: PRINT#1,SR(I,J),SX(I,J),SM(I,J),SA(I,J):NEXT J:NEXT I: CLOSE #1
- 570 REM ********** COMMON PROD AND N AND M MATRIX *********
- 580 PR(1)=FNMR(SR(1,2),SX(1,2),SR(2,1),SX(2,1))
- 590 PX(1)=FNMX(SR(1,2),SX(1,2),SR(2,1),SX(2,1))
- 600 PR(2)=FNMR(SR(1,1),SX(1,1),SR(2,2),SX(2,2))
- 610 PX(2)=FNMX(SR(1,1),SX(1,1),SR(2,2),SX(2,2))
- 620 RD=PR(2)-PR(1): XD=PX(2)-PX(1)
- 630 RN=SR(2,2)-FNMR(RD,XD,SR(1,1),-SX(1,1))
- 640 XN=SX(2,2)-FNMX(RD,XD,SR(1,1),-SX(1,1))
- 650 RM=SR(1,1)-FNMR(RD,XD,SR(2,2),-SX(2,2))
- 660 XM=SX(1,1)-FNMX(RD,XD,SR(2,2),-SX(2,2))
- 670 GOSUB 690: GOSUB 780: GOTO 870
- 680 REM ************* SOURCE Z MODULE ********************
- 690 PRINT: INPUT "REAL OF SOURCE Z ="; ZR(1): ZR(1)=ZR(1)/Z0
- 700 INPUT "IMG OF SOURCE Z ="; ZX(1): IF ZX(1)= 0 THEN ZX(1)=9.9999E-05
- 710 ZX(1)=ZX(1)/Z0
- 720 GR(1)=FNDR(ZR(1)-1,ZX(1),ZR(1)+1,ZX(1))
- 730 GX(1)=FNDX(ZR(1)-1,ZX(1),ZR(1)+1,ZX(1))
- 740 GM(1)=FNMG(GR(1),GX(1)): GA(1)=FNAG(GR(1),GX(1))
- 750 PRINT "SOURCE REF COEF MAG ="; GM(1)
- 760 PRINT "SOURCE REF COEF ANG ="; GA(1): RETURN
- 770 REM ************** LOAD Z MODULE **********************
- 780 PRINT: INPUT "REAL OF LOAD Z ="; ZR(2): ZR(2)=ZR(2)/Z0
- 790 INPUT "IMG OF LOAD Z ="; ZX(2): IF ZX(2)=0 THEN ZX(2)=9.9999E-05
- 800 ZX(2)=ZX(2)/Z0
- 810 GR(2)=FNDR(ZR(2)-1,ZX(2),ZR(2)+1,ZX(2))
- 820 GX(2)=FNDX(ZR(2)-1,ZX(2),ZR(2)+1,ZX(2))
- 830 GM(2)=FNMG(GR(2),GX(2)): GA(2)=FNAG(GR(2),GX(2))
- 840 PRINT "LOAD REF COEF MAG ="; GM(2)
- 850 PRINT "LOAD REF COEF ANG ="; GA(2): RETURN
- 860 REM *************** MENUE *************************
- 870 PRINT: PRINT " WANT TO :"
- 880 PRINT " CALCULATE Z INPUT ---------------- ZI
- 890 PRINT " CALCULATE Z OUT ------------------ ZO"
- 900 PRINT " CALCULATE VOLTAGE GAIN ----------- VG"
- 910 PRINT " CALCULATE POWER GAIN ------------- PG"
- 920 PRINT " CALCULATE AVAIL PWR GAIN --------- AG"
- 930 PRINT " CALCULATE TRANDUCER PWR GAIN ----- TG"
- 940 PRINT " CALCULATE CONSTANT GAIN CIRCLES -- GC
- 950 PRINT " CALCULATE STABILITY CIRCLES ------ SC
- 960 PRINT " CALCULATE CONSTANT NF CIRCLES ---- NF
- 970 PRINT " CHANGE TERMINAL Z ---------------- CZ"
- 980 PRINT " DISPLAY DEVICE S PARAMETERS ------ SP
- 990 PRINT " END------------------------ END
- 1000 PRINT: INPUT "ENTER CODE"; C$
- 1010 IF C$="ZI" THEN GOSUB 1090 ELSE IF C$="ZO" THEN GOSUB 1280
- 1020 IF C$="VG" THEN GOSUB 1470 ELSE IF C$="PG" THEN GOSUB 1610
- 1030 IF C$="AG" THEN GOSUB 1710 ELSE IF C$="TG" THEN GOSUB 1810
- 1040 IF C$="GC" THEN GOSUB 2160 ELSE IF C$="SC" THEN GOSUB 2720
- 1050 IF C$="NF" THEN GOSUB 3600 ELSE IF C$="SP" THEN GOSUB 3770
- 1060 IF C$="CZ" THEN GOSUB 2020
- 1070 IF C$="END" THEN END ELSE IF C$="NEW" THEN 340 ELSE 870
- 1080 REM ************** ZIN CALC *****************************
- 1090 NR=PR(1): NX=PX(1)
- 1100 MR=FNMR(NR,NX,GR(2),GX(2)): MX=FNMX(NR,NX,GR(2),GX(2))
- 1110 DR=1-FNMR(SR(2,2),SX(2,2),GR(2),GX(2))
- 1120 DX=-FNMX(SR(2,2),SX(2,2),GR(2),GX(2))
- 1130 RG(1)=SR(1,1)+FNDR(MR,MX,DR,DX): XG(1)=SX(1,1)+FNDX(MR,MX,DR,DX)
- 1140 MG(1)=FNMG(RG(1),XG(1)): AG(1)=FNAG(RG(1),XG(1))
- 1150 PRINT: PRINT "MAG OF INPUT REF COEF ="; MG(1)
- 1160 PRINT "ANG OF INPUT REF COEF ="; AG(1)
- 1170 RZ(1)=Z0*FNDR(1+RG(1),XG(1),1-RG(1),-XG(1))
- 1180 XZ(1)=Z0*FNDX(1+RG(1),XG(1),1-RG(1),-XG(1))
- 1190 PRINT "REAL INPUT Z ="; RZ(1)
- 1200 PRINT "IMG INPUT Z ="; XZ(1): IF T9=1 THEN RETURN
- 1210 PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
- 1220 IF H$<>"Y" THEN RETURN
- 1230 LPRINT: LPRINT "MAG OF INPUT REF COEF ="; MG(1)
- 1240 LPRINT "ANG OF INPUT REF COEF ="; AG(1)
- 1250 LPRINT "REAL INPUT Z ="; RZ(1)
- 1260 LPRINT "IMG INPUT Z ="; XZ(1): LPRINT : RETURN
- 1270 REM ************* ZOUT CALC ***************************
- 1280 NR=PR(1): NX=PX(1)
- 1290 MR=FNMR(NR,NX,GR(1),GX(1)): MX=FNMX(NR,NX,GR(1),GX(1))
- 1300 DR=1-FNMR(SR(1,1),SX(1,1),GR(1),GX(1))
- 1310 DX=-FNMX(SR(1,1),SX(1,1),GR(1),GX(1))
- 1320 RG(2)=SR(2,2)+FNDR(MR,MX,DR,DX): XG(2)=SX(2,2)+FNDX(MR,MX,DR,DX)
- 1330 MG(2)=FNMG(RG(2),XG(2)): AG(2)=FNAG(RG(2),XG(2))
- 1340 PRINT: PRINT "MAG OF OUTPUT REF COEF ="; MG(2)
- 1350 PRINT "ANG OF OUTPUT REF COEF ="; AG(2)
- 1360 RZ(2)=Z0*FNDR(1+RG(2),XG(2),1-RG(2),-XG(2))
- 1370 XZ(2)=Z0*FNDX(1+RG(2),XG(2),1-RG(2),-XG(2))
- 1380 PRINT "REAL OUTPUT Z ="; RZ(2)
- 1390 PRINT "IMG OUTPUT Z ="; XZ(2): IF T9=1 THEN RETURN
- 1400 PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
- 1410 IF H$<>"Y" THEN RETURN
- 1420 LPRINT: LPRINT "MAG OF OUTPUT REF COEF ="; MG(2)
- 1430 LPRINT "ANG OF OUTPUT REF COEF ="; AG(2)
- 1440 LPRINT "REAL OUTPUT Z ="; RZ(2)
- 1450 LPRINT "IMG OUTPUT Z ="; XZ(2): LPRINT: RETURN
- 1460 REM ************ VOLTAGE GAIN CALC *****************
- 1470 NR=FNMR(SR(2,1),SX(2,1),1+GR(2),GX(2))
- 1480 NX=FNMX(SR(2,1),SX(2,1),1+GR(2),GX(2))
- 1490 DR=1-FNMR(SR(2,2),SX(2,2),GR(2),GX(2))
- 1500 DX=-FNMX(SR(2,2),SX(2,2),GR(2),GX(2))
- 1510 ER=FNMR(DR,DX,1+RG(1),XG(1)): EX=FNMX(DR,DX,1+RG(1),XG(1))
- 1520 AR=FNDR(NR,NX,ER,EX): AX=FNDX(NR,NX,ER,EX): AV=FNMG(AR,AX): VA=FNAG(AR,AR)
- 1530 PRINT: PRINT "VOLTAGE GAIN ="; AV, "PHASE SHIFT ="; VA
- 1540 VG=20*LOG(AV)/LOG(10): PRINT "VOLTAGE GAIN IN DB ="; VG
- 1550 PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
- 1560 IF H$<>"Y" THEN RETURN
- 1570 LPRINT: LPRINT "VOLTAGE GAIN ="; AV, "PHASE SHIFT ="; VA
- 1580 LPRINT "VOLTAGE GAIN IN DB ="; VG
- 1590 LPRINT: RETURN
- 1600 REM *************** POWER GAIN *********************
- 1610 NR=SM(2,1)^2*(1-GM(2)^2)
- 1620 DR=(1-SM(1,1)^2)+(GM(2)^2)*(SM(2,2)^2-(FNMG(RD,XD))^2)-2*FNMR(GR(2),GX(2),RN,XN)
- 1630 PG=NR/DR: PRINT: PRINT "POWER GAIN ="; PG
- 1640 PG=10*(LOG(PG)/LOG(10)): PRINT "POWER GAIN IN DB ="; PG
- 1650 PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
- 1660 IF H$<>"Y" THEN RETURN
- 1670 PG=NR/DR: LPRINT: LPRINT "POWER GAIN ="; PG
- 1680 PG=10*(LOG(PG)/LOG(10)): LPRINT "POWER GAIN IN DB ="; PG
- 1690 LPRINT: RETURN
- 1700 REM *************** AVAILABLE POWER *******************
- 1710 NR=SM(2,1)^2*(1-GM(1)^2)
- 1720 DR=(1-SM(2,2)^2)+(GM(1)^2)*(SM(1,1)^2-(FNMG(RD,XD))^2)-2*FNMR(GR(1),GX(1),RM,XM)
- 1730 PG=NR/DR: PRINT: PRINT "AVAILABLE POWER GAIN ="; PG
- 1740 PG=10*(LOG(PG)/LOG(10)):PRINT "AVAILABLE POWER GAIN IN DB ="; PG
- 1750 PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
- 1760 IF H$<>"Y" THEN RETURN
- 1770 PG=NR/DR: LPRINT: LPRINT "AVAILABLE POWER GAIN ="; PG
- 1780 PG=10*(LOG(PG)/LOG(10)): LPRINT "AVAILABLE POWER GAIN IN DB ="; PG
- 1790 LPRINT : RETURN
- 1800 REM ************** TRANDUCER GAIN *********************
- 1810 NR=SM(2,1)^2*(1-GM(1)^2)*(1-GM(2)^2)
- 1820 R1=1-FNMR(SR(1,1),SX(1,1),GR(1),GX(1))
- 1830 X1=-FNMX(SR(1,1),SX(1,1),GR(1),GX(1))
- 1840 R2=1-FNMR(SR(2,2),SX(2,2),GR(2),GX(2))
- 1850 X2=-FNMX(SR(2,2),SX(2,2),GR(2),GX(2))
- 1860 R3=FNMR(GR(1),GX(1),GR(2),GX(2))
- 1870 X3=FNMX(GR(1),GX(1),GR(2),GX(2))
- 1880 DR=FNMR(R1,X1,R2,X2)-FNMR(PR(1),PX(1),R3,X3)
- 1890 DX=FNMX(R1,X1,R2,X2)-FNMX(PR(1),PX(1),R3,X3)
- 1900 DM=FNMG(DR,DX): TG=NR/DM^2
- 1910 PRINT: PRINT "TRANSDUCER POWER GAIN ="; TG
- 1920 TD=10*(LOG(TG)/LOG(10)): PRINT "TRANSDUCER GAIN IN DB ="; TD
- 1930 G0=SM(2,1)^2: GS=(1-GM(1)^2)/(FNMG(R1,X1))^2: GL=(1-GM(2)^2)/(FNMG(R2,X2))^2
- 1940 GU=G0*GS*GL: PRINT "UNILATERAL TRANSDUCER GAIN ="; GU
- 1950 UD=10*(LOG(GU)/LOG(10)): PRINT "UNILATERAL GAIN IN DB ="; UD
- 1960 UM=SM(2,1)^2/((1-SM(1,1)^2)*(1-SM(2,2)^2))
- 1970 PRINT "MAXIMUM UNILATERAL GAIN ="; UM
- 1980 MD=10*LOG(UM)/LOG(10): PRINT "MAX UNILATERAL GAIN IN DB ="; MD
- 1990 UF=SM(1,1)*SM(1,2)*SM(2,1)*SM(2,2)/((1-SM(1,1)^2)*(1-SM(2,2)^2))
- 2000 UL=1/(1+UF^2): UH=1/(1-UF^2)
- 2010 PRINT "UNILAT. FIGURE OF MERIT ="; UF; " ("; UL; "-"; UH; " )"
- 2020 PRINT: INPUT "WANT TO CHANGE ZIN/ZOUT (ZI/ZO/BOTH/NO)"; Q$
- 2030 T9=1: IF Q$="ZI" THEN GOSUB 690: GOSUB 1280: GOTO 1810
- 2040 IF Q$="ZO" THEN GOSUB 780: GOSUB 1090: GOTO 1810
- 2050 IF Q$="BOTH" THEN GOSUB 690: GOSUB 1280: GOSUB 780: GOSUB 1090: GOTO 1810
- 2060 PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$: T9=0
- 2070 IF H$<>"Y" THEN RETURN
- 2080 LPRINT: LPRINT "TRANSDUCER POWER GAIN ="; TG
- 2090 LPRINT "TRANSDUCER GAIN IN DB ="; TD
- 2100 LPRINT "UNILATERAL TRANSDUCER GAIN ="; GU
- 2110 LPRINT "UNILATERAL GAIN IN DB ="; UD
- 2120 LPRINT "MAXIMUM UNILATERAL GAIN ="; UM
- 2130 LPRINT "MAX UNILATERAL GAIN IN DB ="; MD
- 2140 LPRINT "UNILAT. FIGURE OF MERIT ="; UF; " ("; UL; "-"; UH; " )": LPRINT: RETURN
- 2150 REM ************* CONSTANT GAIN CIRCLES ****************
- 2160 R1=1-FNMR(SR(1,1),SX(1,1),GR(1),GX(1))
- 2170 X1=-FNMX(SR(1,1),SX(1,1),GR(1),GX(1))
- 2180 R2=1-FNMR(SR(2,2),SX(2,2),GR(2),GX(2))
- 2190 X2=-FNMX(SR(2,2),SX(2,2),GR(2),GX(2))
- 2200 G0=SM(2,1)^2: GS=(1-GM(1)^2)/(FNMG(R1,X1))^2: GL=(1-GM(2)^2)/(FNMG(R2,X2))^2
- 2210 B0=10*(LOG(G0)/LOG(10)): BS=10*LOG(GS)/LOG(10): BL=10*(LOG(GL)/LOG(10))
- 2220 PRINT: PRINT "G0="; G0, "GS="; GS, "GL="; GL
- 2230 PRINT "G0="; B0, "GS="; BS, "GL="; BL; " IN DB"
- 2240 M1=1/(1-SM(1,1)^2): M2=1/(1-SM(2,2)^2)
- 2250 B1=10*(LOG(M1)/LOG(10)): B2=10*(LOG(M2)/LOG(10))
- 2260 PRINT "MAX GS="; M1, "MAX GL="; M2
- 2270 PRINT "MAX GS="; B1, "MAX GL="; B2; " IN DB"
- 2280 CM=FNMG(SR(1,1),-SX(1,1)): CA=FNAG(SR(1,1),-SX(1,1))
- 2290 PRINT: PRINT "MAX GAIN WITH SOURCE REFL COEF MAG ="; CM; " ANGLE ="; CA
- 2300 ZR=Z0*FNDR(1+SR(1,1),-SX(1,1),1-SR(1,1),SX(1,1))
- 2310 ZX=Z0*FNDX(1+SR(1,1),-SX(1,1),1-SR(1,1),SX(1,1))
- 2320 PRINT "MAX SOURCE R ="; ZR, "X ="; ZX
- 2330 KM=FNMG(SR(2,2),-SX(2,2)): KA=FNAG(SR(2,2),-SX(2,2))
- 2340 PRINT: PRINT "MAX GAIN WITH LOAD REFL COEF MAG ="; KM; " ANGLE ="; KA
- 2350 QR=Z0*FNDR(1+SR(2,2),-SX(2,2),1-SR(2,2),SX(2,2))
- 2360 QX=Z0*FNDX(1+SR(2,2),-SX(2,2),1-SR(2,2),SX(2,2))
- 2370 PRINT "MAX LOAD R ="; QR, "X ="; QX
- 2380 PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
- 2390 IF H$<>"Y" THEN 2490
- 2400 LPRINT: LPRINT "G0="; G0, "GS="; GS, "GL="; GL
- 2410 LPRINT "G0="; B0, "GS="; BS, "GL="; BL; " IN DB"
- 2420 LPRINT "MAX GS="; M1, "MAX GL="; M2
- 2430 LPRINT "MAX GS="; B1, "MAX GL="; B2; " IN DB"
- 2440 LPRINT: LPRINT "MAX GAIN WITH SOURCE REFL COEF MAG ="; CM; " ANGLE ="; CA
- 2450 LPRINT "MAX SOURCE R ="; ZR, "X ="; ZX
- 2460 LPRINT: LPRINT "MAX GAIN WITH LOAD REFL COEF MAG ="; KM; " ANGLE ="; KA
- 2470 LPRINT "MAX LOAD R ="; QR, "X ="; QX
- 2480 REM ************** GAIN CHANGE **********************
- 2490 G1=GS/M1: D1=G1*SM(1,1)/(1-SM(1,1)^2*(1-G1))
- 2500 R1=SQR(1-G1)*(1-SM(1,1)^2)/(1-SM(1,1)^2*(1-G1))
- 2510 PRINT: PRINT "DIST. FROM CENTER S.C. TO CENT. OF SOURCE GAIN CIR. ="; D1
- 2520 PRINT "RADIUS OF SOURCE GAIN CIRCLE ="; R1
- 2530 G2=GL/M2: D2=G2*SM(2,2)/(1-SM(2,2)^2*(1-G2))
- 2540 R2=SQR(1-G2)*(1-SM(2,2)^2)/(1-SM(2,2)^2*(1-G2))
- 2550 PRINT: PRINT "DIST. FROM CENTER S.C. TO CENT. OF LOAD GAIN CIR. ="; D2
- 2560 PRINT "RADIUS OF LOAD GAIN CIRCLE ="; R2
- 2570 PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
- 2580 IF H$<>"Y" THEN 2630 ELSE LPRINT: LPRINT "GS IN DB"; BS, "GL IN DB"; BL
- 2590 LPRINT "DIST. FROM CENTER S.C. TO CENT. OF SOURCE GAIN CIR. ="; D1
- 2600 LPRINT "RADIUS OF SOURCE GAIN CIRCLE ="; R1
- 2610 LPRINT: LPRINT "DIST. FROM CENTER S.C. TO CENT. OF LOAD GAIN CIR. ="; D2
- 2620 LPRINT "RADIUS OF LOAD GAIN CIRCLE ="; R2
- 2630 PRINT: INPUT "WANT TO CHANGE GAIN (GS/GL/BOTH/NO)"; Q$
- 2640 IF Q$<>"GL" AND Q$<>"GS" AND Q$<>"BOTH" THEN RETURN
- 2650 IF Q$="GS" OR Q$="BOTH" THEN INPUT "NEW GS IN DB"; BS
- 2660 IF Q$="GL" OR Q$="BOTH" THEN INPUT "NEW GL IN DB"; BL
- 2670 GS=10^(BS/10): GL=10^(BL/10)
- 2680 IF GS>M1 THEN PRINT "GS TOO LARGE, MAX VALUE ="; M1: GOTO 2630
- 2690 IF GL>M2 THEN PRINT "GL TOO LARGE, MAX VALUE ="; M2: GOTO 2630
- 2700 GOTO 2490
- 2710 REM ************* STABILITY ****************************
- 2720 K=(1+(FNMG(RD,XD))^2-SM(1,1)^2-SM(2,2)^2)/(2*FNMG(PR(1),PX(1)))
- 2730 PRINT: PRINT "AMPLIFIER WILL BE STABLE WITH CONJUGATE MATCHED SOURCE AND LOAD IF K>1: K ="; K
- 2740 IF K<1 THEN PRINT: PRINT "UNSTABLE": PRINT: GOTO 3210
- 2750 B1=1+SM(1,1)^2-SM(2,2)^2-(FNMG(RD,XD))^2
- 2760 B2=1+SM(2,2)^2-SM(1,1)^2-(FNMG(RD,XD))^2
- 2770 R=SQR(B1^2-4*(FNMG(RM,XM))^2)
- 2780 IF B1>0 THEN P1=(B1+R)/(2*FNMG(RM,XM)^2) ELSE P1=(B1-R)/(2*FNMG(RM,XM)^2)
- 2790 RC=RM*P1: XC=-XM*P1: SM=1/FNMG(RC,XC): SA=FNAG(RC,XC)
- 2800 SR=FNR(SM,SA): SX=FNX(SM,SA)
- 2810 RS=Z0*FNDR(1+SR,SX,1-SR,-SX): XS=Z0*FNDX(1+SR,SX,1-SR,-SX)
- 2820 PRINT: PRINT "OPT. SOURCE REF COEF MAG ="; SM
- 2830 PRINT "OPT. SOURCE REF COEF ANG ="; SA
- 2840 PRINT "OPT. REAL OF SOURCE Z ="; RS
- 2850 PRINT "OPT. IMG OF SOURCE Z ="; XS
- 2860 R=SQR(B2^2-4*(FNMG(RN,XN))^2)
- 2870 IF B2>0 THEN P2=(B2+R)/(2*FNMG(RN,XN)^2) ELSE P2=(B2-R)/(2*FNMG(RN,XN)^2)
- 2880 RC=RN*P2: XC=-XN*P2: LM=1/FNMG(RC,XC): LA=FNAG(RC,XC)
- 2890 LR=FNR(LM,LA): LX=FNX(LM,LA)
- 2900 RL=Z0*FNDR(1+LR,LX,1-LR,-LX): XL=Z0*FNDX(1+LR,LX,1-LR,-LX)
- 2910 PRINT: PRINT "OPT. LOAD REF COEF MAG ="; LM
- 2920 PRINT "OPT. LOAD REF COEF ANG ="; LA
- 2930 PRINT "OPT. REAL OF LOAD Z ="; RL
- 2940 PRINT "OPT. IMG OF LOAD Z ="; XL
- 2950 NR=SM(2,1)^2*(1-SM^2)*(1-LM^2)
- 2960 R1=1-FNMR(SR(1,1),SX(1,1),SR,SX)
- 2970 X1=-FNMX(SR(1,1),SX(1,1),SR,SX)
- 2980 R2=1-FNMR(SR(2,2),SX(2,2),LR,LX)
- 2990 X2=-FNMX(SR(2,2),SX(2,2),LR,LX)
- 3000 R3=FNMR(SR,SX,LR,LX)
- 3010 X3=FNMX(SR,SX,LR,LX)
- 3020 DR=FNMR(R1,X1,R2,X2)-FNMR(PR(1),PX(1),R3,X3)
- 3030 DX=FNMX(R1,X1,R2,X2)-FNMX(PR(1),PX(1),R3,X3)
- 3040 DM=FNMG(DR,DX): TG=NR/DM^2
- 3050 PRINT: PRINT "OPT. MATCH AVAILABLE PWR GAIN ="; TG
- 3060 TD=10*(LOG(TG)/LOG(10)): PRINT "TRANSDUCER GAIN IN DB ="; TD
- 3070 PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
- 3080 IF H$<>"Y" THEN 3210
- 3090 LPRINT: LPRINT "STABILITY CONSTANT K = "; K
- 3100 LPRINT "OPT. MATCH AVAILABLE PWR GAIN ="; TG
- 3110 LPRINT "TRANSDUCER GAIN IN DB ="; TD
- 3120 LPRINT: LPRINT "OPT. SOURCE REF COEF MAG ="; SM
- 3130 LPRINT "OPT. SOURCE REF COEF ANG ="; SA
- 3140 LPRINT "OPT. REAL OF SOURCE Z ="; RS
- 3150 LPRINT "OPT. IMG OF SOURCE Z ="; XS
- 3160 LPRINT: LPRINT "OPT. LOAD REF COEF MAG ="; LM
- 3170 LPRINT "OPT. LOAD REF COEF ANG ="; LA
- 3180 LPRINT "OPT. REAL OF LOAD Z ="; RL
- 3190 LPRINT "OPT. IMG OF LOAD Z ="; XL: LPRINT
- 3200 REM ****************************************************
- 3210 PRINT: PRINT "AMPLIFIER WILL BE UNCONDITIONALLY STABLE IF:"
- 3220 PRINT "1. SM(1,1)<1: SM(1,1) ="; SM(1,1)
- 3230 PRINT "2. SM(2,2)<1: SM(2,2) ="; SM(2,2)
- 3240 SF=ABS((SM(1,2)*SM(2,1)-FNMG(RM,-XM))/(SM(1,1)^2-FNMG(RD,XD)^2))
- 3250 LF=ABS((SM(1,2)*SM(2,1)-FNMG(RN,-XN))/(SM(2,2)^2-FNMG(RD,XD)^2))
- 3260 PRINT "3. CL-RL>1: CL-RL ="; LF
- 3270 PRINT "4. CS-RS>1: CS-RS ="; SF
- 3280 RL=ABS(SM(1,2)*SM(2,1)/(SM(2,2)^2-FNMG(RD,XD)^2))
- 3290 RS=ABS(SM(1,2)*SM(2,1)/(SM(1,1)^2-FNMG(RD,XD)^2))
- 3300 NR=SR(2,2)-FNMR(RD,XD,SR(1,1),-SX(1,1))
- 3310 NX=SX(2,2)-FNMX(RD,XD,SR(1,1),-SX(1,1))
- 3320 CR(2)=NR/(SM(2,2)^2-FNMG(RD,XD)^2)
- 3330 CX(2)=-NX/(SM(2,2)^2-FNMG(RD,XD)^2)
- 3340 NR=SR(1,1)-FNMR(RD,XD,SR(2,2),-SX(2,2))
- 3350 NX=SX(1,1)-FNMX(RD,XD,SR(2,2),-SX(2,2))
- 3360 CR(1)=NR/(SM(1,1)^2-FNMG(RD,XD)^2)
- 3370 CX(1)=-NX/(SM(1,1)^2-FNMG(RD,XD)^2)
- 3380 CM(2)=FNMG(CR(2),CX(2)): CA(2)=FNAG(CR(2),CX(2))
- 3390 CM(1)=FNMG(CR(1),CX(1)): CA(1)=FNAG(CR(1),CX(1))
- 3400 PRINT: PRINT "LOCUS OF LOAD COEF FOR UNSTABLE CONDITION"
- 3410 PRINT "CIRCLE CENTER: MAG ="; CM(2), "ANGLE ="; CA(2)
- 3420 PRINT "CIRCLE RADIUS ="; RL
- 3430 PRINT: PRINT "LOCUS OF SOURCE COEF FOR UNSTABLE CONDITION"
- 3440 PRINT "CIRCLE CENTER: MAG ="; CM(1), "ANGLE ="; CA(1)
- 3450 PRINT "CIRCLE RADIUS ="; RS
- 3460 PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
- 3470 IF H$<>"Y" THEN RETURN
- 3480 LPRINT: LPRINT "AMPLIFIER WILL BE UNCONDITIONALLY STABLE IF:"
- 3490 LPRINT "1. SM(1,1)<1: SM(1,1) ="; SM(1,1)
- 3500 LPRINT "2. SM(2,2)<1: SM(2,2) ="; SM(2,2)
- 3510 LPRINT "3. CL-RL>1: GL-RL ="; LF
- 3520 LPRINT "4. CS-RS>1: CS-RS ="; SF
- 3530 LPRINT: LPRINT "LOCUS OF LOAD COEF FOR UNSTABLE CONDITION"
- 3540 LPRINT "CIRCLE CENTER: MAG ="; CM(2), "ANGLE ="; CA(2)
- 3550 LPRINT "CIRCLE RADIUS ="; RL
- 3560 LPRINT: LPRINT "LOCUS OF SOURCE COEF FOR UNSTABLE CONDITION"
- 3570 LPRINT "CIRCLE CENTER: MAG ="; CM(1), "ANGLE ="; CA(1)
- 3580 LPRINT "CIRCLE RADIUS ="; RS: LPRINT: RETURN
- 3590 REM ****************** NF CIRCLE CALC *******************
- 3600 PRINT: INPUT "MIN. NF IN DB ="; FM: FM=10^(FM/10)
- 3610 INPUT "MAG OF SOURCE COEF FOR MIN NF ="; MC
- 3620 INPUT "ANGLE OF COEF FOR MIN NF ="; AG
- 3630 INPUT "NF FOR Z0 SOURCE ="; F0: F0=10^(F0/10)
- 3640 PRINT: INPUT "NF IN DB FOR COEF CALC ="; IC: FI=10^(IC/10)
- 3650 RC=FNR(MC,AC): XC=FNX(MC,AC): G0=FNMG(1+RC,XC)^2
- 3660 EN=(F0-FM)*G0/MC^2: NI=(FI-FM)*G0/EN
- 3670 EM=MC/(1+NI): RE=SQR(NI^2+NI*(1-MC^2))/(1+NI)
- 3680 PRINT: PRINT "CENTER OF CONST. NF COEF CIR AT MAG ="; EM, "ANGLE ="; AG
- 3690 PRINT "RADIUS OF CIRCLE ="; RE
- 3700 PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
- 3710 IF H$<>"Y" THEN 3740 ELSE LPRINT: LPRINT,"NF COEF ="; IC
- 3720 LPRINT "CENTER OF CONST. NF COEF CIR AT MAG ="; EM, "ANGLE ="; AC
- 3730 LPRINT "RADIUS OF CIRCLE ="; RE
- 3740 PRINT: INPUT "WANT TO TRY ANOTHER COEF (Y/N)"; Q$
- 3750 IF Q$="Y" THEN 3640 ELSE RETURN
- 3760 REM ************* S PARAMETER DISPLAY ****************
- 3770 PRINT: PRINT "S PARAMETERS FILE "; F$
- 3780 FOR J=1 TO 2: FOR I=1 TO 2
- 3790 PRINT "MAG OF S("; I; ","; J; ")="; SM(I,J)
- 3800 PRINT "ANG OF S("; I; ","; J; ")="; SA(I,J): NEXT: NEXT
- 3810 PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
- 3820 IF H$<>"Y" THEN RETURN
- 3830 LPRINT: LPRINT, "S PARAMETERS FILE "; F$
- 3840 FOR J=1 TO 2: FOR I=1 TO 2
- 3850 LPRINT "MAG OF S("; I; ","; J; ")="; SM(I,J)
- 3860 LPRINT "ANG OF S("; I; ","; J; ")="; SA(I,J)
- 3870 NEXT: NEXT: LPRINT: RETURN
-