home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HAM Radio 1
/
HamRadio.cdr
/
tech
/
ampdesgn
/
ampdesgn.bas
Wrap
BASIC Source File
|
1987-02-23
|
6KB
|
225 lines
10 'Amp. design, S.Novak 2/86 (RF Design magazine, 2/87 p.97)
20 DIM V(9),R(9),I(9),M(9),A(9),A$(9)
30 KEY OFF:CLS:PRINT "This calculates stability circles for input and output of"
40 PRINT "transistor and constant gain circles."
50 PRINT :PRINT "S-parameters of the device given in magnitude and angle."
60 A$(1)="INPUT PARAM.(11)=":A$(2)="REVERSE PARAM.(12)="
70 A$(3)="FORWARD PARAM.(21)=":A$(4)="OUTPUT PARAM.(22)="
80 A$(8)="RMS-SOURCE REFL. COEFF.":A$(9)="RMS-LOAD REFL.COEFF."
90 E=1000!:PI=4*ATN(1)
100 READ T$
110 PRINT :PRINT "Transistor",T$
120 READ F
130 PRINT "Frequency",F*.000001"MHz":PRINT
140 FOR J=1 TO 4
150 PRINT A$(J)
160 READ M(J),A(J)
170 GOSUB 1800
180 PRINT M(J),A(J)
190 NEXT J
200 PRINT
210 INPUT "Characteristic impedance of the line (Ohms)";ZO
220 'Calc S12*S21 and DS
230 R1=R(2)
240 I1=I(2)
250 R2=R(3)
260 I2=I(3)
270 GOSUB 1700
280 P=R
290 Q=I
300 R1=R(1)
310 I1=I(1)
320 R2=R(4)
330 I2=I(4)
340 GOSUB 1700
350 R(5)=R-P
360 I(5)=I-Q
370 'Calc C1,C2
380 R1=R(5)
390 I1=I(5)
400 R2=R(4)
410 I2=I(1)
420 GOSUB 1700
430 R(6)=R(1)-R
440 I(6)=I(1)-I
450 R2=R(1)
460 I2=-I(1)
470 GOSUB 1700
480 R(7)=R(4)-R
490 I(7)=I(4)-I
500 'Polar conversion DS,C1,C2
510 FOR J=5 TO 7
520 GOSUB 1900
530 NEXT J
540 'Calc squared values
550 FOR J=1 TO 7
560 V(J)=M(J)*M(J)
570 NEXT J
580 'S12 S21
590 V(2)=SQR(P*P+Q*Q)
600 'D-B param
610 D1=V(1)-V(5)
620 D2=V(4)-V(5)
630 B1=1-V(4)+D1
640 B2=1-V(1)+D2
670 'Calc stab. factor
680 K=(1+V(5)-V(1)-V(4))/(2*V(2))
690 PRINT "Stability factor K =";INT(K*E)/E:IF K>1 THEN 820
700 PRINT:PRINT "STABILITY CIRCLES"
710 CI=M(6)/ABS(D1)
720 CO=M(7)/ABS(D2)
730 AI=-A(6)
740 AO=-A(7)
750 IF D1<0 THEN AI=AI-180
760 IF D2<0 THEN AO=AO-180
770 RI=V(2)/ABS(D1)
780 RO=V(2)/ABS(D2)
790 PRINT "CTR.INPUT";INT(CI*E)/E,"ANG.IN=";INT(AI*E)/E,"RAD.IN";INT(RI*E)/E
795 PRINT
800 PRINT "CTR.OUTPUT=";INT(CO*E)/E;"ANG.OUT=";INT(AO*E)/E,"RAD.OUT=";INT(RO*E)/E
810 IF K1 THEN 1050
820 'Calc Gm
830 PRINT :PRINT "Amplifier Unconditionally stable":U=1
840 IF B1>0 THEN U=-1
850 GM=(M(3)/M(2))*(K+U*SQR(K*K-1))
860 PRINT "Maximum gain (dB) =";INT(10*LOG(GM)/LOG(10)*E)/E
870 PRINT "Maximum numeric gain =";INT(GM*E)/E
880 INPUT "Want maximum gain";B$
890 IF B$<>"N" AND B$<>"n" THEN 910
900 GOTO 1070
910 'Calc Zs, Zl
920 M(8)=M(6)*(B1+U*SQR(B1*B1-4*V(6)))/(2*V(6))
930 A(8)=-A(6)
940 J=8
950 GOSUB 1800
960 GOSUB 1520
970 U=1
980 IF B2>0 THEN U=-1
990 M(9)=M(7)*(B2+U*SQR(B2*B2-4*V(7)))/(2*V(7))
1000 A(9)=-A(7)
1010 J=9
1020 GOSUB 1800
1030 GOSUB 1450
1040 GOSUB 1425
1050 PRINT :PRINT "Amplifier potentially unstable."
1060 PRINT "Maximum stable gain =";INT(10*LOG(M(3)/M(2))*E/LOG(10))/E;"dB"
1070 PRINT :INPUT "Select Gain or Reflection coefficient";C$
1075 IF C$<>"G" AND C$<>"g" THEN 1850
1080 PRINT :INPUT "Gain (dB)";GP
1085 GP=GP^(GP/10)
1090 PRINT "Numeric gain =";INT(GP*E)/E
1100 G=GP/V(3)
1110 M(9)=G*M(7)/(1+D2*G)
1120 A(9)=-A(7)
1130 RC=SQR(1-2*K*V(2)*G+V(2)*V(2)*G*G)/(1+D2*G)
1140 PRINT :PRINT "Constant gain circle"
1145 PRINT "Center";INT(M(9)*E)/E,"ANGLE =";INT(A(9)*E)/E,"RADIUS =";INT(RC*E)/E
1150 'Choose min. load refl. coeff.
1155 M(9)=M(9)-RC
1160 IF M(9)<0 THEN A(9)=A(9)-180
1165 IF M(9)<0 THEN M(9)=ABS(M(9))
1170 PRINT :PRINT "MIN. REFL. COEFF. =";INT(M(9)*E)/E;"ANGLE =";INT(A(9)*E)/E
1175 'Calc Zl
1180 J=9:B=1:C=4
1190 GOSUB 1800
1200 GOSUB 1450
1220 'Calc Zs or Zl
1230 R1=R(J)
1240 I1=I(J)
1250 R2=R(5)
1260 I2=I(5)
1270 GOSUB 1700
1280 R3=R(B)-R
1290 I3=I(B)-I
1300 R2=R(C)
1310 I2=I(C)
1320 GOSUB 1700
1330 R2=1-R
1340 I2=I
1350 R1=R3
1360 I1=-I3
1370 GOSUB 1750
1375 IF J=8 THEN 1435
1380 J=8
1390 R(J)=R
1400 I(J)=I
1410 GOSUB 1900
1415 IF J=9 THEN 1440
1420 GOSUB 1520
1425 GOSUB 1960
1430 END
1435 J=9:GOTO 1390
1440 GOSUB 1450
1445 GOTO 1425
1450 'Calc Rl
1460 PRINT :PRINT "Impedance to match load"
1470 GOSUB 1600
1480 RL=R*ZO
1490 XL=I*ZO
1500 PRINT "RL + XL =";INT(RL*E)/E,INT(XL*E)/E
1510 RETURN
1520 'Calc Rs
1530 PRINT :PRINT "Impedance to match source"
1540 GOSUB 1600
1550 RS=R*ZO
1560 XS=I*ZO
1570 PRINT "RX + XS =";INT(RS*E)/E,INT(XS*E)/E
1580 RETURN
1600 '(1+compl no.)/(1-compl no.)
1610 R1=1+R(J)
1620 I1=-I(J)
1630 R2=1-R(J)
1640 I2=I(J)
1650 GOSUB 1750
1660 RETURN
1700 'Complement no. multiply
1710 R=R1*R2-I1*I2
1720 I=I1*R2+R1*I2
1730 RETURN
1750 'Complement no. divide
1760 D=R2*R2+I2*I2
1770 R=(R1*R2+I1*I2)/D
1780 I=(I1*R2-R1*I2)/D
1790 RETURN
1800 'Polar to rect
1810 A=A(J)*PI/180
1820 R(J)=M(J)*COS(A)
1830 I(J)=M(J)*SIN(A)
1840 RETURN
1850 'Repl Coeff choice
1855 PRINT :INPUT "Source or Load";D$
1860 IF D$<>"L" AND D$<>"l" THEN 1875
1865 PRINT :PRINT "LOAD REFL. COEFF. AMPL AND ANGLE";M(9),A(9)
1870 GOTO 1180
1875 PRINT :INPUT "Souce refl. coeff.,angle";M(8),A(8)
1880 J=8:B=4:C=1
1885 GOSUB 1800
1890 GOSUB 1520
1895 GOTO 1220
1900 'Rect to polar
1910 M(J)=SQR(R(J)*R(J)+I(J)*I(J))
1920 A(J)=90*(SGN(I(J))+(I(J)=0))
1930 IF R(J)=0 THEN 1950
1940 A(J)=ATN(I(J)/R(J))*180/PI+A(J)*(1-SGN(R(J)))
1950 RETURN
1960 'Print refl coeff
1965 PRINT
1970 FOR J=8 TO 9
1975 PRINT A$(J)
1980 PRINT "Mag =";INT(M(J)*E)/E,"Angle =";INT(A(J)*E)/E
1985 PRINT
1990 NEXT J
1995 RETURN
3000 'Transistor data storage
3001 'DATA MRF966,1e8,.89,-28,.006,79,1.56,132,.94,-17
3002 'DATA MRF966,5e8,.97,-14,.004,76,1.63,156,.96,-9
3004 'DATA 2N3570,5e8,.385,-55,.045,90,2.7,78,.89,-26.5
3005 DATA 2N3570,750e6,.277,-59,.078,93,1.92,64,.848,-31
3010 'DATA MRF571,2e8,.74,-86,.06,48,10.5,129,.69,-42
3020 'DATA MRF571,5E8,.62,-143,.08,33,5.5,97,.41,-59
3030 DATA MRF571,1E9,.61,178,.09,37,3,78,.28,-69
3040 DATA MRF571,5E9,.65,158,.11,44,2,62,.26,-88
3050 DATA BFR91,2E8,.49,-90,.06,55,8.72,120,.66,-30
3060 DATA BFR91,5E8,.35,-150,.09,60,4.34,90,.45,-35
3070 DATA BFR91,8E8,.34,175,.13,65,2.84,75,.4,-40