home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / ampdesgn / ampdesgn.bas
BASIC Source File  |  1987-02-23  |  6KB  |  225 lines

  1. 10 'Amp. design, S.Novak 2/86 (RF Design magazine, 2/87 p.97)
  2. 20 DIM V(9),R(9),I(9),M(9),A(9),A$(9)
  3. 30 KEY OFF:CLS:PRINT "This calculates stability circles for input and output of"
  4. 40 PRINT "transistor and constant gain circles."
  5. 50 PRINT :PRINT "S-parameters of the device given in magnitude and angle."
  6. 60 A$(1)="INPUT PARAM.(11)=":A$(2)="REVERSE PARAM.(12)="
  7. 70 A$(3)="FORWARD PARAM.(21)=":A$(4)="OUTPUT PARAM.(22)="
  8. 80 A$(8)="RMS-SOURCE REFL. COEFF.":A$(9)="RMS-LOAD REFL.COEFF."
  9. 90 E=1000!:PI=4*ATN(1)
  10. 100 READ T$
  11. 110 PRINT :PRINT "Transistor",T$
  12. 120 READ F
  13. 130 PRINT "Frequency",F*.000001"MHz":PRINT
  14. 140 FOR J=1 TO 4
  15. 150 PRINT A$(J)
  16. 160 READ M(J),A(J)
  17. 170 GOSUB 1800
  18. 180 PRINT M(J),A(J)
  19. 190 NEXT J
  20. 200 PRINT
  21. 210 INPUT "Characteristic impedance of the line (Ohms)";ZO
  22. 220 'Calc S12*S21 and DS
  23. 230 R1=R(2)
  24. 240 I1=I(2)
  25. 250 R2=R(3)
  26. 260 I2=I(3)
  27. 270 GOSUB 1700
  28. 280 P=R
  29. 290 Q=I
  30. 300 R1=R(1)
  31. 310 I1=I(1)
  32. 320 R2=R(4)
  33. 330 I2=I(4)
  34. 340 GOSUB 1700
  35. 350 R(5)=R-P
  36. 360 I(5)=I-Q
  37. 370 'Calc C1,C2
  38. 380 R1=R(5)
  39. 390 I1=I(5)
  40. 400 R2=R(4)
  41. 410 I2=I(1)
  42. 420 GOSUB 1700
  43. 430 R(6)=R(1)-R
  44. 440 I(6)=I(1)-I
  45. 450 R2=R(1)
  46. 460 I2=-I(1)
  47. 470 GOSUB 1700
  48. 480 R(7)=R(4)-R
  49. 490 I(7)=I(4)-I
  50. 500 'Polar conversion DS,C1,C2
  51. 510 FOR J=5 TO 7
  52. 520 GOSUB 1900
  53. 530 NEXT J
  54. 540 'Calc squared values
  55. 550 FOR J=1 TO 7
  56. 560 V(J)=M(J)*M(J)
  57. 570 NEXT J
  58. 580 'S12 S21
  59. 590 V(2)=SQR(P*P+Q*Q)
  60. 600 'D-B param
  61. 610 D1=V(1)-V(5)
  62. 620 D2=V(4)-V(5)
  63. 630 B1=1-V(4)+D1
  64. 640 B2=1-V(1)+D2
  65. 670 'Calc stab. factor
  66. 680 K=(1+V(5)-V(1)-V(4))/(2*V(2))
  67. 690 PRINT "Stability factor K =";INT(K*E)/E:IF K>1 THEN 820
  68. 700 PRINT:PRINT "STABILITY CIRCLES"
  69. 710 CI=M(6)/ABS(D1)
  70. 720 CO=M(7)/ABS(D2)
  71. 730 AI=-A(6)
  72. 740 AO=-A(7)
  73. 750 IF D1<0 THEN AI=AI-180
  74. 760 IF D2<0 THEN AO=AO-180
  75. 770 RI=V(2)/ABS(D1)
  76. 780 RO=V(2)/ABS(D2)
  77. 790 PRINT "CTR.INPUT";INT(CI*E)/E,"ANG.IN=";INT(AI*E)/E,"RAD.IN";INT(RI*E)/E
  78. 795 PRINT
  79. 800 PRINT "CTR.OUTPUT=";INT(CO*E)/E;"ANG.OUT=";INT(AO*E)/E,"RAD.OUT=";INT(RO*E)/E
  80. 810 IF K1 THEN 1050
  81. 820 'Calc Gm
  82. 830 PRINT :PRINT "Amplifier Unconditionally stable":U=1
  83. 840 IF B1>0 THEN U=-1
  84. 850 GM=(M(3)/M(2))*(K+U*SQR(K*K-1))
  85. 860 PRINT "Maximum gain (dB) =";INT(10*LOG(GM)/LOG(10)*E)/E
  86. 870 PRINT "Maximum numeric gain =";INT(GM*E)/E
  87. 880 INPUT "Want maximum gain";B$
  88. 890 IF B$<>"N" AND B$<>"n" THEN 910
  89. 900 GOTO 1070
  90. 910 'Calc Zs, Zl
  91. 920 M(8)=M(6)*(B1+U*SQR(B1*B1-4*V(6)))/(2*V(6))
  92. 930 A(8)=-A(6)
  93. 940 J=8
  94. 950 GOSUB 1800
  95. 960 GOSUB 1520
  96. 970 U=1
  97. 980 IF B2>0 THEN U=-1
  98. 990 M(9)=M(7)*(B2+U*SQR(B2*B2-4*V(7)))/(2*V(7))
  99. 1000 A(9)=-A(7)
  100. 1010 J=9
  101. 1020 GOSUB 1800
  102. 1030 GOSUB 1450
  103. 1040 GOSUB 1425
  104. 1050 PRINT :PRINT "Amplifier potentially unstable."
  105. 1060 PRINT "Maximum stable gain =";INT(10*LOG(M(3)/M(2))*E/LOG(10))/E;"dB"
  106. 1070 PRINT :INPUT "Select Gain or Reflection coefficient";C$
  107. 1075 IF C$<>"G" AND C$<>"g" THEN 1850
  108. 1080 PRINT :INPUT "Gain (dB)";GP
  109. 1085 GP=GP^(GP/10)
  110. 1090 PRINT "Numeric gain =";INT(GP*E)/E
  111. 1100 G=GP/V(3)
  112. 1110 M(9)=G*M(7)/(1+D2*G)
  113. 1120 A(9)=-A(7)
  114. 1130 RC=SQR(1-2*K*V(2)*G+V(2)*V(2)*G*G)/(1+D2*G)
  115. 1140 PRINT :PRINT "Constant gain circle"
  116. 1145 PRINT "Center";INT(M(9)*E)/E,"ANGLE =";INT(A(9)*E)/E,"RADIUS =";INT(RC*E)/E
  117. 1150 'Choose min. load refl. coeff.
  118. 1155 M(9)=M(9)-RC
  119. 1160 IF M(9)<0 THEN A(9)=A(9)-180
  120. 1165 IF M(9)<0 THEN M(9)=ABS(M(9))
  121. 1170 PRINT :PRINT "MIN. REFL. COEFF. =";INT(M(9)*E)/E;"ANGLE =";INT(A(9)*E)/E
  122. 1175 'Calc Zl
  123. 1180 J=9:B=1:C=4
  124. 1190 GOSUB 1800
  125. 1200 GOSUB 1450
  126. 1220 'Calc Zs or Zl
  127. 1230 R1=R(J)
  128. 1240 I1=I(J)
  129. 1250 R2=R(5)
  130. 1260 I2=I(5)
  131. 1270 GOSUB 1700
  132. 1280 R3=R(B)-R
  133. 1290 I3=I(B)-I
  134. 1300 R2=R(C)
  135. 1310 I2=I(C)
  136. 1320 GOSUB 1700
  137. 1330 R2=1-R
  138. 1340 I2=I
  139. 1350 R1=R3
  140. 1360 I1=-I3
  141. 1370 GOSUB 1750
  142. 1375 IF J=8 THEN 1435
  143. 1380 J=8
  144. 1390 R(J)=R
  145. 1400 I(J)=I
  146. 1410 GOSUB 1900
  147. 1415 IF J=9 THEN 1440
  148. 1420 GOSUB 1520
  149. 1425 GOSUB 1960
  150. 1430 END
  151. 1435 J=9:GOTO 1390
  152. 1440 GOSUB 1450
  153. 1445 GOTO 1425
  154. 1450 'Calc Rl
  155. 1460 PRINT :PRINT "Impedance to match load"
  156. 1470 GOSUB 1600
  157. 1480 RL=R*ZO
  158. 1490 XL=I*ZO
  159. 1500 PRINT "RL + XL =";INT(RL*E)/E,INT(XL*E)/E
  160. 1510 RETURN
  161. 1520 'Calc Rs
  162. 1530 PRINT :PRINT "Impedance to match source"
  163. 1540 GOSUB 1600
  164. 1550 RS=R*ZO
  165. 1560 XS=I*ZO
  166. 1570 PRINT "RX + XS =";INT(RS*E)/E,INT(XS*E)/E
  167. 1580 RETURN
  168. 1600 '(1+compl no.)/(1-compl no.)
  169. 1610 R1=1+R(J)
  170. 1620 I1=-I(J)
  171. 1630 R2=1-R(J)
  172. 1640 I2=I(J)
  173. 1650 GOSUB 1750
  174. 1660 RETURN
  175. 1700 'Complement no. multiply
  176. 1710 R=R1*R2-I1*I2
  177. 1720 I=I1*R2+R1*I2
  178. 1730 RETURN
  179. 1750 'Complement no. divide
  180. 1760 D=R2*R2+I2*I2
  181. 1770 R=(R1*R2+I1*I2)/D
  182. 1780 I=(I1*R2-R1*I2)/D
  183. 1790 RETURN
  184. 1800 'Polar to rect
  185. 1810 A=A(J)*PI/180
  186. 1820 R(J)=M(J)*COS(A)
  187. 1830 I(J)=M(J)*SIN(A)
  188. 1840 RETURN
  189. 1850 'Repl Coeff choice
  190. 1855 PRINT :INPUT "Source or Load";D$
  191. 1860 IF D$<>"L" AND D$<>"l" THEN 1875
  192. 1865 PRINT :PRINT "LOAD REFL. COEFF. AMPL AND ANGLE";M(9),A(9)
  193. 1870 GOTO 1180
  194. 1875 PRINT :INPUT "Souce refl. coeff.,angle";M(8),A(8)
  195. 1880 J=8:B=4:C=1
  196. 1885 GOSUB 1800
  197. 1890 GOSUB 1520
  198. 1895 GOTO 1220
  199. 1900 'Rect to polar
  200. 1910 M(J)=SQR(R(J)*R(J)+I(J)*I(J))
  201. 1920 A(J)=90*(SGN(I(J))+(I(J)=0))
  202. 1930 IF R(J)=0 THEN 1950
  203. 1940 A(J)=ATN(I(J)/R(J))*180/PI+A(J)*(1-SGN(R(J)))
  204. 1950 RETURN
  205. 1960 'Print refl coeff
  206. 1965 PRINT
  207. 1970 FOR J=8 TO 9
  208. 1975 PRINT A$(J)
  209. 1980 PRINT "Mag =";INT(M(J)*E)/E,"Angle =";INT(A(J)*E)/E
  210. 1985 PRINT
  211. 1990 NEXT J
  212. 1995 RETURN
  213. 3000 'Transistor data storage
  214. 3001 'DATA MRF966,1e8,.89,-28,.006,79,1.56,132,.94,-17
  215. 3002 'DATA MRF966,5e8,.97,-14,.004,76,1.63,156,.96,-9
  216. 3004 'DATA 2N3570,5e8,.385,-55,.045,90,2.7,78,.89,-26.5
  217. 3005 DATA 2N3570,750e6,.277,-59,.078,93,1.92,64,.848,-31
  218. 3010 'DATA MRF571,2e8,.74,-86,.06,48,10.5,129,.69,-42
  219. 3020 'DATA MRF571,5E8,.62,-143,.08,33,5.5,97,.41,-59
  220. 3030 DATA MRF571,1E9,.61,178,.09,37,3,78,.28,-69
  221. 3040 DATA MRF571,5E9,.65,158,.11,44,2,62,.26,-88
  222. 3050 DATA BFR91,2E8,.49,-90,.06,55,8.72,120,.66,-30
  223. 3060 DATA BFR91,5E8,.35,-150,.09,60,4.34,90,.45,-35
  224. 3070 DATA BFR91,8E8,.34,175,.13,65,2.84,75,.4,-40
  225.