home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HAM Radio 1
/
HamRadio.cdr
/
tech
/
design5
/
optosc.lst
< prev
next >
Wrap
File List
|
1979-12-31
|
19KB
|
468 lines
Page 1
01-01-80
00:05:05
D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985
1 C
2 C OPTOSC PROGRAM (OPTIMUM OSCILLATOR)
3 C
4 C COMPUTATION OF THE OPTIMAL NETWORK FOR A
5 C TRANSISTORIZED WITH OR WITHOUT DIELECTRIC RESONATOR.
6 C
7 C
8 C PROGRAM BY: PATRICK CHAMPAGNE
9 C DEFENSE COMMUNICATIONS DIVISION
10 C CANADIAN MARCONI COMPANY
11 C 2442 TRENTON, MONTREAL, QUEBEC, CANADA
12 C
13 C 2 POSSIBLE OSCILLATION CONDITIONS ARE ANALYZED:
14 C A) TRANSISTOR POTENTIALLY UNSTABLE
15 C B) TRANSISTOR UNCONDITIONNALLY STABLE (THE COMPUTATION OF
16 C THE OPTIMUM NETWORK FOR NEGATIVE CONDUCTANCE IS BASED ON
17 C R.SPENCE'S "LINEAR ACTIVE NETWORKS")
18 C
19 C
20 C THE FOLLOWING PARAMETERS ARE USED IN THE PROGRAM:
21 C Sij :S PARAMETERS OF THE TRANSISTOR
22 C Yij :Y PARAMETERS OF THE TRANSISTOR
23 C EEFF :EFFECTIVE DIELECTRIC CONSTANT OF MICROSTRIP
24 C WL :WAVELENGTH
25 C BGi :FEEDBACK SUSCEPTANCE FOR MAX. NEG. CONDUCTANCE
26 C GNi :MAXIMUM NEGATIVE CONDUCTANCES
27 C ZIN :RESONATOR IMPEDANCE AS SEEN BY TRANSISTOR
28 C XIN :RESONATOR ADMITTANCE AS SEEN BY TRANSISTOR
29 C B0 :TRANSISTOR OUTPUT SUSCEPTANCE
30 C XM(i,j):INDEFINITE ADMITTANCE MATRIX
31 C YE,Y0,
32 C YC,YB :TRANSISTOR ADMITTANCES
33 C
34 $DEBUG
35 COMPLEX S11,S21,S12,S22,Y11,Y12,Y21,Y22,Y1,Y2,Y3,Y4,DEL
36 COMPLEX XM(3,3),D,YE,YB,YC,Y0,GM,ZIN,XIN
37 CHARACTER*10 AA
38 WRITE(*,3)
39 OPEN(6,FILE='PRN',STATUS='OLD')
40 WRITE(6,700)
41 700 FORMAT(' *****************************************************')
42 WRITE(6,710)
43 710 FORMAT(' * *')
44 WRITE(6,3)
45 3 FORMAT(' * COMPUTATION OF TRANSISTORIZED OSCILLATORS * ')
46 WRITE(6,710)
47 WRITE(6,700)
48 WRITE(*,7)
49 7 FORMAT(1H0,'TRANSISTOR TYPE?')
50 READ(*,9)AA
51 9 FORMAT(A)
52 WRITE(*,11)AA
53 WRITE(6,11)AA
54 11 FORMAT(1H0,'THE TRANSISTOR USED IS ',A)
55 WRITE(*,13)
56 13 FORMAT(1H0,'BIAS CONDITIONS (VCE,IC) OR (VDS,ID)?')
Page 2
01-01-80
00:05:05
D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985
57 READ(*,17)VCE,AIC
58 17 FORMAT(2F6.3)
59 WRITE(6,19)
60 19 FORMAT(1H0,'BIAS CONDITIONS')
61 WRITE(6,21)VCE,AIC
62 21 FORMAT(1H0,'VCE(VDS)=',F6.3,'V',3X,'IC(ID)=',F6.3,'MA')
63 WRITE(*,61)
64 61 FORMAT(1H0,'OPERATING FREQUENCY (IN GHZ)')
65 READ (*,62) FREQ
66 62 FORMAT(F6.3)
67 WRITE(*,63) FREQ
68 WRITE(6,63) FREQ
69 63 FORMAT(1H0,'THE OPERATING FREQUENCY IS ',F6.3,' GHZ')
70 C
71 C THE COMPUTATION OF THE EFFECTIVE DIELECTRIC CONSTANT IS BASED
72 C ON EDWARDS' 'FOUNDATIONS FOR MICROSTRIP DESIGN'
73 C
74 T1=0.43*FREQ**2-0.009*FREQ**3
75 T2=(.635/50)**1.33
76 T1=1+T1*T2
77 C
78 C E EFF. =6.53 IS USED FOR F=0
79 C
80 T1=(9.8-6.53)/T1
81 EEFF=9.8-T1
82 WL=298/(FREQ*EEFF**.5)
83
84 WRITE(6,96)WL
85 96 FORMAT(1H0,'THE WAVELENGTH IS ',F6.3,' MM')
86 C
87 C THE TRANSISTOR CONFIGURATION CORRESPOND TO THE CONDITION
88 C FOR WHICH THE S-PARAMETERS ARE GIVEN
89 C
90 WRITE(6,10)
91 WRITE(*,10)
92 10 FORMAT(1H0,'TRANSISTOR CONFIGURATION')
93 WRITE(*,12)
94 WRITE(6,12)
95 12 FORMAT(1H0,'1=CB,CG; 2=CE,CS; 3=CC,CD')
96 READ(*,23) ICONF
97 23 FORMAT(I2)
98 WRITE(6,14) ICONF
99 14 FORMAT(1H0,10X,I2)
100 C
101 C S PARAMETERS READING
102 C
103 WRITE(*,15)
104 WRITE(6,15)
105 15 FORMAT(1H0,'S11:AMPLITUDE AND PHASE (DEGREES)')
106 READ(*,5) P11
107 READ(*,5) ARG11
108 WRITE(6,27)P11,ARG11
109 27 FORMAT(1H0,5X,2(F8.3,5X))
110 WRITE(*,20)
111 WRITE(6,20)
112 20 FORMAT(1H0,'S21:AMPLITUDE AND PHASE')
Page 3
01-01-80
00:05:05
D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985
113 READ(*,5) P21
114 READ(*,5) ARG21
115 WRITE(6,27) P21,ARG21
116 WRITE(*,25)
117 WRITE(6,25)
118 25 FORMAT(1H0,'S12:AMPLITUDE AND PHASE')
119 READ(*,5) P12
120 READ(*,5) ARG12
121 WRITE(6,27) P12,ARG12
122 WRITE(*,30)
123 WRITE(6,30)
124 30 FORMAT(1H0,'S22:AMPLITUDE AND PHASE')
125 READ(*,5) P22
126 READ(*,5) ARG22
127 WRITE(6,27) P22,ARG22
128 5 FORMAT (F8.3)
129 C
130 C TRANSFORMATION OF ANGLES FROM DEGREES TO RADIANS
131 C
132 XPI=3.1416/180
133 ARG11=ARG11*XPI
134 ARG21=ARG21*XPI
135 ARG12=ARG12*XPI
136 ARG22=ARG22*XPI
137 C
138 C COMPLEX S PARAMETERS
139 C
140 S11=CMPLX(P11*COS(ARG11),P11*SIN(ARG11))
141 S21=CMPLX(P21*COS(ARG21),P21*SIN(ARG21))
142 S12=CMPLX(P12*COS(ARG12),P12*SIN(ARG12))
143 S22=CMPLX(P22*COS(ARG22),P22*SIN(ARG22))
144 C
145 C ROLLETT STABILITY FACTOR
146 C
147 DEL=S11*S22-S12*S21
148 FS=1+CABS(DEL)**2-CABS(S11)**2-CABS(S22)**2
149 FS=FS/(2*CABS(S21)*CABS(S12))
150 WRITE(*,32) FS
151 WRITE(6,32) FS
152 32 FORMAT(1H0,'STABILITY FACTOR K=',F8.3,)
153 C
154 C K >= TO 1 CORRSPONDS TO UNCONDITIONNALLY STABLE
155 C
156 C Y PARAMETERS
157 C
158 D=(1+S11)*(1+S22)-S12*S21
159 Y11=((1+S22)*(1-S11)+S12*S21)/D
160 Y12=-(2*S12)/D
161 Y21=-(2*S21)/D
162 Y22=((1+S11)*(1-S22)+S12*S21)/D
163 WRITE(*,35) Y11
164 WRITE(6,35) Y11
165 35 FORMAT(///,1H0,'Y11=',2(F8.3,3X))
166 WRITE(*,40) Y12
167 WRITE(6,40) Y12
168 40 FORMAT(1H0,'Y12=',2(F8.3,3X))
Page 4
01-01-80
00:05:05
D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985
169 WRITE(*,45) Y21
170 WRITE(6,45) Y21
171 45 FORMAT(1H0,'Y21=',2(F8.3,3X))
172 WRITE(*,50) Y22
173 WRITE(6,50) Y22
174 50 FORMAT(1H0,'Y22=',2(F8.3,3X))
175 C
176 C IF THE TRANSISTOR IS POTENTIALLY UNSTABLE, THE SERIES FEEDBACK
177 C NETWORK (CONTAINING ONLY ONE SUSCEPTANCE), WHICH MAXIMIZES THE
178 C NEGATIVE CONDUCTANCE, IS CALCULATED.
179 C
180 IF (FS.GE.1)GOTO 200
181 WRITE(*,52)
182 WRITE(6,52)
183 52 FORMAT(1H0,'ONE SUSCEPTANCE NETWORK CALCULATION')
184 G11=REAL(Y11)
185 G22=REAL(Y22)
186 B11=AIMAG(Y11)
187 B22=AIMAG(Y22)
188 YM=REAL(Y12*Y21)
189 YL=CABS(Y12*Y21)
190 YI=AIMAG(Y12*Y21)
191 C
192 C 2 SOLUTIONS ARE POSSIBLE FOR SERIES FEEDBACK SUSCEPTANCE.
193 C FOR EACH OF THE SOLUTIONS, THE NEGATIVE CONDACTANCE IS
194 C COMPUTED AND THE LARGEST VALUE WILL BE USED.
195 C
196 C THE COMPUTATION IS DONE FOR BOTH POSSIBLE OUTPUT PORT.
197 C THE USER MUST DECIDE, BASED ONT THESE RESULTS, WHICH WILL
198 C THE CHOSEN CONFIGURATION.
199 C
200 BG1=-B11+(G11*YI)/(YM+YL)
201 Y1=CMPLX(0.,BG1)
202 GN1=G22-(YM+YL)/(2*G11)
203 BG2=-B11+(G11*YI)/(YM-YL)
204 Y2=CMPLX(0.,BG2)
205 GN2=G22-(YM-YL)/(2*G11)
206 WRITE(*,60)GN1,GN2
207 WRITE(6,60)GN1,GN2
208 60 FORMAT(1H0,'NEG. CONDUCTANCES :GN1= ',F8.3,' GN2=',F8.3)
209 IF(GN1.LE.GN2)GOTO 65
210 WRITE(*,70)
211 WRITE(6,70)
212 70 FORMAT(1H0,'GN2 MORE NEG. THAN GN1, GNMAX=GN2')
213 80 GNMAX=GN2
214 BG=BG2
215 GOTO 85
216 65 WRITE(*,90)
217 WRITE(6,90)
218 90 FORMAT(1H0,'GN1 MORE NEG. THAN GN2, GNMAX=GN1')
219 75 GNMAX=GN1
220 BG=BG1
221 85 WRITE(*,95)
222 WRITE(6,95)
223 95 FORMAT(1H0,'CIRCUIT PARAMETERS FOR AN OUTPUT ON PORT 2')
224 B0=B22-AIMAG((Y12*Y21)/(Y11+CMPLX(0.,BG)))
Page 5
01-01-80
00:05:05
D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985
225 WRITE(*,100) GNMAX,BG,B0
226 WRITE(6,100) GNMAX,BG,B0
227 C
228 C COMPUTATION OF THE DISTANCE BETWEEN DR AND TRANSISTOR.
229 C AN ALUMINA WITH 50OHMS LINES IS ASSUMED.
230 C
231 100 FORMAT(1H0,5X,'GNMAX=',F8.3,' BG=',F8.3,' B0=',F8.3)
232 DIST=ATAN(BG)
233 IF (DIST.GE.0.0)GOTO 102
234 DIST=DIST+3.1416
235 102 DIST=DIST*WL/6.2832
236 WRITE(*,97)DIST
237 WRITE(6,97)DIST
238 97 FORMAT(1H0,'THE DISTANCE BETWEEN DR AND TRANS.=',F6.3,' MM')
239 C
240 C COMPUTATION OF OUTPUT ADMITTANCES FOR REAL DR
241 C
242 WRITE(6,620)
243 WRITE(*,620)
244 620 FORMAT(/,1H0,'ADMITTANCES WITH REAL DR')
245 WRITE(*,800)
246 800 FORMAT(1H0,' ENTER S11 MAX, S11 MIN AND # OF COMPUTATIONS')
247 READ (*,810) CLIM1,CLIM2,M
248 810 FORMAT(2F6.3,I2)
249 DRHO=(CLIM1-CLIM2)/M
250 M=M+1
251 DO 820 I=1,M
1 252 RHO=CLIM2+DRHO*(I-1)
1 253 RES=(((100*RHO)/(1-RHO))+50.)/50.
1 254 ZIN=RES+CMPLX(0.,1.)*TAN(DIST*6.2832/WL)
1 255 ZIN=ZIN/(1+CMPLX(0.,RES)*TAN(DIST*6.2832/WL))
1 256 XIN=1/ZIN
1 257 BOUT=B22-AIMAG((Y12*Y21)/(Y11+XIN))
1 258 GNEG=G22-REAL((Y12*Y21)/(Y11+XIN))
1 259 WRITE(*,630)RHO,GNEG,BOUT
1 260 WRITE(6,630)RHO,GNEG,BOUT
1 261 630 FORMAT(/,' RHO=',F6.3,3X,'GNEG=',F6.3,3X,'BOUT=',F6.3)
1 262 WRITE(6,615)ZIN,XIN
1 263 615 FORMAT(' ZIN=',2F6.3,5X,'XIN=',2F6.3)
1 264 820 CONTINUE
265 880 WRITE(*,850)
266 850 FORMAT(1H0,'ENTER S11 AND DIST(MM),(S11<0 ==>FIN)')
267 READ (*,825) RHO,DIST
268 825 FORMAT(2F6.3)
269 IF (RHO.LT.0)GOTO 900
270 RES=(((100*RHO)/(1-RHO))+50.)/50.
271 ZIN=RES+CMPLX(0.,1.)*TAN(DIST*6.2832/WL)
272 ZIN=ZIN/(1+CMPLX(0.,RES)*TAN(DIST*6.2832/WL))
273 XIN=1/ZIN
274 BOUT=B22-AIMAG((Y12*Y21)/(Y11+XIN))
275 GNEG=G22-REAL((Y12*Y21)/(Y11+XIN))
276 WRITE(*,630)RHO,GNEG,BOUT
277 WRITE(6,630)RHO,GNEG,BOUT
278 WRITE(6,890)ZIN,XIN,DIST
279 890 FORMAT(' ZIN=',2F6.3,5X,'XIN=',2F6.3,3X,'DIST=',F6.3)
280 GOTO 880
Page 6
01-01-80
00:05:05
D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985
281 900 BG3=-B22+(G22*YI)/(YM+YL)
282 Y3=CMPLX(0.,BG3)
283 GN3=G11-(YM+YL)/(2*G22)
284 BG4=-B22+(G22*YI)/(YM-YL)
285 Y4=CMPLX(0.,BG4)
286 GN4=G11-(YM-YL)/(2*G22)
287 WRITE(*,105)GN3,GN4
288 WRITE(6,105)GN3,GN4
289 105 FORMAT(///,1H0,'NEGATIVE CONDUCTANCES: GN3=',F8.3,5X,'GN4=',F8.3)
290 IF(GN3.LE.GN4)GOTO 120
291 WRITE(*,110)
292 WRITE(6,110)
293 110 FORMAT(1H0,'GN4 MORE NEG. THAN GN3, GNMAX=GN4')
294 115 GNMAXA=GN4
295 BGA=BG4
296 GOTO 135
297 120 WRITE(*,125)
298 WRITE(6,125)
299 125 FORMAT(1H0,'GN3 MORE NEG. THAN GN4, GNMAX=GN3')
300 130 GNMAXA=GN3
301 BGA=BG3
302 135 WRITE(*,140)
303 WRITE(6,140)
304 140 FORMAT(1H0,'CIRCUIT PARAMETERS FOR AN OUTPUT ON PORT 1')
305 B0A=B11-AIMAG((Y12*Y21)/(Y22+CMPLX(0.,BGA)))
306 WRITE(*,100) GNMAXA,BGA,B0A
307 WRITE(6,100) GNMAXA,BGA,B0A
308 DIST=ATAN(BGA)
309 IF (DIST.GE.0.0) GOTO 103
310 DIST=DIST+3.1416
311 103 DIST=DIST*WL/6.2832
312 WRITE(*,142)DIST
313 WRITE(6,142)DIST
314 142 FORMAT(1H0,'THE DISTANCE BETWEEN DR AND TRANS.=',F6.3,' MM')
315 WRITE(6,620)
316 WRITE(*,620)
317 WRITE(*,800)
318 READ (*,810) CLIM1,CLIM2,M
319 DRHO=(CLIM1-CLIM2)/M
320 M=M+1
321 DO 920 I=1,M
1 322 RHO=CLIM2+DRHO*(I-1)
1 323 RES=(((100*RHO)/(1-RHO))+50.)/50.
1 324 ZIN=RES+CMPLX(0.,1.)*TAN(DIST*6.2832/WL)
1 325 ZIN=ZIN/(1+CMPLX(0.,RES)*TAN(DIST*6.2832/WL))
1 326 XIN=1/ZIN
1 327 BOUT=B11-AIMAG((Y12*Y21)/(Y22+XIN))
1 328 GNEG=G11-REAL((Y12*Y21)/(Y22+XIN))
1 329 WRITE(*,630)RHO,GNEG,BOUT
1 330 WRITE(6,630)RHO,GNEG,BOUT
1 331 WRITE(6,615)ZIN,XIN
1 332 920 CONTINUE
333 1010 WRITE(*,850)
334 READ (*,825) RHO,DIST
335 IF(RHO.LT.0)GOTO 200
336 RES=(((100*RHO)/(1-RHO))+50.)/50.
Page 7
01-01-80
00:05:05
D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985
337 ZIN=RES+CMPLX(0.,1.)*TAN(DIST*6.2832/WL)
338 ZIN=ZIN/(1+CMPLX(0.,RES)*TAN(DIST*6.2832/WL))
339 XIN=1/ZIN
340 BOUT=B11-AIMAG((Y12*Y21)/(Y22+XIN))
341 GNEG=G11-REAL((Y12*Y21)/(Y22+XIN))
342 WRITE(*,630)RHO,GNEG,BOUT
343 WRITE(6,630)RHO,GNEG,BOUT
344 WRITE(6,890)ZIN,XIN,DIST
345 GOTO 1010
346 200 WRITE(*,150)
347 IF(FS.LT.1) GOTO 500
348 WRITE(6,150)
349 150 FORMAT(///,1H0,'THREE ADMITTANCES NETWORK CALCULATION')
350 IF(ICONF-2)205,215,225
351 C
352 C THE ANALYSIS IS BASED ON SMALL-SIGNAL S-PARAMETERS. THE NETWORK
353 C CONSISTING OF THREE ADMITTANCES WHICH LEADS TO A MAXIMUM
354 C LOADING OSCILLATOR IS COMPUTED. EACH OF THE THREE POSSIBLE OUTPUT
355 C PORTS IS CONSIDERED.
356 C
357 205 XM(1,1)=Y11
358 XM(3,1)=Y21
359 XM(2,1)=-(Y11+Y21)
360 XM(1,3)=Y12
361 XM(1,2)=-(Y12+Y11)
362 XM(3,3)=Y22
363 XM(2,3)=-(Y22+Y12)
364 XM(3,2)=-(Y22+Y21)
365 XM(2,2)=-(XM(3,2)+XM(1,2))
366 WRITE(*,210)
367 WRITE(6,210)
368 210 FORMAT(1H0,15X,'Y(I,J) MATRIX FROM CB OR CG')
369 GOTO 235
370 215 XM(2,2)=Y11
371 XM(2,3)=Y12
372 XM(3,2)=Y21
373 XM(3,3)=Y22
374 XM(2,1)=-(Y11+Y12)
375 XM(3,1)=-(Y21+Y22)
376 XM(1,2)=-(Y11+Y21)
377 XM(1,3)=-(Y12+Y22)
378 XM(1,1)=-(XM(1,2)+XM(1,3))
379 WRITE(*,220)
380 WRITE(6,220)
381 220 FORMAT(1H0,15X,'Y(I,J) MATRIX FROM CE OR CS')
382 GOTO 235
383 225 XM(1,1)=Y22
384 XM(1,2)=Y21
385 XM(2,1)=Y12
386 XM(2,2)=Y11
387 XM(1,3)=-(Y22+Y21)
388 XM(2,3)=-(Y12+Y11)
389 XM(3,1)=-(Y22+Y12)
390 XM(3,2)=-(Y21+Y11)
391 XM(3,3)=-(XM(3,1)+XM(3,2))
392 WRITE(*,230)
Page 8
01-01-80
00:05:05
D Line# 1 7 Microsoft FORTRAN77 V3.31 August 1985
393 WRITE(6,230)
394 230 FORMAT(1H0,15X,'Y(I,J) MATRIX FROM CC OR CD')
395 235 DO 240 I=1,3
1 396 WRITE(*,245)(XM(I,J),J=1,3)
1 397 WRITE(6,245)(XM(I,J),J=1,3)
1 398 245 FORMAT(1H0,3(4X,2(F8.3)))
1 399 240 CONTINUE
400 GM=(1/3)*(REAL(XM(1,1))+REAL(XM(2,2))+REAL(XM(3,3)))
401 IF (CABS(GM).GE.0) GOTO 250
402 WRITE(*,255)
403 WRITE(6,255)
404 255 FORMAT(1H0,2X,'AVERAGE AUTO-CONDUCTANCE <0, INACTIVE DEVICE')
405 GOTO 500
406 250 YE=0.5*(XM(2,2)+XM(3,3)-XM(1,1))
407 YB=0.5*(XM(3,3)+XM(1,1)-XM(2,2))
408 YC=0.5*(XM(1,1)+XM(2,2)-XM(3,3))
409 Y0=0.5*(XM(1,2)-XM(2,1))
410 T=AIMAG(Y0)**2
411 T=T-(REAL(YE)*REAL(YB)+REAL(YB)*REAL(YC)+REAL(YC)*REAL(YE))
412 C
413 C BASE NETWORK
414 C
415 XF=REAL(Y0)/AIMAG(Y0)
416 WRITE(*,265)
417 WRITE(6,265)
418 265 FORMAT(//,1H0,'BASE SUSCEPTANCES OF THE NETWORK')
419 BBC=-XF*REAL(YE)-AIMAG(YE)
420 BEC=-XF*REAL(YB)-AIMAG(YB)
421 BEB=-XF*REAL(YC)-AIMAG(YC)
422 WRITE(*,270)BBC
423 WRITE(6,270)BBC
424 270 FORMAT(//,1H0,'BBC=',2X,F8.3)
425 WRITE(*,280)BEC
426 WRITE(6,280)BEC
427 280 FORMAT(1H0,'BEC=',2X,F8.3)
428 WRITE(*,290)BEB
429 WRITE(6,290)BEB
430 290 FORMAT(1H0,'BEB=',2X,F8.3)
431 C
432 C COMPUTATION OF SUSCEPTANCE TO BE ADDED IN
433 C PARALL WITH MAXIMUM LOAD
434 C
435 WRITE(6,260)
436