home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / design1 / amp-calc.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1986-08-18  |  17.2 KB  |  388 lines

  1. 10  CLS: PRINT "AMP-CALC: S-PARAMETER AMPLIFIER ANALYSIS PROGRAM V3.2 3/1/86": PRINT
  2. 20  PRINT "      *********************************************
  3. 30  PRINT "      *                                           *
  4. 40  PRINT "      *  BY DR. ALLEN KATZ, CHAIRMAN              *
  5. 50  PRINT "      *  DEPT ELECTRONICS ENGINEERING TECHNOLOGY  *
  6. 60  PRINT "      *  TRENTON STATE COLLEGE, CN550             *
  7. 70  PRINT "      *  TRENTON, NEW JERSEY 8625                 *
  8. 80  PRINT "      *                                           *
  9. 90  PRINT "      *  THE AUTHOR RESERVES RIGHTS TO THIS       *
  10. 100  PRINT "      *  PROGRAM; HOWEVER, COPYING AND USE FOR    *
  11. 110  PRINT "      *  EDUCATIONAL PURPOSES IS ENCOURAGED.      *
  12. 120  PRINT "      *                                           *
  13. 130  PRINT "      *  PLEASE REPORTS ANY ERRORS OR PROBLEMS    *
  14. 140  PRINT "      *  WITH THIS PROGRAM TO THE AUTHOR.         *
  15. 150  PRINT "      *  TEL (609) 771 2487                       *
  16. 160  PRINT "      *                                           *
  17. 170  PRINT "      *********************************************
  18. 180  PI=4*ATN(1): DG=180/PI: Z0=50
  19. 190  DIM SR(2,2), SX(2,2), SM(2,2), SA(2,2), ZR(2), ZX(2)
  20. 200  DIM GR(2), GX(2), GM(2), GA(2), RZ(2), XZ(2), PR(4), PX(4)
  21. 210  DIM CR(2), CX(2), CM(2), CA(2)
  22. 220  DIM XG(2), RG(2), MG(2), AG(2)
  23. 230  REM **************** COMPLEX ARITHMATIC ROUTINES **********
  24. 240  DEF FNMR(AR,AX,BR,BX)=AR*BR-AX*BX
  25. 250  DEF FNMX(AR,AX,BR,BX)=AR*BX+AX*BR
  26. 260  DEF FNDR(AR,AX,BR,BX)=(AR*BR+AX*BX)/(BR^2+BX^2)
  27. 270  DEF FNDX(AR,AX,BR,BX)=(AX*BR-AR*BX)/(BR^2+BX^2)
  28. 280  DEF FNMG(AR,AX)=SQR(AR^2+AX^2)
  29. 290  DEF FNAG(AR,AX) = DG*(ATN(AX/AR)-(SGN(AR)-1)*PI/2)
  30. 300  DEF FNR(MG,AG)=MG*COS(AG/DG)
  31. 310  DEF FNX(MG,AG)=MG*SIN(AG/DG)
  32. 320  REM ********** INITIAL & S PARAMETER I/O *************
  33. 330  PRINT: PRINT "FOR CALCULATING SMALL SIGNAL AMPLIFIER CHARTERISTICS"
  34. 340  PRINT: PRINT "S PARAMETER ANGLES IN DEGREES"
  35. 350  PRINT:INPUT"PARAMETER FORM = ('POL' OR 'RECT' OR 'FILE')";Q$: PRINT
  36. 360  IF Q$="POL" THEN 410 ELSE IF Q$="RECT" THEN 470 ELSE IF Q$="FILE" THEN 370 ELSE 350
  37. 370  PRINT: INPUT "PARAMETER FILE NAME OR FILES OR QUIT"; F$: PRINT
  38. 380  IF F$="FILES" THEN GOTO 390 ELSE IF F$="QUIT" THEN 350 ELSE F$=F$+".S": GOTO 400
  39. 390  FILES "*.S": PRINT: GOTO 370
  40. 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
  41. 410  FOR J=1 TO 2: FOR I=1 TO 2
  42. 420  PRINT "MAG OF S("; I; ","; J; ")=";: INPUT SM(I,J)
  43. 430  PRINT "ANG OF S("; I; ","; J; ")=";: INPUT SA(I,J)
  44. 440  SR(I,J)=FNR(SM(I,J),SA(I,J)): PRINT "REAL S("; I; ","; J; ")="; SR(I,J)
  45. 450  SX(I,J)=FNX(SM(I,J),SA(I,J)): PRINT "IMAG. S("; I; ","; J; ")="; SX(I,J)
  46. 460  PRINT: NEXT: NEXT: GOTO 530
  47. 470  FOR J=1 TO 2: FOR I=1 TO 2
  48. 480  PRINT "REAL OF S("; I; ","; J; ")=";: INPUT SR(I,J)
  49. 490  PRINT "IMG OF S("; I; ","; J; ")=";: INPUT SX(I,J): IF SX(I,J)=0 THEN SX(I,J)=9.9999E-05
  50. 500  SM(I,J)=FNMG(SR(I,J),SX(I,J)): PRINT "MAG S("; I; ","; J; ")="; SM(I,J)
  51. 510  SA(I,J)=FNAG(SR(I,J),SX(I,J)): PRINT "ANGLE S("; I; ","; J; ")="; SA(I,J)
  52. 520  PRINT: NEXT: NEXT
  53. 530  INPUT "WANT TO SAVE FILE (Y/N)"; Q$: IF Q$<>"Y" THEN 570
  54. 540  INPUT"FILE NAME";F$:F$=F$+".S":OPEN "O",#1,F$
  55. 550  FOR I=1 TO 10:FOR J=1 TO 10:DIR$(I,J)=F$:NEXT J:NEXT I
  56. 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
  57. 570  REM ********** COMMON PROD AND N AND M MATRIX *********
  58. 580  PR(1)=FNMR(SR(1,2),SX(1,2),SR(2,1),SX(2,1))
  59. 590  PX(1)=FNMX(SR(1,2),SX(1,2),SR(2,1),SX(2,1))
  60. 600  PR(2)=FNMR(SR(1,1),SX(1,1),SR(2,2),SX(2,2))
  61. 610  PX(2)=FNMX(SR(1,1),SX(1,1),SR(2,2),SX(2,2))
  62. 620  RD=PR(2)-PR(1): XD=PX(2)-PX(1)
  63. 630  RN=SR(2,2)-FNMR(RD,XD,SR(1,1),-SX(1,1))
  64. 640  XN=SX(2,2)-FNMX(RD,XD,SR(1,1),-SX(1,1))
  65. 650  RM=SR(1,1)-FNMR(RD,XD,SR(2,2),-SX(2,2))
  66. 660  XM=SX(1,1)-FNMX(RD,XD,SR(2,2),-SX(2,2))
  67. 670  GOSUB 690: GOSUB 780: GOTO 870
  68. 680  REM ************* SOURCE Z MODULE ********************
  69. 690  PRINT: INPUT "REAL OF SOURCE Z ="; ZR(1): ZR(1)=ZR(1)/Z0
  70. 700  INPUT "IMG OF SOURCE Z ="; ZX(1): IF ZX(1)= 0 THEN ZX(1)=9.9999E-05
  71. 710  ZX(1)=ZX(1)/Z0
  72. 720  GR(1)=FNDR(ZR(1)-1,ZX(1),ZR(1)+1,ZX(1))
  73. 730  GX(1)=FNDX(ZR(1)-1,ZX(1),ZR(1)+1,ZX(1))
  74. 740  GM(1)=FNMG(GR(1),GX(1)): GA(1)=FNAG(GR(1),GX(1))
  75. 750  PRINT "SOURCE REF COEF MAG ="; GM(1)
  76. 760  PRINT "SOURCE REF COEF ANG ="; GA(1): RETURN
  77. 770  REM ************** LOAD Z MODULE **********************
  78. 780  PRINT: INPUT "REAL OF LOAD Z ="; ZR(2): ZR(2)=ZR(2)/Z0
  79. 790  INPUT "IMG OF LOAD Z ="; ZX(2): IF ZX(2)=0 THEN ZX(2)=9.9999E-05
  80. 800  ZX(2)=ZX(2)/Z0
  81. 810  GR(2)=FNDR(ZR(2)-1,ZX(2),ZR(2)+1,ZX(2))
  82. 820  GX(2)=FNDX(ZR(2)-1,ZX(2),ZR(2)+1,ZX(2))
  83. 830  GM(2)=FNMG(GR(2),GX(2)): GA(2)=FNAG(GR(2),GX(2))
  84. 840  PRINT "LOAD REF COEF MAG ="; GM(2)
  85. 850  PRINT "LOAD REF COEF ANG ="; GA(2): RETURN
  86. 860  REM *************** MENUE *************************
  87. 870  PRINT: PRINT " WANT TO :"
  88. 880  PRINT "     CALCULATE Z INPUT ---------------- ZI
  89. 890  PRINT "     CALCULATE Z OUT ------------------ ZO"
  90. 900  PRINT "     CALCULATE VOLTAGE GAIN ----------- VG"
  91. 910  PRINT "     CALCULATE POWER GAIN ------------- PG"
  92. 920  PRINT "     CALCULATE AVAIL PWR GAIN --------- AG"
  93. 930  PRINT "     CALCULATE TRANDUCER PWR GAIN ----- TG"
  94. 940  PRINT "     CALCULATE CONSTANT GAIN CIRCLES -- GC
  95. 950  PRINT "     CALCULATE STABILITY CIRCLES ------ SC
  96. 960  PRINT "     CALCULATE CONSTANT NF CIRCLES ---- NF
  97. 970  PRINT "     CHANGE TERMINAL Z ---------------- CZ"
  98. 980  PRINT "     DISPLAY DEVICE S PARAMETERS ------ SP
  99. 990  PRINT "     END------------------------        END
  100. 1000  PRINT: INPUT "ENTER CODE"; C$
  101. 1010  IF C$="ZI" THEN GOSUB 1090 ELSE IF C$="ZO" THEN GOSUB 1280
  102. 1020  IF C$="VG" THEN GOSUB 1470 ELSE IF C$="PG" THEN GOSUB 1610
  103. 1030  IF C$="AG" THEN GOSUB 1710 ELSE IF C$="TG" THEN GOSUB 1810
  104. 1040  IF C$="GC" THEN GOSUB 2160 ELSE IF C$="SC" THEN GOSUB 2720
  105. 1050  IF C$="NF" THEN GOSUB 3600 ELSE IF C$="SP" THEN GOSUB 3770
  106. 1060  IF C$="CZ" THEN GOSUB 2020
  107. 1070  IF C$="END" THEN END ELSE IF C$="NEW" THEN 340 ELSE 870
  108. 1080  REM ************** ZIN CALC *****************************
  109. 1090  NR=PR(1): NX=PX(1)
  110. 1100  MR=FNMR(NR,NX,GR(2),GX(2)): MX=FNMX(NR,NX,GR(2),GX(2))
  111. 1110  DR=1-FNMR(SR(2,2),SX(2,2),GR(2),GX(2))
  112. 1120  DX=-FNMX(SR(2,2),SX(2,2),GR(2),GX(2))
  113. 1130  RG(1)=SR(1,1)+FNDR(MR,MX,DR,DX): XG(1)=SX(1,1)+FNDX(MR,MX,DR,DX)
  114. 1140  MG(1)=FNMG(RG(1),XG(1)): AG(1)=FNAG(RG(1),XG(1))
  115. 1150  PRINT: PRINT "MAG OF INPUT REF COEF ="; MG(1)
  116. 1160  PRINT "ANG OF INPUT REF COEF ="; AG(1)
  117. 1170  RZ(1)=Z0*FNDR(1+RG(1),XG(1),1-RG(1),-XG(1))
  118. 1180  XZ(1)=Z0*FNDX(1+RG(1),XG(1),1-RG(1),-XG(1))
  119. 1190  PRINT "REAL INPUT Z ="; RZ(1)
  120. 1200  PRINT "IMG INPUT Z ="; XZ(1): IF T9=1 THEN RETURN
  121. 1210  PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
  122. 1220  IF H$<>"Y" THEN RETURN
  123. 1230  LPRINT: LPRINT "MAG OF INPUT REF COEF ="; MG(1)
  124. 1240  LPRINT "ANG OF INPUT REF COEF ="; AG(1)
  125. 1250  LPRINT "REAL INPUT Z ="; RZ(1)
  126. 1260  LPRINT "IMG INPUT Z ="; XZ(1): LPRINT : RETURN
  127. 1270  REM ************* ZOUT CALC ***************************
  128. 1280  NR=PR(1): NX=PX(1)
  129. 1290  MR=FNMR(NR,NX,GR(1),GX(1)): MX=FNMX(NR,NX,GR(1),GX(1))
  130. 1300  DR=1-FNMR(SR(1,1),SX(1,1),GR(1),GX(1))
  131. 1310  DX=-FNMX(SR(1,1),SX(1,1),GR(1),GX(1))
  132. 1320  RG(2)=SR(2,2)+FNDR(MR,MX,DR,DX): XG(2)=SX(2,2)+FNDX(MR,MX,DR,DX)
  133. 1330  MG(2)=FNMG(RG(2),XG(2)): AG(2)=FNAG(RG(2),XG(2))
  134. 1340  PRINT: PRINT "MAG OF OUTPUT REF COEF ="; MG(2)
  135. 1350  PRINT "ANG OF OUTPUT REF COEF ="; AG(2)
  136. 1360  RZ(2)=Z0*FNDR(1+RG(2),XG(2),1-RG(2),-XG(2))
  137. 1370  XZ(2)=Z0*FNDX(1+RG(2),XG(2),1-RG(2),-XG(2))
  138. 1380  PRINT "REAL OUTPUT Z ="; RZ(2)
  139. 1390  PRINT "IMG OUTPUT Z ="; XZ(2): IF T9=1 THEN RETURN
  140. 1400  PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
  141. 1410  IF H$<>"Y" THEN RETURN
  142. 1420  LPRINT: LPRINT "MAG OF OUTPUT REF COEF ="; MG(2)
  143. 1430  LPRINT "ANG OF OUTPUT REF COEF ="; AG(2)
  144. 1440  LPRINT "REAL OUTPUT Z ="; RZ(2)
  145. 1450  LPRINT "IMG OUTPUT Z ="; XZ(2): LPRINT: RETURN
  146. 1460  REM ************ VOLTAGE GAIN CALC *****************
  147. 1470  NR=FNMR(SR(2,1),SX(2,1),1+GR(2),GX(2))
  148. 1480  NX=FNMX(SR(2,1),SX(2,1),1+GR(2),GX(2))
  149. 1490  DR=1-FNMR(SR(2,2),SX(2,2),GR(2),GX(2))
  150. 1500  DX=-FNMX(SR(2,2),SX(2,2),GR(2),GX(2))
  151. 1510  ER=FNMR(DR,DX,1+RG(1),XG(1)): EX=FNMX(DR,DX,1+RG(1),XG(1))
  152. 1520  AR=FNDR(NR,NX,ER,EX): AX=FNDX(NR,NX,ER,EX): AV=FNMG(AR,AX): VA=FNAG(AR,AR)
  153. 1530  PRINT: PRINT "VOLTAGE GAIN ="; AV, "PHASE SHIFT ="; VA
  154. 1540  VG=20*LOG(AV)/LOG(10): PRINT "VOLTAGE GAIN IN DB ="; VG
  155. 1550  PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
  156. 1560  IF H$<>"Y" THEN RETURN
  157. 1570  LPRINT: LPRINT "VOLTAGE GAIN ="; AV, "PHASE SHIFT ="; VA
  158. 1580  LPRINT "VOLTAGE GAIN IN DB ="; VG
  159. 1590  LPRINT: RETURN
  160. 1600  REM *************** POWER GAIN *********************
  161. 1610  NR=SM(2,1)^2*(1-GM(2)^2)
  162. 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)
  163. 1630  PG=NR/DR: PRINT: PRINT "POWER GAIN ="; PG
  164. 1640  PG=10*(LOG(PG)/LOG(10)): PRINT "POWER GAIN IN DB ="; PG
  165. 1650  PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
  166. 1660  IF H$<>"Y" THEN RETURN
  167. 1670  PG=NR/DR: LPRINT: LPRINT "POWER GAIN ="; PG
  168. 1680  PG=10*(LOG(PG)/LOG(10)): LPRINT "POWER GAIN IN DB ="; PG
  169. 1690  LPRINT: RETURN
  170. 1700  REM *************** AVAILABLE POWER *******************
  171. 1710  NR=SM(2,1)^2*(1-GM(1)^2)
  172. 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)
  173. 1730  PG=NR/DR: PRINT: PRINT "AVAILABLE POWER GAIN ="; PG
  174. 1740  PG=10*(LOG(PG)/LOG(10)):PRINT "AVAILABLE POWER GAIN IN DB ="; PG
  175. 1750  PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
  176. 1760  IF H$<>"Y" THEN RETURN
  177. 1770  PG=NR/DR: LPRINT: LPRINT "AVAILABLE POWER GAIN ="; PG
  178. 1780  PG=10*(LOG(PG)/LOG(10)): LPRINT "AVAILABLE POWER GAIN IN DB ="; PG
  179. 1790  LPRINT  : RETURN
  180. 1800  REM ************** TRANDUCER GAIN *********************
  181. 1810  NR=SM(2,1)^2*(1-GM(1)^2)*(1-GM(2)^2)
  182. 1820  R1=1-FNMR(SR(1,1),SX(1,1),GR(1),GX(1))
  183. 1830  X1=-FNMX(SR(1,1),SX(1,1),GR(1),GX(1))
  184. 1840  R2=1-FNMR(SR(2,2),SX(2,2),GR(2),GX(2))
  185. 1850  X2=-FNMX(SR(2,2),SX(2,2),GR(2),GX(2))
  186. 1860  R3=FNMR(GR(1),GX(1),GR(2),GX(2))
  187. 1870  X3=FNMX(GR(1),GX(1),GR(2),GX(2))
  188. 1880  DR=FNMR(R1,X1,R2,X2)-FNMR(PR(1),PX(1),R3,X3)
  189. 1890  DX=FNMX(R1,X1,R2,X2)-FNMX(PR(1),PX(1),R3,X3)
  190. 1900  DM=FNMG(DR,DX): TG=NR/DM^2
  191. 1910  PRINT: PRINT "TRANSDUCER POWER GAIN ="; TG
  192. 1920  TD=10*(LOG(TG)/LOG(10)): PRINT "TRANSDUCER GAIN IN DB ="; TD
  193. 1930  G0=SM(2,1)^2: GS=(1-GM(1)^2)/(FNMG(R1,X1))^2: GL=(1-GM(2)^2)/(FNMG(R2,X2))^2
  194. 1940  GU=G0*GS*GL: PRINT "UNILATERAL TRANSDUCER GAIN ="; GU
  195. 1950  UD=10*(LOG(GU)/LOG(10)): PRINT "UNILATERAL GAIN IN DB ="; UD
  196. 1960  UM=SM(2,1)^2/((1-SM(1,1)^2)*(1-SM(2,2)^2))
  197. 1970  PRINT "MAXIMUM UNILATERAL GAIN ="; UM
  198. 1980  MD=10*LOG(UM)/LOG(10): PRINT "MAX UNILATERAL GAIN IN DB ="; MD
  199. 1990  UF=SM(1,1)*SM(1,2)*SM(2,1)*SM(2,2)/((1-SM(1,1)^2)*(1-SM(2,2)^2))
  200. 2000  UL=1/(1+UF^2): UH=1/(1-UF^2)
  201. 2010  PRINT "UNILAT. FIGURE OF MERIT ="; UF; " ("; UL; "-"; UH; " )"
  202. 2020  PRINT: INPUT "WANT TO CHANGE ZIN/ZOUT (ZI/ZO/BOTH/NO)"; Q$
  203. 2030  T9=1: IF Q$="ZI" THEN GOSUB 690: GOSUB 1280: GOTO 1810
  204. 2040  IF Q$="ZO" THEN GOSUB 780: GOSUB 1090: GOTO 1810
  205. 2050  IF Q$="BOTH" THEN GOSUB 690: GOSUB 1280: GOSUB 780: GOSUB 1090: GOTO 1810
  206. 2060  PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$: T9=0
  207. 2070  IF H$<>"Y" THEN RETURN
  208. 2080  LPRINT: LPRINT "TRANSDUCER POWER GAIN ="; TG
  209. 2090  LPRINT "TRANSDUCER GAIN IN DB ="; TD
  210. 2100  LPRINT "UNILATERAL TRANSDUCER GAIN ="; GU
  211. 2110  LPRINT "UNILATERAL GAIN IN DB ="; UD
  212. 2120  LPRINT "MAXIMUM UNILATERAL GAIN ="; UM
  213. 2130  LPRINT "MAX UNILATERAL GAIN IN DB ="; MD
  214. 2140  LPRINT "UNILAT. FIGURE OF MERIT ="; UF; " ("; UL; "-"; UH; " )": LPRINT: RETURN
  215. 2150  REM ************* CONSTANT GAIN CIRCLES ****************
  216. 2160  R1=1-FNMR(SR(1,1),SX(1,1),GR(1),GX(1))
  217. 2170  X1=-FNMX(SR(1,1),SX(1,1),GR(1),GX(1))
  218. 2180  R2=1-FNMR(SR(2,2),SX(2,2),GR(2),GX(2))
  219. 2190  X2=-FNMX(SR(2,2),SX(2,2),GR(2),GX(2))
  220. 2200  G0=SM(2,1)^2: GS=(1-GM(1)^2)/(FNMG(R1,X1))^2: GL=(1-GM(2)^2)/(FNMG(R2,X2))^2
  221. 2210  B0=10*(LOG(G0)/LOG(10)): BS=10*LOG(GS)/LOG(10): BL=10*(LOG(GL)/LOG(10))
  222. 2220  PRINT: PRINT "G0="; G0, "GS="; GS, "GL="; GL
  223. 2230  PRINT "G0="; B0, "GS="; BS, "GL="; BL; "  IN DB"
  224. 2240  M1=1/(1-SM(1,1)^2): M2=1/(1-SM(2,2)^2)
  225. 2250  B1=10*(LOG(M1)/LOG(10)): B2=10*(LOG(M2)/LOG(10))
  226. 2260  PRINT "MAX GS="; M1, "MAX GL="; M2
  227. 2270  PRINT "MAX GS="; B1, "MAX GL="; B2; "  IN DB"
  228. 2280  CM=FNMG(SR(1,1),-SX(1,1)): CA=FNAG(SR(1,1),-SX(1,1))
  229. 2290  PRINT: PRINT "MAX GAIN WITH SOURCE REFL COEF MAG ="; CM; " ANGLE ="; CA
  230. 2300  ZR=Z0*FNDR(1+SR(1,1),-SX(1,1),1-SR(1,1),SX(1,1))
  231. 2310  ZX=Z0*FNDX(1+SR(1,1),-SX(1,1),1-SR(1,1),SX(1,1))
  232. 2320  PRINT "MAX SOURCE R ="; ZR, "X ="; ZX
  233. 2330  KM=FNMG(SR(2,2),-SX(2,2)): KA=FNAG(SR(2,2),-SX(2,2))
  234. 2340  PRINT: PRINT "MAX GAIN WITH LOAD REFL COEF MAG ="; KM; " ANGLE ="; KA
  235. 2350  QR=Z0*FNDR(1+SR(2,2),-SX(2,2),1-SR(2,2),SX(2,2))
  236. 2360  QX=Z0*FNDX(1+SR(2,2),-SX(2,2),1-SR(2,2),SX(2,2))
  237. 2370  PRINT "MAX LOAD R ="; QR, "X ="; QX
  238. 2380  PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
  239. 2390  IF H$<>"Y" THEN 2490
  240. 2400  LPRINT: LPRINT "G0="; G0, "GS="; GS, "GL="; GL
  241. 2410  LPRINT "G0="; B0, "GS="; BS, "GL="; BL; "  IN DB"
  242. 2420  LPRINT "MAX GS="; M1, "MAX GL="; M2
  243. 2430  LPRINT "MAX GS="; B1, "MAX GL="; B2; "  IN DB"
  244. 2440  LPRINT: LPRINT "MAX GAIN WITH SOURCE REFL COEF MAG ="; CM; " ANGLE ="; CA
  245. 2450  LPRINT "MAX SOURCE R ="; ZR, "X ="; ZX
  246. 2460  LPRINT: LPRINT "MAX GAIN WITH LOAD REFL COEF MAG ="; KM; " ANGLE ="; KA
  247. 2470  LPRINT "MAX LOAD R ="; QR, "X ="; QX
  248. 2480  REM ************** GAIN CHANGE **********************
  249. 2490  G1=GS/M1: D1=G1*SM(1,1)/(1-SM(1,1)^2*(1-G1))
  250. 2500  R1=SQR(1-G1)*(1-SM(1,1)^2)/(1-SM(1,1)^2*(1-G1))
  251. 2510  PRINT: PRINT "DIST. FROM CENTER S.C. TO CENT. OF SOURCE GAIN CIR. ="; D1
  252. 2520  PRINT "RADIUS OF SOURCE GAIN CIRCLE ="; R1
  253. 2530  G2=GL/M2: D2=G2*SM(2,2)/(1-SM(2,2)^2*(1-G2))
  254. 2540  R2=SQR(1-G2)*(1-SM(2,2)^2)/(1-SM(2,2)^2*(1-G2))
  255. 2550  PRINT: PRINT "DIST. FROM CENTER S.C. TO CENT. OF LOAD GAIN CIR. ="; D2
  256. 2560  PRINT "RADIUS OF LOAD GAIN CIRCLE ="; R2
  257. 2570  PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
  258. 2580  IF H$<>"Y" THEN 2630 ELSE LPRINT: LPRINT "GS IN DB"; BS, "GL IN DB"; BL
  259. 2590  LPRINT "DIST. FROM CENTER S.C. TO CENT. OF SOURCE GAIN CIR. ="; D1
  260. 2600  LPRINT "RADIUS OF SOURCE GAIN CIRCLE ="; R1
  261. 2610  LPRINT: LPRINT "DIST. FROM CENTER S.C. TO CENT. OF LOAD GAIN CIR. ="; D2
  262. 2620  LPRINT "RADIUS OF LOAD GAIN CIRCLE ="; R2
  263. 2630  PRINT: INPUT "WANT TO CHANGE GAIN (GS/GL/BOTH/NO)"; Q$
  264. 2640  IF Q$<>"GL" AND Q$<>"GS" AND Q$<>"BOTH" THEN RETURN
  265. 2650  IF Q$="GS" OR Q$="BOTH" THEN INPUT "NEW GS IN DB"; BS
  266. 2660  IF Q$="GL" OR Q$="BOTH" THEN INPUT "NEW GL IN DB"; BL
  267. 2670  GS=10^(BS/10): GL=10^(BL/10)
  268. 2680  IF GS>M1 THEN PRINT "GS TOO LARGE, MAX VALUE ="; M1: GOTO 2630
  269. 2690  IF GL>M2 THEN PRINT "GL TOO LARGE, MAX VALUE ="; M2: GOTO 2630
  270. 2700  GOTO 2490
  271. 2710  REM ************* STABILITY ****************************
  272. 2720  K=(1+(FNMG(RD,XD))^2-SM(1,1)^2-SM(2,2)^2)/(2*FNMG(PR(1),PX(1)))
  273. 2730  PRINT: PRINT "AMPLIFIER WILL BE STABLE WITH CONJUGATE MATCHED SOURCE AND LOAD IF K>1: K ="; K
  274. 2740  IF K<1 THEN PRINT: PRINT "UNSTABLE": PRINT: GOTO 3210
  275. 2750  B1=1+SM(1,1)^2-SM(2,2)^2-(FNMG(RD,XD))^2
  276. 2760  B2=1+SM(2,2)^2-SM(1,1)^2-(FNMG(RD,XD))^2
  277. 2770  R=SQR(B1^2-4*(FNMG(RM,XM))^2)
  278. 2780  IF B1>0 THEN P1=(B1+R)/(2*FNMG(RM,XM)^2) ELSE P1=(B1-R)/(2*FNMG(RM,XM)^2)
  279. 2790  RC=RM*P1: XC=-XM*P1: SM=1/FNMG(RC,XC): SA=FNAG(RC,XC)
  280. 2800  SR=FNR(SM,SA): SX=FNX(SM,SA)
  281. 2810  RS=Z0*FNDR(1+SR,SX,1-SR,-SX): XS=Z0*FNDX(1+SR,SX,1-SR,-SX)
  282. 2820  PRINT: PRINT "OPT. SOURCE REF COEF MAG ="; SM
  283. 2830  PRINT "OPT. SOURCE REF COEF ANG ="; SA
  284. 2840  PRINT "OPT. REAL OF SOURCE Z ="; RS
  285. 2850  PRINT "OPT. IMG OF SOURCE Z ="; XS
  286. 2860  R=SQR(B2^2-4*(FNMG(RN,XN))^2)
  287. 2870  IF B2>0 THEN P2=(B2+R)/(2*FNMG(RN,XN)^2) ELSE P2=(B2-R)/(2*FNMG(RN,XN)^2)
  288. 2880  RC=RN*P2: XC=-XN*P2: LM=1/FNMG(RC,XC): LA=FNAG(RC,XC)
  289. 2890  LR=FNR(LM,LA): LX=FNX(LM,LA)
  290. 2900  RL=Z0*FNDR(1+LR,LX,1-LR,-LX): XL=Z0*FNDX(1+LR,LX,1-LR,-LX)
  291. 2910  PRINT: PRINT "OPT. LOAD REF COEF MAG ="; LM
  292. 2920  PRINT "OPT. LOAD REF COEF ANG ="; LA
  293. 2930  PRINT "OPT. REAL OF LOAD Z ="; RL
  294. 2940  PRINT "OPT. IMG OF LOAD Z ="; XL
  295. 2950  NR=SM(2,1)^2*(1-SM^2)*(1-LM^2)
  296. 2960  R1=1-FNMR(SR(1,1),SX(1,1),SR,SX)
  297. 2970  X1=-FNMX(SR(1,1),SX(1,1),SR,SX)
  298. 2980  R2=1-FNMR(SR(2,2),SX(2,2),LR,LX)
  299. 2990  X2=-FNMX(SR(2,2),SX(2,2),LR,LX)
  300. 3000  R3=FNMR(SR,SX,LR,LX)
  301. 3010  X3=FNMX(SR,SX,LR,LX)
  302. 3020  DR=FNMR(R1,X1,R2,X2)-FNMR(PR(1),PX(1),R3,X3)
  303. 3030  DX=FNMX(R1,X1,R2,X2)-FNMX(PR(1),PX(1),R3,X3)
  304. 3040  DM=FNMG(DR,DX): TG=NR/DM^2
  305. 3050  PRINT: PRINT "OPT. MATCH AVAILABLE PWR GAIN ="; TG
  306. 3060  TD=10*(LOG(TG)/LOG(10)): PRINT "TRANSDUCER GAIN IN DB ="; TD
  307. 3070  PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
  308. 3080  IF H$<>"Y" THEN 3210
  309. 3090  LPRINT: LPRINT "STABILITY CONSTANT K = "; K
  310. 3100  LPRINT "OPT. MATCH AVAILABLE PWR GAIN ="; TG
  311. 3110  LPRINT "TRANSDUCER GAIN IN DB ="; TD
  312. 3120  LPRINT: LPRINT "OPT. SOURCE REF COEF MAG ="; SM
  313. 3130  LPRINT "OPT. SOURCE REF COEF ANG ="; SA
  314. 3140  LPRINT "OPT. REAL OF SOURCE Z ="; RS
  315. 3150  LPRINT "OPT. IMG OF SOURCE Z ="; XS
  316. 3160  LPRINT: LPRINT "OPT. LOAD REF COEF MAG ="; LM
  317. 3170  LPRINT "OPT. LOAD REF COEF ANG ="; LA
  318. 3180  LPRINT "OPT. REAL OF LOAD Z ="; RL
  319. 3190  LPRINT "OPT. IMG OF LOAD Z ="; XL: LPRINT
  320. 3200  REM ****************************************************
  321. 3210  PRINT: PRINT "AMPLIFIER WILL BE UNCONDITIONALLY STABLE IF:"
  322. 3220  PRINT "1. SM(1,1)<1: SM(1,1) ="; SM(1,1)
  323. 3230  PRINT "2. SM(2,2)<1: SM(2,2) ="; SM(2,2)
  324. 3240  SF=ABS((SM(1,2)*SM(2,1)-FNMG(RM,-XM))/(SM(1,1)^2-FNMG(RD,XD)^2))
  325. 3250  LF=ABS((SM(1,2)*SM(2,1)-FNMG(RN,-XN))/(SM(2,2)^2-FNMG(RD,XD)^2))
  326. 3260  PRINT "3. CL-RL>1: CL-RL ="; LF
  327. 3270  PRINT "4. CS-RS>1: CS-RS ="; SF
  328. 3280  RL=ABS(SM(1,2)*SM(2,1)/(SM(2,2)^2-FNMG(RD,XD)^2))
  329. 3290  RS=ABS(SM(1,2)*SM(2,1)/(SM(1,1)^2-FNMG(RD,XD)^2))
  330. 3300  NR=SR(2,2)-FNMR(RD,XD,SR(1,1),-SX(1,1))
  331. 3310  NX=SX(2,2)-FNMX(RD,XD,SR(1,1),-SX(1,1))
  332. 3320  CR(2)=NR/(SM(2,2)^2-FNMG(RD,XD)^2)
  333. 3330  CX(2)=-NX/(SM(2,2)^2-FNMG(RD,XD)^2)
  334. 3340  NR=SR(1,1)-FNMR(RD,XD,SR(2,2),-SX(2,2))
  335. 3350  NX=SX(1,1)-FNMX(RD,XD,SR(2,2),-SX(2,2))
  336. 3360  CR(1)=NR/(SM(1,1)^2-FNMG(RD,XD)^2)
  337. 3370  CX(1)=-NX/(SM(1,1)^2-FNMG(RD,XD)^2)
  338. 3380  CM(2)=FNMG(CR(2),CX(2)): CA(2)=FNAG(CR(2),CX(2))
  339. 3390  CM(1)=FNMG(CR(1),CX(1)): CA(1)=FNAG(CR(1),CX(1))
  340. 3400  PRINT: PRINT "LOCUS OF LOAD COEF FOR UNSTABLE CONDITION"
  341. 3410  PRINT "CIRCLE CENTER: MAG ="; CM(2), "ANGLE ="; CA(2)
  342. 3420  PRINT "CIRCLE RADIUS ="; RL
  343. 3430  PRINT: PRINT "LOCUS OF SOURCE COEF FOR UNSTABLE CONDITION"
  344. 3440  PRINT "CIRCLE CENTER: MAG ="; CM(1), "ANGLE ="; CA(1)
  345. 3450  PRINT "CIRCLE RADIUS ="; RS
  346. 3460  PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
  347. 3470  IF H$<>"Y" THEN RETURN
  348. 3480  LPRINT: LPRINT "AMPLIFIER WILL BE UNCONDITIONALLY STABLE IF:"
  349. 3490  LPRINT "1. SM(1,1)<1: SM(1,1) ="; SM(1,1)
  350. 3500  LPRINT "2.  SM(2,2)<1: SM(2,2) ="; SM(2,2)
  351. 3510  LPRINT "3. CL-RL>1: GL-RL ="; LF
  352. 3520  LPRINT "4. CS-RS>1: CS-RS ="; SF
  353. 3530  LPRINT: LPRINT "LOCUS OF LOAD COEF FOR UNSTABLE CONDITION"
  354. 3540  LPRINT "CIRCLE CENTER: MAG ="; CM(2), "ANGLE ="; CA(2)
  355. 3550  LPRINT "CIRCLE RADIUS ="; RL
  356. 3560  LPRINT: LPRINT "LOCUS OF SOURCE COEF FOR UNSTABLE CONDITION"
  357. 3570  LPRINT "CIRCLE CENTER: MAG ="; CM(1), "ANGLE ="; CA(1)
  358. 3580  LPRINT "CIRCLE RADIUS ="; RS: LPRINT: RETURN
  359. 3590  REM ****************** NF CIRCLE CALC *******************
  360. 3600  PRINT: INPUT "MIN. NF IN DB ="; FM: FM=10^(FM/10)
  361. 3610  INPUT "MAG OF SOURCE COEF FOR MIN NF ="; MC
  362. 3620  INPUT "ANGLE OF COEF FOR MIN NF ="; AG
  363. 3630  INPUT "NF FOR Z0 SOURCE ="; F0: F0=10^(F0/10)
  364. 3640  PRINT: INPUT "NF IN DB FOR COEF CALC ="; IC: FI=10^(IC/10)
  365. 3650  RC=FNR(MC,AC): XC=FNX(MC,AC): G0=FNMG(1+RC,XC)^2
  366. 3660  EN=(F0-FM)*G0/MC^2: NI=(FI-FM)*G0/EN
  367. 3670  EM=MC/(1+NI): RE=SQR(NI^2+NI*(1-MC^2))/(1+NI)
  368. 3680  PRINT: PRINT "CENTER OF CONST. NF COEF CIR AT MAG ="; EM, "ANGLE ="; AG
  369. 3690  PRINT "RADIUS OF CIRCLE ="; RE
  370. 3700  PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
  371. 3710  IF H$<>"Y" THEN 3740 ELSE LPRINT: LPRINT,"NF COEF ="; IC
  372. 3720  LPRINT "CENTER OF CONST. NF COEF CIR AT MAG ="; EM, "ANGLE ="; AC
  373. 3730  LPRINT "RADIUS OF CIRCLE ="; RE
  374. 3740  PRINT: INPUT "WANT TO TRY ANOTHER COEF (Y/N)"; Q$
  375. 3750  IF Q$="Y" THEN 3640 ELSE RETURN
  376. 3760  REM ************* S PARAMETER DISPLAY ****************
  377. 3770  PRINT: PRINT "S PARAMETERS FILE "; F$
  378. 3780  FOR J=1 TO 2: FOR I=1 TO 2
  379. 3790  PRINT "MAG OF S("; I; ","; J; ")="; SM(I,J)
  380. 3800  PRINT "ANG OF S("; I; ","; J; ")="; SA(I,J): NEXT: NEXT
  381. 3810  PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
  382. 3820  IF H$<>"Y" THEN RETURN
  383. 3830  LPRINT: LPRINT, "S PARAMETERS FILE "; F$
  384. 3840  FOR J=1 TO 2: FOR I=1 TO 2
  385. 3850  LPRINT "MAG OF S("; I; ","; J; ")="; SM(I,J)
  386. 3860  LPRINT "ANG OF S("; I; ","; J; ")="; SA(I,J)
  387. 3870  NEXT: NEXT: LPRINT: RETURN
  388.