home *** CD-ROM | disk | FTP | other *** search
- 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