home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / rfdesign / rfdesn.bas < prev   
BASIC Source File  |  1987-02-09  |  10KB  |  335 lines

  1. 10 REM *********************************************
  2. 20 REM *                                           *
  3. 30 REM *       RF DESIGN AID PROGRAM                *
  4. 40 REM *                                           *
  5. 50 REM *         C.  1984  S. REIN                 *
  6. 60 REM *                                           *
  7. 70 REM *********************************************
  8. 80 DIM A(5,2),B(5,2),A1(10),A2(10),A3(10),A6(10),A7(10),C1(10),N(10)
  9. 90 DIM R(10),B8(10),B9(10),P3(10),P4(10),P5(10),P6(10),P7(10),P8(10)
  10. 95 CLS
  11. 100 PRINT "RF DESIGN AID PROGRAM"
  12. 110 PRINT "S. REIN 1/19/84"
  13. 120 REM****PRINT MENU****
  14. 130 PRINT "ENTER DESIRED SELECTION:"
  15. 140 PRINT "1) INPUT MATCH WITH CONSTANT GAIN CIRCLES"
  16. 150 PRINT "2) INPUT MATCH WITH CONSTANT NOISE FIGURE CIRCLES"
  17. 160 PRINT "3) OUTPUT MATCH WITH CONSTANT GAIN CIRCLES"
  18. 170 PRINT "4) OUTPUT MATCH WITH CONSTANT OUTPUT POWER CONTOURS"
  19. 180 PRINT "5) OUPUT REFLECTION COEFFICIENT GIVEN SOURCE REFLECTION COEFFICIENT"
  20. 200 PRINT "6) INPUT REFLECTION COEFFICIENT GIVEN LOAD REFLECTION COEFFICIENT"
  21. 220 PRINT "7) EXIT PROGRAM"
  22. 240 INPUT S
  23. 250 ON S GOTO 260,1600,260,1960,260,260,2850
  24. 256 GOTO 260
  25. 260 PRINT "ENTER S11, S21, S12, AND S22"
  26. 270 A$(1)="S11":A$(2)="S21":A$(3)="S12":A$(4)="S22"
  27. 280 FOR K=1 TO 4
  28. 290 PRINT A$(K)
  29. 300 INPUT "MAGNITUDE";A(K,1)
  30. 310 INPUT "ANGLE";A(K,2)
  31. 320 M=A(K,1)
  32. 330 A=A(K,2)/57.2958
  33. 340 GOSUB 2940
  34. 350 B(K,1)=R
  35. 360 B(K,2)=I
  36. 365 NEXT K
  37. 366 ON S GOTO 370,1600,370,1960,2420,2420,130,2850
  38. 370 REM**********CONSTANT GAIN CIRCLE COMPUTATION**********
  39. 380 D1=B(1,1)*B(4,1)-B(1,2)*B(4,2)-(B(2,1)*B(3,1)-B(2,2)*B(3,2))
  40. 390 D2=B(1,2)*B(4,1)+B(1,1)*B(4,2)-(B(2,2)*B(3,1)+B(2,1)*B(3,2))
  41. 400 R=D1
  42. 410 I=D2
  43. 420 GOSUB 2870
  44. 430 D3=M
  45. 440 D4=A
  46. 450 B1=1+A(1,1)^2-A(4,1)^2-D3^2
  47. 460 B2=1+A(4,1)^2-A(1,1)^2-D3^2
  48. 470 C1=B(1,1)-(D1*B(4,1)+D2*B(4,2))
  49. 480 C3=B(1,2)-(D2*B(4,1)-D1*B(4,2))
  50. 490 C2=B(4,1)-(D1*B(1,1)+D2*B(1,2))
  51. 500 C4=B(4,2)-(D2*B(1,1)-D1*B(1,2))
  52. 510 R=C1
  53. 520 I=C3
  54. 530 GOSUB 2870
  55. 540 C5=M
  56. 550 C7=A
  57. 560 R=C2
  58. 570 I=C4
  59. 580 GOSUB 2870
  60. 590 C6=M
  61. 600 C8=A
  62. 610 K1=(1+D3^2-A(1,1)^2-A(4,1)^2)/(2*A(2,1)*A(3,1))
  63. 620 IF K1<=1 THEN 770
  64. 630 G1=C1*(B1-SGN(B1)*SQR(B1^2-4*C5^2))/(2*C5^2)
  65. 640 G3=-(C3*(B1-SGN(B1)*SQR(B1^2-4*C5^2))/(2*C5^2))
  66. 650 G2=C2*(B2-SGN(B2)*SQR(B2^2-4*C6^2))/(2*C6^2)
  67. 660 G4=-(C4*(B2-SGN(B2)*SQR(B2^2-4*C6^2))/(2*C6^2))
  68. 670 R=G1
  69. 680 I=G3
  70. 690 GOSUB 2870
  71. 700 G5=M
  72. 710 G7=A
  73. 720 R=G2
  74. 730 I=G4
  75. 740 GOSUB 2870
  76. 750 G6=M
  77. 760 G8=A
  78. 770 R1=C1/(A(1,1)^2-D3^2)
  79. 780 R3=-(C3/(A(1,1)^2-D3^2))
  80. 790 R9=A(2,1)*A(3,1)/(A(1,1)^2-D3^2)
  81. 800 R=R1
  82. 810 I=R3
  83. 820 GOSUB 2870
  84. 830 R5=M
  85. 840 R7=A
  86. 850 R2=C2/(A(4,1)^2-D3^2)
  87. 860 R4= -(C4/(A(4,1)^2-D3^2))
  88. 870 R=R2
  89. 880 I=R4
  90. 890 GOSUB 2870
  91. 900 R6=M
  92. 910 R8=A
  93. 920 R0=A(2,1)*A(3,1)/ (A(4,1)^2-D3^2)
  94. 930 IF K1<=1 THEN 960
  95. 940 A1(1)=ABS(1-G5^2)/(1-A(4,1)^2+G5^2*(A(1,1)^2-D3^2)-2*(G1*C1-G3*C3))
  96. 950 GOTO 970
  97. 960 A1(1)=1/(A(3,1)*A(2,1))
  98. 970 FOR N=2 TO 5
  99. 980 A1(N)=A1(N-1)*.79438235#
  100. 990 NEXT N
  101. 1000 M1=A(1,1)^2-D3^2
  102. 1010 M2=A(4,1)^2-D3^2
  103. 1020 IF K1>1 THEN X=2 ELSE X=1
  104. 1030 FOR N=X TO 5
  105. 1040 A3(N)=SQR(1-2*K1*A(2,1)*A(3,1)*A1(N)+(A(2,1)*A(3,1)*A1(N))^2)/(1+M1*A1(N))
  106. 1050 A0(N)=SQR(1-2*K1*A(2,1)*A(3,1)*A1(N)+(A(2,1)*A(3,1)*A1(N))^2)/(1+M1*A1(N))
  107. 1060 A4=C1*A1(N)/(1+M1*A1(N))
  108. 1070 A5=-C3*A1(N)/(1+M1*A1(N))
  109. 1080 R=A4
  110. 1090 I=A5
  111. 1100 GOSUB 2870
  112. 1110 A6(N)=M
  113. 1120 A7(N)=A
  114. 1130 A8=C2*A1(N)/(1+M2*A1(N))
  115. 1140 A9=-(C4*A1(N)/(1+M2*A1(N)))
  116. 1150 R=A8
  117. 1160 I=A9
  118. 1170 GOSUB 2870
  119. 1180 B8(N)=M
  120. 1190 B9(N)=A
  121. 1200 A2(N)=10*LOG(A1(N)*A(2,1)^2)/LOG(10)
  122. 1210 NEXT N
  123. 1220 A2(1)=10*LOG(A1(1)*A(2,1)^2)/LOG(10)
  124. 1230 GOSUB 2980
  125. 1240 IF K1<=1 THEN 1300
  126. 1250 LPRINT
  127. 1260 LPRINT USING "_MAXIMUM AVAILABLE GAIN:  ##.## _dB";A2(1)
  128. 1270 LPRINT USING"_OPTIMUM GAIN SOURCE REFLECTION COEFFICIENT=#.##_<####";G5,G7*57.2958
  129. 1280 LPRINT USING"_OPTIMUM GAIN LOAD REFLECTION COEFFICIENT=#.##_<####";G6,G8*57.2958
  130. 1290 GOTO 1320
  131. 1300 LPRINT
  132. 1310 LPRINT USING "_MAXIMUM STABLE GAIN: ##.## _dB";A2(1)
  133. 1320 LPRINT
  134. 1330 LPRINT "CONSTANT GAIN CIRCLES ON SMITH CHART:"
  135. 1340 LPRINT
  136. 1350 IF S=1 THEN LPRINT "INPUT PLANE" ELSE LPRINT "OUTPUT PLANE"
  137. 1360 FOR N=X TO 5
  138. 1370 LPRINT
  139. 1380 LPRINT USING "##.## _dB GAIN CIRCLE";A2(N)
  140. 1390 LPRINT
  141. 1400 IF S=1 THEN T=A3(N) ELSE T=A0(N)
  142. 1410 IF S=1 THEN U=A6(N) ELSE U=B8(N)
  143. 1420 IF S=1 THEN W=A7(N) ELSE W=B9(N)
  144. 1430 LPRINT USING "_CENTER=#.##_<####";U,W*57.2958
  145. 1440 LPRINT USING "_RADIUS=#.##";T
  146. 1450 NEXT N
  147. 1460 LPRINT
  148. 1470 LPRINT USING "_STABILITY FACTOR (K)=##.##";K1
  149. 1480 IF K1>1 THEN 95
  150. 1490 LPRINT
  151. 1500 LPRINT "STABILITY CIRCLES ON SMITH CHART:"
  152. 1510 LPRINT:LPRINT "INPUT PLANE"
  153. 1520 LPRINT
  154. 1530 LPRINT USING "_CENTER=#.##_<####";R5,R7*57.2958
  155. 1540 LPRINT USING "_RADIUS=#.##";R9
  156. 1550 LPRINT:LPRINT "OUTPUT PLANE"
  157. 1560 LPRINT
  158. 1570 LPRINT USING "_CENTER=#.##_<####";R6,R8*57.2958
  159. 1580 LPRINT USING "_RADIUS=#.##";R0
  160. 1585 CLS
  161. 1590 GOTO 130
  162. 1600 REM ********CONSTANT NOISE FIGURE CIRCLE COMPUTATION********
  163. 1610 PRINT "ENTER OPTIMUM NOISE SOURCE REFLECTION COEFFICIENT"
  164. 1620 INPUT "MAGNITUDE";A(5,1)
  165. 1630 INPUT "ANGLE";A(5,2)
  166. 1640 M=A(5,1)
  167. 1650 A=A(5,2)/57.2958
  168. 1660 GOSUB 2940
  169. 1670 B(5,1)=R
  170. 1680 B(5,2)=I
  171. 1690 PRINT "ENTER Rn (NORMALIZED)"
  172. 1700 INPUT Z
  173. 1710 PRINT "ENTER MINIMUM MOISE FIGURE IN dB"
  174. 1720 INPUT NF1
  175. 1722 PRINT "ENTER NOISE FIGURE STEPSIZE IN dB"
  176. 1724 INPUT S
  177. 1730 F1=10^(NF1/10)
  178. 1740 N(1)=0
  179. 1750 FOR N=2 TO 5
  180. 1760 NF2=NF1+(N-1)*S
  181. 1770 F2=10^(NF2/10)
  182. 1780 N(N)=(F2-F1)/(4*Z)*((1+B(5,1))^2+B(5,2)^2)
  183. 1790 C(N)=A(5,1)/(1+N(N))
  184. 1800 R(N)=SQR(N(N)^2+N(N)*(1-A(5,1)^2))/(1+N(N))
  185. 1810 NEXT N
  186. 1820 LPRINT
  187. 1830 LPRINT USING "_MINIMUM NOISE FIGURE: #.#_dB";NF1
  188. 1840 LPRINT USING "_OPTIMUM NOISE SOURCE REFLECTION COEFFICIENT=#.###_<####";A(5,1),A(5,2)
  189. 1850 LPRINT USING "_Rn=#.##";Z
  190. 1860 LPRINT
  191. 1870 LPRINT "CONSTANT NOISE FIGURE CIRCLES ON SMITH CHART:"
  192. 1880 FOR N=2 TO 5
  193. 1890 LPRINT
  194. 1900 LPRINT USING "#.#_dB NOISE FIGURE CIRCLE:";NF1+(N-1)*S
  195. 1910 LPRINT
  196. 1920 LPRINT USING "_CENTER=#.##_<####";C(N),A(5,2)
  197. 1930 LPRINT USING "_RADIUS=#.##";R(N)
  198. 1940 NEXT N
  199. 1945 CLS
  200. 1950 GOTO 130
  201. 1960 REM**********CONSTANT OUTPUT POWER CONTOUR COMPUTATION***********
  202. 1965 PRINT "ENTER Vds IN VOLTS"
  203. 1967 INPUT V
  204. 1970 PRINT "ENTER Id IN MILLIAMPS"
  205. 1980 INPUT I1
  206. 2020 P1=10*LOG(V*I1/2)/LOG(10)-2
  207. 2030 P2=I1/V
  208. 2040 PRINT "ENTER SYSTEM IMPEDANCE IN OHMS"
  209. 2050 INPUT Z0
  210. 2060 Y0=1000/Z0
  211. 2070 PRINT "ENTER DRAIN CAPACITANCE IN pF"
  212. 2080 INPUT C:C=C*1E-12
  213. 2090 PRINT "ENTER BONDWIRE INDUCTANCE IN nH"
  214. 2100 INPUT L:L=L*1E-09
  215. 2110 PRINT "ENTER FREQUENCY IN GHz"
  216. 2120 INPUT FREQ:FREQ=FREQ*1E+09
  217. 2130 LPRINT
  218. 2140 LPRINT USING "_Id =####_ MILLIAMPS";I1
  219. 2150 LPRINT
  220. 2160 LPRINT USING "_Vds=##.#_ VOLTS";V
  221. 2170 LPRINT
  222. 2180 LPRINT USING "_P1dB=+##.#_ dBm";P1
  223. 2190 LPRINT
  224. 2200 LPRINT USING "_SYSTEM IMPEDANCE=###.#_ OHMS";Z0
  225. 2210 LPRINT
  226. 2212 LPRINT USING "_DRAIN CAPACITANCE=##.##_PF";C*1E+12
  227. 2214 LPRINT
  228. 2216 LPRINT USING "_BONDWIRE INDUCTANCE=##.##_nH";L*1E+09
  229. 2217 LPRINT
  230. 2218 LPRINT USING "_FREQUENCY=##.##_ GHz";FREQ*1E-09
  231. 2219 LPRINT
  232. 2220 LPRINT "CONSTANT OUTPUT POWER CONTOURS ON SMITH CHART"
  233. 2230 LPRINT
  234. 2240 LPRINT USING "+##.#_ dBm POWER POINT:";P1
  235. 2250 ZL=1000/P2
  236. 2260 ZL1=ZL/((6.28319*FREQ*C*ZL)^2+1)/Z0
  237. 2270 ZL2=(6.28319*FREQ*C*ZL^2/((6.28319*FREQ*C*ZL)^2+1)-6.28319*FREQ*L)/Z0
  238. 2280 LPRINT
  239. 2290 LPRINT USING "_Zopt(REAL)=##.##_    Zopt(IM)=##.##";ZL1,ZL2
  240. 2291 FOR N=2 TO 5
  241. 2292 P3(N)=P2*.794382^(N-1)/Y0
  242. 2294 P4(N)=ZL*.794382^(N-1)/Z0
  243. 2296 P5(N)=P3(N)/(1+P3(N))
  244. 2300 P6(N)=P4(N)/(1+P4(N))
  245. 2310 P7(N)=1/(1+P3(N))
  246. 2320 P8(N)=1/(1+P4(N))
  247. 2322 ZCR=(1-P6(N)^2)*Z0/(1+P6(N)^2-2*P6(N))
  248. 2324 ZCG=(1-P5(N)^2)*Z0/(1+P5(N)^2+2*P5(N))
  249. 2325 ZCR1=ZCR/((6.28319*FREQ*C*ZCR)^2+1)/Z0
  250. 2326 ZCR2=(6.28319*FREQ*C*ZCR^2/((6.28319*FREQ*C*ZCR)^2+1)-6.28319*FREQ*L)/Z0
  251. 2327 ZCG1=ZCG/((6.28319*FREQ*C*ZCG)^2+1)/Z0
  252. 2328 ZCG2=(6.28319*FREQ*C*ZCG^2/((6.28319*FREQ*C*ZCG)^2+1)-6.28319*FREQ*L)/Z0
  253. 2340 LPRINT
  254. 2350 LPRINT USING "+##.#_ dBm POWER CONTOUR:";P1+1-N
  255. 2360 LPRINT
  256. 2370 LPRINT USING "_CENTER=##.##_j##.##    CENTER=##.##_j##.##";ZCR1,ZCR2,ZCG1,ZCG2
  257. 2380 LPRINT USING "_RADIUS=#.###           _RADIUS=#.###";P8(N),P7(N)
  258. 2390 NEXT N
  259. 2395 CLS
  260. 2400 GOTO 130
  261. 2410 REM********OUTPUT-SOURCE/INPUT-LOAD REFLECTION COMPUTATION**********
  262. 2420 IF S=6 THEN 2450
  263. 2430 PRINT "ENTER SOURCE REFLECTION COEFFICIENT"
  264. 2440 GOTO 2460
  265. 2450 PRINT "ENTER LOAD REFLECTION COEFFICIENT"
  266. 2460 INPUT "MAGNITUDE";A(5,1)
  267. 2470 INPUT "ANGLE";A(5,2)
  268. 2480 M=A(5,1)
  269. 2490 A=A(5,2)/57.2958
  270. 2500 GOSUB 2940
  271. 2510 B(5,1)=R
  272. 2520 B(5,2)=I
  273. 2530 IF S=5 THEN D5=1-(B(1,1)*B(5,1)-B(1,2)*B(5,2)) ELSE D5=1-(B(4,1)*B(5,1)-B(4,2)*B(5,2))
  274. 2540 IF S=5 THEN D6=-(B(1,1)*B(5,2)+B(1,2)*B(5,1)) ELSE D6=-(B(4,1)*B(5,2)+B(4,2)*B(5,1))
  275. 2550 R=D5
  276. 2560 I=D6
  277. 2570 GOSUB 2870
  278. 2580 D7=M
  279. 2581 D8=A
  280. 2582 N1=(B(3,1)*B(2,1)-B(3,2)*B(2,2))*B(5,1)-(B(3,2)*B(2,1)+B(3,1)*B(2,2))*B(5,2)
  281. 2583 N2=(B(3,2)*B(2,1)+B(3,1)*B(2,2))*B(5,1)+(B(3,1)*B(2,1)-B(3,2)*B(2,2))*B(5,2)
  282. 2584 R=N1
  283. 2585 I=N2
  284. 2586 GOSUB 2870
  285. 2587 N4=M
  286. 2588 N5=A
  287. 2589 L1=N4/D7
  288. 2590 L2=N5-D8
  289. 2591 M=L1
  290. 2600 A=L2
  291. 2610 GOSUB 2940
  292. 2620 L3=R
  293. 2630 L4=I
  294. 2640 GOSUB 2870
  295. 2650 N4=M
  296. 2660 N5=A
  297. 2670 L1=N4/D7
  298. 2680 L2=N5-D8
  299. 2690 M=L1
  300. 2700 A=L2
  301. 2710 GOSUB 2940
  302. 2720 L3=R
  303. 2730 L4=I
  304. 2740 IF S=5 THEN L5=L3+B(4,1) ELSE L5=L3+B(1,1)
  305. 2750 IF S=5 THEN L6=-(L4+B(4,2)) ELSE L6=-(L4+B(1,2))
  306. 2760 R=L5
  307. 2770 I=L6
  308. 2780 GOSUB 2870
  309. 2790 L7=M
  310. 2800 L8=A
  311. 2810 GOSUB 2980
  312. 2820 IF S=5 THEN LPRINT USING "_FOR A SOURCE REFLECTION COEFFICIENT OF #.##<####";A(5,1),A(5,2) ELSE LPRINT USING "_FOR A LOAD REFLECTION COEFFICIENT OF #.##_<####";A(5,1),A(5,2)
  313. 2830 IF S=5 THEN LPRINT USING "_OUTPUT REFLECTION COEFFICIENT=#.##_<####";L7,L8*(-57.2958) ELSE LPRINT USING "_INPUT REFLECTION COEFFICIENT=#.##_<####";L7,L8*(-57.2958)
  314. 2835 CLS
  315. 2840 GOTO 130
  316. 2850 END
  317. 2870 REM************SUBRUOTINE RECTANGULAR TO POLAR*****************
  318. 2880 M=SQR(R^2+I^2)
  319. 2890 A=ATN(I/R)
  320. 2900 IF R<0 THEN A=A+3.1415926#
  321. 2910 IF A>3.1415926# THEN A=A-6.283185200000001#
  322. 2920 RETURN
  323. 2930 END
  324. 2940 REM************SUBROUTINE POLAR TO RECTANGULAR******************
  325. 2950 R=M*COS(A)
  326. 2960 I=M*SIN(A)
  327. 2970 RETURN
  328. 2980 REM************SUBROUTINE FOR PRINTING S DATA******************
  329. 2990 LPRINT
  330. 3000 FOR N=1 TO 4
  331. 3010 LPRINT USING "\ \_=##.###_<####";A$(N),A(N,1),A(N,2)
  332. 3020 NEXT N
  333. 3030 RETURN
  334. 3040 END
  335.