home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HAM Radio 1
/
HamRadio.cdr
/
tech
/
design5
/
optosc.for
< prev
next >
Wrap
Text File
|
1979-12-31
|
15KB
|
476 lines
C
C OPTOSC PROGRAM (OPTIMUM OSCILLATOR)
C
C COMPUTATION OF THE OPTIMAL NETWORK FOR A
C TRANSISTORIZED WITH OR WITHOUT DIELECTRIC RESONATOR.
C
C
C PROGRAM BY: PATRICK CHAMPAGNE
C DEFENSE COMMUNICATIONS DIVISION
C CANADIAN MARCONI COMPANY
C 2442 TRENTON, MONTREAL, QUEBEC, CANADA
C
C 2 POSSIBLE OSCILLATION CONDITIONS ARE ANALYZED:
C A) TRANSISTOR POTENTIALLY UNSTABLE
C B) TRANSISTOR UNCONDITIONNALLY STABLE (THE COMPUTATION OF
C THE OPTIMUM NETWORK FOR NEGATIVE CONDUCTANCE IS BASED ON
C R.SPENCE'S "LINEAR ACTIVE NETWORKS")
C
C
C THE FOLLOWING PARAMETERS ARE USED IN THE PROGRAM:
C Sij :S PARAMETERS OF THE TRANSISTOR
C Yij :Y PARAMETERS OF THE TRANSISTOR
C EEFF :EFFECTIVE DIELECTRIC CONSTANT OF MICROSTRIP
C WL :WAVELENGTH
C BGi :FEEDBACK SUSCEPTANCE FOR MAX. NEG. CONDUCTANCE
C GNi :MAXIMUM NEGATIVE CONDUCTANCES
C ZIN :RESONATOR IMPEDANCE AS SEEN BY TRANSISTOR
C XIN :RESONATOR ADMITTANCE AS SEEN BY TRANSISTOR
C B0 :TRANSISTOR OUTPUT SUSCEPTANCE
C XM(i,j):INDEFINITE ADMITTANCE MATRIX
C YE,Y0,
C YC,YB :TRANSISTOR ADMITTANCES
C
$DEBUG
COMPLEX S11,S21,S12,S22,Y11,Y12,Y21,Y22,Y1,Y2,Y3,Y4,DEL
COMPLEX XM(3,3),D,YE,YB,YC,Y0,GM,ZIN,XIN
CHARACTER*10 AA
WRITE(*,3)
OPEN(6,FILE='PRN',STATUS='OLD')
WRITE(6,700)
700 FORMAT(' *****************************************************')
WRITE(6,710)
710 FORMAT(' * *')
WRITE(6,3)
3 FORMAT(' * COMPUTATION OF TRANSISTORIZED OSCILLATORS * ')
WRITE(6,710)
WRITE(6,700)
WRITE(*,7)
7 FORMAT(1H0,'TRANSISTOR TYPE?')
READ(*,9)AA
9 FORMAT(A)
WRITE(*,11)AA
WRITE(6,11)AA
11 FORMAT(1H0,'THE TRANSISTOR USED IS ',A)
WRITE(*,13)
13 FORMAT(1H0,'BIAS CONDITIONS (VCE,IC) OR (VDS,ID)?')
READ(*,17)VCE,AIC
17 FORMAT(2F6.3)
WRITE(6,19)
19 FORMAT(1H0,'BIAS CONDITIONS')
WRITE(6,21)VCE,AIC
21 FORMAT(1H0,'VCE(VDS)=',F6.3,'V',3X,'IC(ID)=',F6.3,'MA')
WRITE(*,61)
61 FORMAT(1H0,'OPERATING FREQUENCY (IN GHZ)')
READ (*,62) FREQ
62 FORMAT(F6.3)
WRITE(*,63) FREQ
WRITE(6,63) FREQ
63 FORMAT(1H0,'THE OPERATING FREQUENCY IS ',F6.3,' GHZ')
C
C THE COMPUTATION OF THE EFFECTIVE DIELECTRIC CONSTANT IS BASED
C ON EDWARDS' 'FOUNDATIONS FOR MICROSTRIP DESIGN'
C
T1=0.43*FREQ**2-0.009*FREQ**3
T2=(.635/50)**1.33
T1=1+T1*T2
C
C E EFF. =6.53 IS USED FOR F=0
C
T1=(9.8-6.53)/T1
EEFF=9.8-T1
WL=298/(FREQ*EEFF**.5)
WRITE(6,96)WL
96 FORMAT(1H0,'THE WAVELENGTH IS ',F6.3,' MM')
C
C THE TRANSISTOR CONFIGURATION CORRESPOND TO THE CONDITION
C FOR WHICH THE S-PARAMETERS ARE GIVEN
C
WRITE(6,10)
WRITE(*,10)
10 FORMAT(1H0,'TRANSISTOR CONFIGURATION')
WRITE(*,12)
WRITE(6,12)
12 FORMAT(1H0,'1=CB,CG; 2=CE,CS; 3=CC,CD')
READ(*,23) ICONF
23 FORMAT(I2)
WRITE(6,14) ICONF
14 FORMAT(1H0,10X,I2)
C
C S PARAMETERS READING
C
WRITE(*,15)
WRITE(6,15)
15 FORMAT(1H0,'S11:AMPLITUDE AND PHASE (DEGREES)')
READ(*,5) P11
READ(*,5) ARG11
WRITE(6,27)P11,ARG11
27 FORMAT(1H0,5X,2(F8.3,5X))
WRITE(*,20)
WRITE(6,20)
20 FORMAT(1H0,'S21:AMPLITUDE AND PHASE')
READ(*,5) P21
READ(*,5) ARG21
WRITE(6,27) P21,ARG21
WRITE(*,25)
WRITE(6,25)
25 FORMAT(1H0,'S12:AMPLITUDE AND PHASE')
READ(*,5) P12
READ(*,5) ARG12
WRITE(6,27) P12,ARG12
WRITE(*,30)
WRITE(6,30)
30 FORMAT(1H0,'S22:AMPLITUDE AND PHASE')
READ(*,5) P22
READ(*,5) ARG22
WRITE(6,27) P22,ARG22
5 FORMAT (F8.3)
C
C TRANSFORMATION OF ANGLES FROM DEGREES TO RADIANS
C
XPI=3.1416/180
ARG11=ARG11*XPI
ARG21=ARG21*XPI
ARG12=ARG12*XPI
ARG22=ARG22*XPI
C
C COMPLEX S PARAMETERS
C
S11=CMPLX(P11*COS(ARG11),P11*SIN(ARG11))
S21=CMPLX(P21*COS(ARG21),P21*SIN(ARG21))
S12=CMPLX(P12*COS(ARG12),P12*SIN(ARG12))
S22=CMPLX(P22*COS(ARG22),P22*SIN(ARG22))
C
C ROLLETT STABILITY FACTOR
C
DEL=S11*S22-S12*S21
FS=1+CABS(DEL)**2-CABS(S11)**2-CABS(S22)**2
FS=FS/(2*CABS(S21)*CABS(S12))
WRITE(*,32) FS
WRITE(6,32) FS
32 FORMAT(1H0,'STABILITY FACTOR K=',F8.3,)
C
C K >= TO 1 CORRSPONDS TO UNCONDITIONNALLY STABLE
C
C Y PARAMETERS
C
D=(1+S11)*(1+S22)-S12*S21
Y11=((1+S22)*(1-S11)+S12*S21)/D
Y12=-(2*S12)/D
Y21=-(2*S21)/D
Y22=((1+S11)*(1-S22)+S12*S21)/D
WRITE(*,35) Y11
WRITE(6,35) Y11
35 FORMAT(///,1H0,'Y11=',2(F8.3,3X))
WRITE(*,40) Y12
WRITE(6,40) Y12
40 FORMAT(1H0,'Y12=',2(F8.3,3X))
WRITE(*,45) Y21
WRITE(6,45) Y21
45 FORMAT(1H0,'Y21=',2(F8.3,3X))
WRITE(*,50) Y22
WRITE(6,50) Y22
50 FORMAT(1H0,'Y22=',2(F8.3,3X))
C
C IF THE TRANSISTOR IS POTENTIALLY UNSTABLE, THE SERIES FEEDBACK
C NETWORK (CONTAINING ONLY ONE SUSCEPTANCE), WHICH MAXIMIZES THE
C NEGATIVE CONDUCTANCE, IS CALCULATED.
C
IF (FS.GE.1)GOTO 200
WRITE(*,52)
WRITE(6,52)
52 FORMAT(1H0,'ONE SUSCEPTANCE NETWORK CALCULATION')
G11=REAL(Y11)
G22=REAL(Y22)
B11=AIMAG(Y11)
B22=AIMAG(Y22)
YM=REAL(Y12*Y21)
YL=CABS(Y12*Y21)
YI=AIMAG(Y12*Y21)
C
C 2 SOLUTIONS ARE POSSIBLE FOR SERIES FEEDBACK SUSCEPTANCE.
C FOR EACH OF THE SOLUTIONS, THE NEGATIVE CONDACTANCE IS
C COMPUTED AND THE LARGEST VALUE WILL BE USED.
C
C THE COMPUTATION IS DONE FOR BOTH POSSIBLE OUTPUT PORT.
C THE USER MUST DECIDE, BASED ONT THESE RESULTS, WHICH WILL
C THE CHOSEN CONFIGURATION.
C
BG1=-B11+(G11*YI)/(YM+YL)
Y1=CMPLX(0.,BG1)
GN1=G22-(YM+YL)/(2*G11)
BG2=-B11+(G11*YI)/(YM-YL)
Y2=CMPLX(0.,BG2)
GN2=G22-(YM-YL)/(2*G11)
WRITE(*,60)GN1,GN2
WRITE(6,60)GN1,GN2
60 FORMAT(1H0,'NEG. CONDUCTANCES :GN1= ',F8.3,' GN2=',F8.3)
IF(GN1.LE.GN2)GOTO 65
WRITE(*,70)
WRITE(6,70)
70 FORMAT(1H0,'GN2 MORE NEG. THAN GN1, GNMAX=GN2')
80 GNMAX=GN2
BG=BG2
GOTO 85
65 WRITE(*,90)
WRITE(6,90)
90 FORMAT(1H0,'GN1 MORE NEG. THAN GN2, GNMAX=GN1')
75 GNMAX=GN1
BG=BG1
85 WRITE(*,95)
WRITE(6,95)
95 FORMAT(1H0,'CIRCUIT PARAMETERS FOR AN OUTPUT ON PORT 2')
B0=B22-AIMAG((Y12*Y21)/(Y11+CMPLX(0.,BG)))
WRITE(*,100) GNMAX,BG,B0
WRITE(6,100) GNMAX,BG,B0
C
C COMPUTATION OF THE DISTANCE BETWEEN DR AND TRANSISTOR.
C AN ALUMINA WITH 50OHMS LINES IS ASSUMED.
C
100 FORMAT(1H0,5X,'GNMAX=',F8.3,' BG=',F8.3,' B0=',F8.3)
DIST=ATAN(BG)
IF (DIST.GE.0.0)GOTO 102
DIST=DIST+3.1416
102 DIST=DIST*WL/6.2832
WRITE(*,97)DIST
WRITE(6,97)DIST
97 FORMAT(1H0,'THE DISTANCE BETWEEN DR AND TRANS.=',F6.3,' MM')
C
C COMPUTATION OF OUTPUT ADMITTANCES FOR REAL DR
C
WRITE(6,620)
WRITE(*,620)
620 FORMAT(/,1H0,'ADMITTANCES WITH REAL DR')
WRITE(*,800)
800 FORMAT(1H0,' ENTER S11 MAX, S11 MIN AND # OF COMPUTATIONS')
READ (*,810) CLIM1,CLIM2,M
810 FORMAT(2F6.3,I2)
DRHO=(CLIM1-CLIM2)/M
M=M+1
DO 820 I=1,M
RHO=CLIM2+DRHO*(I-1)
RES=(((100*RHO)/(1-RHO))+50.)/50.
ZIN=RES+CMPLX(0.,1.)*TAN(DIST*6.2832/WL)
ZIN=ZIN/(1+CMPLX(0.,RES)*TAN(DIST*6.2832/WL))
XIN=1/ZIN
BOUT=B22-AIMAG((Y12*Y21)/(Y11+XIN))
GNEG=G22-REAL((Y12*Y21)/(Y11+XIN))
WRITE(*,630)RHO,GNEG,BOUT
WRITE(6,630)RHO,GNEG,BOUT
630 FORMAT(/,' RHO=',F6.3,3X,'GNEG=',F6.3,3X,'BOUT=',F6.3)
WRITE(6,615)ZIN,XIN
615 FORMAT(' ZIN=',2F6.3,5X,'XIN=',2F6.3)
820 CONTINUE
880 WRITE(*,850)
850 FORMAT(1H0,'ENTER S11 AND DIST(MM),(S11<0 ==>FIN)')
READ (*,825) RHO,DIST
825 FORMAT(2F6.3)
IF (RHO.LT.0)GOTO 900
RES=(((100*RHO)/(1-RHO))+50.)/50.
ZIN=RES+CMPLX(0.,1.)*TAN(DIST*6.2832/WL)
ZIN=ZIN/(1+CMPLX(0.,RES)*TAN(DIST*6.2832/WL))
XIN=1/ZIN
BOUT=B22-AIMAG((Y12*Y21)/(Y11+XIN))
GNEG=G22-REAL((Y12*Y21)/(Y11+XIN))
WRITE(*,630)RHO,GNEG,BOUT
WRITE(6,630)RHO,GNEG,BOUT
WRITE(6,890)ZIN,XIN,DIST
890 FORMAT(' ZIN=',2F6.3,5X,'XIN=',2F6.3,3X,'DIST=',F6.3)
GOTO 880
900 BG3=-B22+(G22*YI)/(YM+YL)
Y3=CMPLX(0.,BG3)
GN3=G11-(YM+YL)/(2*G22)
BG4=-B22+(G22*YI)/(YM-YL)
Y4=CMPLX(0.,BG4)
GN4=G11-(YM-YL)/(2*G22)
WRITE(*,105)GN3,GN4
WRITE(6,105)GN3,GN4
105 FORMAT(///,1H0,'NEGATIVE CONDUCTANCES: GN3=',F8.3,5X,'GN4=',F8.3)
IF(GN3.LE.GN4)GOTO 120
WRITE(*,110)
WRITE(6,110)
110 FORMAT(1H0,'GN4 MORE NEG. THAN GN3, GNMAX=GN4')
115 GNMAXA=GN4
BGA=BG4
GOTO 135
120 WRITE(*,125)
WRITE(6,125)
125 FORMAT(1H0,'GN3 MORE NEG. THAN GN4, GNMAX=GN3')
130 GNMAXA=GN3
BGA=BG3
135 WRITE(*,140)
WRITE(6,140)
140 FORMAT(1H0,'CIRCUIT PARAMETERS FOR AN OUTPUT ON PORT 1')
B0A=B11-AIMAG((Y12*Y21)/(Y22+CMPLX(0.,BGA)))
WRITE(*,100) GNMAXA,BGA,B0A
WRITE(6,100) GNMAXA,BGA,B0A
DIST=ATAN(BGA)
IF (DIST.GE.0.0) GOTO 103
DIST=DIST+3.1416
103 DIST=DIST*WL/6.2832
WRITE(*,142)DIST
WRITE(6,142)DIST
142 FORMAT(1H0,'THE DISTANCE BETWEEN DR AND TRANS.=',F6.3,' MM')
WRITE(6,620)
WRITE(*,620)
WRITE(*,800)
READ (*,810) CLIM1,CLIM2,M
DRHO=(CLIM1-CLIM2)/M
M=M+1
DO 920 I=1,M
RHO=CLIM2+DRHO*(I-1)
RES=(((100*RHO)/(1-RHO))+50.)/50.
ZIN=RES+CMPLX(0.,1.)*TAN(DIST*6.2832/WL)
ZIN=ZIN/(1+CMPLX(0.,RES)*TAN(DIST*6.2832/WL))
XIN=1/ZIN
BOUT=B11-AIMAG((Y12*Y21)/(Y22+XIN))
GNEG=G11-REAL((Y12*Y21)/(Y22+XIN))
WRITE(*,630)RHO,GNEG,BOUT
WRITE(6,630)RHO,GNEG,BOUT
WRITE(6,615)ZIN,XIN
920 CONTINUE
1010 WRITE(*,850)
READ (*,825) RHO,DIST
IF(RHO.LT.0)GOTO 200
RES=(((100*RHO)/(1-RHO))+50.)/50.
ZIN=RES+CMPLX(0.,1.)*TAN(DIST*6.2832/WL)
ZIN=ZIN/(1+CMPLX(0.,RES)*TAN(DIST*6.2832/WL))
XIN=1/ZIN
BOUT=B11-AIMAG((Y12*Y21)/(Y22+XIN))
GNEG=G11-REAL((Y12*Y21)/(Y22+XIN))
WRITE(*,630)RHO,GNEG,BOUT
WRITE(6,630)RHO,GNEG,BOUT
WRITE(6,890)ZIN,XIN,DIST
GOTO 1010
200 WRITE(*,150)
IF(FS.LT.1) GOTO 500
WRITE(6,150)
150 FORMAT(///,1H0,'THREE ADMITTANCES NETWORK CALCULATION')
IF(ICONF-2)205,215,225
C
C THE ANALYSIS IS BASED ON SMALL-SIGNAL S-PARAMETERS. THE NETWORK
C CONSISTING OF THREE ADMITTANCES WHICH LEADS TO A MAXIMUM
C LOADING OSCILLATOR IS COMPUTED. EACH OF THE THREE POSSIBLE OUTPUT
C PORTS IS CONSIDERED.
C
205 XM(1,1)=Y11
XM(3,1)=Y21
XM(2,1)=-(Y11+Y21)
XM(1,3)=Y12
XM(1,2)=-(Y12+Y11)
XM(3,3)=Y22
XM(2,3)=-(Y22+Y12)
XM(3,2)=-(Y22+Y21)
XM(2,2)=-(XM(3,2)+XM(1,2))
WRITE(*,210)
WRITE(6,210)
210 FORMAT(1H0,15X,'Y(I,J) MATRIX FROM CB OR CG')
GOTO 235
215 XM(2,2)=Y11
XM(2,3)=Y12
XM(3,2)=Y21
XM(3,3)=Y22
XM(2,1)=-(Y11+Y12)
XM(3,1)=-(Y21+Y22)
XM(1,2)=-(Y11+Y21)
XM(1,3)=-(Y12+Y22)
XM(1,1)=-(XM(1,2)+XM(1,3))
WRITE(*,220)
WRITE(6,220)
220 FORMAT(1H0,15X,'Y(I,J) MATRIX FROM CE OR CS')
GOTO 235
225 XM(1,1)=Y22
XM(1,2)=Y21
XM(2,1)=Y12
XM(2,2)=Y11
XM(1,3)=-(Y22+Y21)
XM(2,3)=-(Y12+Y11)
XM(3,1)=-(Y22+Y12)
XM(3,2)=-(Y21+Y11)
XM(3,3)=-(XM(3,1)+XM(3,2))
WRITE(*,230)
WRITE(6,230)
230 FORMAT(1H0,15X,'Y(I,J) MATRIX FROM CC OR CD')
235 DO 240 I=1,3
WRITE(*,245)(XM(I,J),J=1,3)
WRITE(6,245)(XM(I,J),J=1,3)
245 FORMAT(1H0,3(4X,2(F8.3)))
240 CONTINUE
GM=(1/3)*(REAL(XM(1,1))+REAL(XM(2,2))+REAL(XM(3,3)))
IF (CABS(GM).GE.0) GOTO 250
WRITE(*,255)
WRITE(6,255)
255 FORMAT(1H0,2X,'AVERAGE AUTO-CONDUCTANCE <0, INACTIVE DEVICE')
GOTO 500
250 YE=0.5*(XM(2,2)+XM(3,3)-XM(1,1))
YB=0.5*(XM(3,3)+XM(1,1)-XM(2,2))
YC=0.5*(XM(1,1)+XM(2,2)-XM(3,3))
Y0=0.5*(XM(1,2)-XM(2,1))
T=AIMAG(Y0)**2
T=T-(REAL(YE)*REAL(YB)+REAL(YB)*REAL(YC)+REAL(YC)*REAL(YE))
C
C BASE NETWORK
C
XF=REAL(Y0)/AIMAG(Y0)
WRITE(*,265)
WRITE(6,265)
265 FORMAT(//,1H0,'BASE SUSCEPTANCES OF THE NETWORK')
BBC=-XF*REAL(YE)-AIMAG(YE)
BEC=-XF*REAL(YB)-AIMAG(YB)
BEB=-XF*REAL(YC)-AIMAG(YC)
WRITE(*,270)BBC
WRITE(6,270)BBC
270 FORMAT(//,1H0,'BBC=',2X,F8.3)
WRITE(*,280)BEC
WRITE(6,280)BEC
280 FORMAT(1H0,'BEC=',2X,F8.3)
WRITE(*,290)BEB
WRITE(6,290)BEB
290 FORMAT(1H0,'BEB=',2X,F8.3)
C
C COMPUTATION OF SUSCEPTANCE TO BE ADDED IN
C PARALL WITH MAXIMUM LOAD
C
WRITE(6,260)
WRITE(*,260)
260 FORMAT(//,1H0,'MAXIMUM LOAD BETWEEN BASE AND COLLECTOR (G AND D)')
BA=-XF*(T/REAL(XM(1,1)))
BBC=BBC+BA
WRITE(*,300)BA
WRITE(6,300)BA
300 FORMAT(1H0,'ADDITIONAL SUSCEPTANCE=',F8.3)
WRITE(*,310)BBC
WRITE(6,310)BBC
310 FORMAT(1H0,'TOTAL SUSCEPTANCE=',F8.3)
GBC=T/REAL(XM(1,1))
WRITE(*,320)GBC
WRITE(6,320)GBC
320 FORMAT(1H0,'MAXIMUM CONDUCTANCE=',F8.3)
WRITE(*,330)
WRITE(6,330)
330 FORMAT(1H0,'MAXIMUM LOAD BETWEEN EMITTER AND COLL. (S AND D)')
GBC=T/REAL(XM(2,2))
BA=-XF*GBC
BBC=BA+BEC
WRITE(*,300)BA
WRITE(6,300)BA
WRITE(*,310)BBC
WRITE(6,310)BBC
WRITE(*,320)GBC
WRITE(6,320)GBC
WRITE(*,340)
WRITE(6,340)
340 FORMAT(1H0,'MAXIMUM LOAD BETWEEN BASE AND EMITTER (G AND S)')
GBC=T/REAL(XM(3,3))
BA=-XF*GBC
BBC=BA+BEB
WRITE(*,300)BA
WRITE(6,300)BA
WRITE(*,310)BBC
WRITE(6,310)BBC
WRITE(*,320)GBC
WRITE(6,320)GBC
500 STOP
END