10 REM PLLDES.BAS 11 REM This program designs a type 1 or type 2 pll, see PLLDES.DOC 12 REM Written by Russ Kincaid , Savage Road, Milford, NH 03055 13 REM VERSION 1.0, 23 APRIL 1990 REVISED 18 JUNE 1999 14 CLS : PRINT TAB(20);"*****************************" 15 PRINT TAB(20);"* PHASE LOCK LOOP DESIGN *" 16 PRINT TAB(20);"* PROGRAM *" 17 PRINT TAB(20);"* by Russ Kincaid *" 18 PRINT TAB(20);"*****************************" : PRINT:PRINT 20 PRINT"WILL YOU DESIGN A (1) TYPE 1 PLL WITH PASSIVE FILTER OR 30 INPUT" (2) TYPE 2 PLL WITH INTEGRATOR FILTER";N 40 ON N GOTO 100, 2000 100 REM PLLPAS FOR PASSIVE FILTER TOPOGRAPHY 105 CLS 110 PRINT"PHASE LOCK LOOP DESIGN PROGRAM":PRINT 120 PRINT"WRITTEN BY RUSS KINCAID, MILFORD, NH 03055":PRINT 130 PRINT "THIS IS THE TYPE 1 CIRCUIT:" 140 PRINT"" 150 PRINT" FREQ. FEEDBACK " 160 PRINT" |-----------------------------------| " 170 PRINT" |-----|-----| |----------| | " 180 PRINT" FREQ --|DEMODULATOR|--R1--|------|--|OSCILLATOR|-|--FREQ" 190 PRINT" INPUT |-----------| | | |----------| OUT " 200 PRINT" R2 C2 " 210 PRINT" MODULATION---------| | " 220 PRINT" OUT C1 GND " 230 PRINT" | " 240 PRINT" GND " 250 PRINT"" 260 PRINT"In addition to the values for R & C in the file PLLVAL.TXT, a SPICE" 270 PRINT"file will be generated in PLLTST.CIR to simulate the loop.": PRINT 280 PI=3.14159 290 PRINT"WILL YOU GIVE THE DEMOD SENSITIVITY IN (1) VOLTS/RADIAN or " 300 INPUT"(2) VOLTS OUTPUT AT 90 DEGREES";Y 310 ON Y GOTO 340,320 320 INPUT"WHAT IS THE MAX DEMODULATOR OUTPUT IN VOLTS AT 90 DEGREES";KD 330 KD=KD*2/PI : GOTO 350 340 INPUT"WHAT IS THE DEMODULATOR GAIN IN VOLTS/RADIAN";KD 344 PRINT"WILL YOU GIVE THE OSCILLATOR SENSITIVITY IN (1) HZ/VOLT OR " 346 PRINT"(2) RADIANS/SEC/VOLT"; 348 INPUT Y 349 ON Y GOTO 350,356 350 INPUT"WHAT IS THE OSCILLATOR SENSITIVITY IN HZ/VOLT";KO:KO=KO*2*PI 352 GOTO 360 356 INPUT"WHAT IS THE OSCILLATOR SENSITIVITY IN RADIANS/SEC/VOLT ";KO 360 INPUT"WHAT IS THE OSCILLATOR CENTER FREQUENCY IN HZ";FO:WO=2*PI*FO 370 IF F0<.159*KO*KD THEN PRINT:PRINT"CAUTION, DO NOT TRY TO MAKE THE"; 380 PRINT" BANDWIDTH GREATER THAN ";FO/2;" HZ":PRINT 390 PRINT"THE GAIN BANDWIDTH (F3) IS:";.159*KO*KD;" HZ" 400 PRINT"THE DEFAULT GAIN FROM F2 (10dB) WILL GIVE A NO OVERSHOOT RESPONSE" 410 GM=10 420 INPUT"WILL YOU SPECIFY (1) RESPONSE TIME OR (2) CLOSED LOOP BANDWIDTH";S 430 ON S GOTO 440,450 440 INPUT"WHAT IS THE MODULATION RESPONSE TIME";TR:BW=.409/TR:GOTO 460 450 INPUT"WHAT IS THE 3DB BANDWITH CLOSED LOOP";BW:TR=.409/BW 460 F3 = .159*KO*KD : F2 = BW/1.28 470 DEC = .4343*LOG(F3/F2) : DB2 = 20*DEC : K=1 : IF F2<100 THEN K=10 480 FOR DB = DB2 TO 100 STEP .5 490 A = F3/(10^(DB/20)) : B = F2/(10^((DB-GM)/40)) 500 IF INT(K*A)=INT(K*B) THEN 540 510 IF A99 THEN PRINT"This is not practical, reduce the gain.":PRINT 540 F1 = F3/10^(DB/20) 550 IF F2/F1<2 THEN 570 560 GOTO 590 570 PRINT TAB(10);"THIS IS NOT A GOOD DESIGN, EITHER RAISE THE GAIN OR" 580 PRINT TAB(10);"REDUCE THE BANDWIDTH":PRINT 590 INPUT"WILL YOU CHOOSE R1 OR C1";Y$:IF LEFT$(Y$,1)="R" THEN 650 600 INPUT"CHOOSE A VALUE FOR C1 IN FARADS";C1 610 R1 = 1/2/PI/F1/C1 : PRINT:PRINT"R1=";R1:PRINT 620 R2 = 1/2/PI/F2/C1 : PRINT"R2=";R2 630 INPUT"WILL YOU CHANGE C1 (Y or N)";Y$:IF Y$="N" THEN 700 640 INPUT"NEW VALUE FOR C1 = ";C1:GOTO 610 650 INPUT"CHOOSE A VALUE FOR R1 IN OHMS";R1 660 C1 = 1/2/PI/F1/R1 : PRINT:PRINT"C1=";C1 670 R2 = 1/2/PI/F2/C1 : PRINT"R2=";R2 680 INPUT"WILL YOU CHANGE R1 (Y OR N)";Y$: IF Y$="N" THEN 700 690 INPUT"NEW VALUE FOR R1 = ";R1:GOTO 660 700 C2 = C1/100 710 PRINT:PRINT" SUMMARY OF COMPONENT VALUES":PRINT 720 PRINT"DEMODULATOR CONSTANT = ";KD;" VOLTS PER RADIAN" 730 PRINT"OSCILLATOR CONSTANT = ";KO;" RADIANS/SEC/VOLT" 740 PRINT"FIRST CUT FREQ (LAG) = ";F1;" HZ" 750 PRINT"SECOND CUT FREQ. (LEAD) = ";F2;" HZ" 760 PRINT"CLOSED LOOP BANDWIDTH = ";BW;" HZ" 770 PRINT"RESPONSE TIME = ";TR;" SEC " 780 PRINT"PULL-IN RANGE = ";.707/PI*(4*PI*BW*KO*KD-(2*PI*BW)^2)^(1/2); 790 PRINT" HZ" 800 PRINT"MAX FREQUENCY STEP AT THE INPUT = ";SQR(KO*KD/R1/C1)/1.6;" HZ" 810 PRINT" R1=";R1 820 PRINT" R2=";R2:PRINT"C1=";C1:PRINT"C2=";C2:PRINT 824 PRINT"LOOK IN FILE PLLVAL.TXT FOR A SUMMARY OF VALUES" 830 OPEN "PLLVAL.TXT" FOR OUTPUT AS #2 840 PRINT:PRINT#2," SUMMARY OF COMPONENT VALUES":PRINT 850 PRINT#2,"DEMODULATOR CONSTANT = ";KD;" VOLTS PER RADIAN" 860 PRINT#2,"OSCILLATOR CONSTANT = ";KO;" RADIANS/SEC/VOLT" 870 PRINT#2,"FIRST CUT FREQ (LAG) = ";F1;" HZ" 880 PRINT#2,"SECOND CUT FREQ. (LEAD) = ";F2;" HZ" 890 PRINT#2,"CLOSED LOOP BANDWIDTH = ";BW;" HZ" 900 PRINT#2,"RESPONSE TIME = ";TR;" SEC " 910 PRINT#2,"PULL-IN RANGE = ";.707/PI*(4*PI*BW*KO*KD-(2*PI*BW)^2)^(1/2); 920 PRINT#2," HZ" 930 PRINT#2,"MAX FREQUENCY STEP AT THE INPUT = ";SQR(KO*KD/R1/C1)/1.6;" HZ" 940 PRINT#2," R1=";R1 950 PRINT#2," R2=";R2:PRINT#2,"C1=";C1 : PRINT#2,"C2=";C2 951 PRINT#2,:PRINT#2, 952 PRINT#2, "THIS IS THE TYPE 1 CIRCUIT:" 953 PRINT#2,"" 954 PRINT#2," FREQ. FEEDBACK " 955 PRINT#2," |-----------------------------------| " 956 PRINT#2," |-----|-----| |----------| | " 957 PRINT#2," FREQ --|DEMODULATOR|--R1--|------|--|OSCILLATOR|-|--FREQ" 958 PRINT#2," INPUT |-----------| | | |----------| OUT " 959 PRINT#2," R2 C2 " 960 PRINT#2," MODULATION---------| | " 961 PRINT#2," OUT C1 GND " 962 PRINT#2," | " 963 PRINT#2," GND " 964 PRINT#2,"" 965 CLOSE#2 970 PRINT:PRINT"LOOK IN FILE PLLTST.CIR FOR THE SPICE LISTING" 980 OPEN "PLLTST.CIR" FOR OUTPUT AS #1 990 PRINT#1,"* TYPE 1 PHASE LOCK LOOP MODEL * * GENERATED ";DATE$;" ";TIME$ 1000 PRINT#1,".AC DEC 20 ";.0005*BW;" ";200*BW 1010 PRINT#1,".OPTIONS LIMPTS 1000" 1020 PRINT#1,".NODESET V(13)=0 V(3)=0 1030 PRINT#1,".PRINT AC V(2) VP(2) V(3) VP(3)" 1040 PRINT#1,"* ALIAS V(3)=VOUT" 1050 PRINT#1,"* ALIAS V(2)=VFREQ " 1060 PRINT#1,"* VOUT IN VOLTS IS EQUAL TO THE OSCILLATOR OUTPUT IN RADIANS" 1070 STP=1/BW/100 1080 PRINT#1,".TRAN ";STP;" ";2/BW 1090 PRINT#1,".PRINT TRAN V(2) V(3)" 1100 PRINT#1,"*VIN 4 0 AC 1 PULSE 0 1 0 ";STP;" ";STP;" ";2/BW 1110 PRINT#1,"EMIX 13 0 0 1 10K" 1120 PRINT#1,"EOSC 3 0 0 6 10K 1130 PRINT#1,"EFB 11 0 0 3 1 1140 PRINT#1,"* FOR AN OPEN LOOP RESPONSE, REMOVE THE ASTERISKS AND CHANGE EFB * 1150 PRINT#1,"*EFB 11 0 0 33 1 1160 PRINT#1,"*ROL 3 33 100MEG" 1170 PRINT#1,"*COL 33 0 100" 1180 PRINT#1,"*RA 4 1 1K" 1190 PRINT#1,"RB 1 11 1K" 1200 PRINT#1,"RD 1 13 ";STR$(KD)+"K" 1210 PRINT#1,"R1 13 5 ";R1 1220 PRINT#1,"R2 2 5 ";R2 1230 PRINT#1,"C2 5 0 ";C2 1240 PRINT#1,"RO 5 6 1MEG" 1250 PRINT#1,"C1 2 0 ";C1 1260 PRINT#1,"C3 6 3 ";STR$(1/KO*.000001) 1270 PRINT#1,"VM 10 0 AC 1 PULSE 1 0 0 ";STP;" ";STP;" ";2/BW 1280 PRINT#1,"RM 10 6 1MEG" 1290 PRINT#1,".END" : CLOSE#1 1300 SYSTEM 2000 REM PLLACT.BAS INTEGRATOR FILTER VERSION 4/18/90 2005 CLS 2010 PRINT"PHASE LOCK LOOP DESIGN PROGRAM":PRINT 2020 PRINT"WRITTEN BY RUSS KINCAID, MILFORD, NH 03055":PRINT 2030 PRINT "THIS IS THE TYPE 2 CIRCUIT:" 2040 PRINT" " 2050 PRINT" |--C1-R2-| " 2060 PRINT" |-----------| | | |----------| " 2070 PRINT" FREQ --|DEMODULATOR|--R1----OPAMP----R3----|OSCILLATOR|---FREQ" 2080 PRINT" INPUT |-----|-----| | |----------| OUT " 2090 PRINT" | C2 | " 2100 PRINT" | | | " 2110 PRINT" | FREQ FEEDBACK GND | " 2120 PRINT" |----------------------------------------| " 2130 PRINT" " 2140 PRINT" " 2150 PRINT"In addition to the values for R & C in the file PLLVAL.TXT, a SPICE" 2160 PRINT"file will be generated in PLLTST.CIR to simulate the loop.": PRINT 2170 PI=3.14159 2180 PRINT"WILL YOU GIVE THE DEMOD SENSITIVITY IN (1) VOLTS/RADIAN or " 2190 INPUT"(2) VOLTS OUTPUT AT 90 DEGREES";Y 2200 ON Y GOTO 2210,2220 2210 INPUT"WHAT IS THE DEMODULATOR GAIN IN VOLTS/RADIAN";KD:GOTO 2240 2220 INPUT"WHAT IS THE MAX DEMODULATOR OUTPUT IN VOLTS AT 90 DEGREES";KD 2230 KD=KD*2/PI 2232 PRINT"WILL YOU GIVE THE OSCILLATOR SENSITIVITY IN (1) HZ/VOLT OR" 2234 PRINT"(2) RADIANS/SEC/VOLT "; 2236 INPUT Y 2238 ON Y GOTO 2240,2244 2240 INPUT"WHAT IS THE OSCILLATOR SENSITIVITY IN HZ/VOLT";KO:KO=KO*2*PI 2242 GOTO 2250 2244 INPUT"WHAT IS THE OSCILLATOR SENSITIVITY IN RADIANS/SEC/VOLT ";KO 2250 INPUT"WHAT IS THE OPAMP DC OPEN LOOP GAIN IN DB";AOPDB:AOP=10^(AOPDB/20) 2260 INPUT"WILL YOU SPECIFY (1) RESPONSE TIME OR (2) CLOSED LOOP BANDWIDTH";S 2270 ON S GOTO 2280,2290 2280 INPUT"WHAT IS THE RESPONSE TIME";TR:BW=.4/TR:GOTO 2300 : PRINT 2290 INPUT"WHAT IS THE 3DB BANDWITH CLOSED LOOP";BW : TR=.4/BW 2300 INPUT"SET THE RATIO OF F2/F1 [100]";X$ 2310 IF X$="" THEN X=100:GOTO 2330 2320 X=VAL(X$) 2330 F0 = BW*(.038*.4343*LOG(X)+.672) 2340 F1=F0/(.2805*(X)+1.25) 2350 DB = 8.686*LOG(F0/F1) : W3 = 2*PI*F1*10^(DB/40) 2360 KF = W3^2/KD/KO 2370 F2 = X*F1 2380 INPUT"WILL YOU CHOOSE R1 OR C1";Y$:IF LEFT$(Y$,1)="R" THEN 2440 2390 INPUT"CHOOSE A VALUE FOR C1 IN FARADS";C1 2400 R1 = 1/KF/C1 : PRINT:PRINT"R1=";R1:PRINT 2410 R2 = 1/2/PI/F1/C1 : PRINT"R2=";R2 2420 INPUT"WILL YOU CHANGE C1 (Y or N)";Y$:IF LEFT$(Y$,1)="N" THEN 2490 2430 INPUT"NEW VALUE FOR C1 = ";C1:GOTO 2400 2440 INPUT"CHOOSE A VALUE FOR R1 IN OHMS";R1 2450 C1 = 1/KF/R1 : PRINT:PRINT"C1=";C1 2460 R2 = 1/2/PI/F1/C1 : PRINT"R2=";R2 2470 INPUT"WILL YOU CHANGE R1";Y$:IF LEFT$(Y$,1)="N" THEN 2490 2480 INPUT"NEW VALUE FOR R1";R1:GOTO 2450 2490 INPUT"CHOOSE A VALUE FOR C2 IN FARADS",C2 2500 R3 = 1/2/PI/F2/C2 2510 PRINT:PRINT"R3=";R3:PRINT 2520 INPUT"WILL YOU CHANGE THE VALUE OF C2";Y$:IF Y$="N" THEN 2540 2530 INPUT"NEW VALUE FOR C2 = ";C2:GOTO 2500 2540 PRINT:PRINT" SUMMARY OF COMPONENT VALUES":PRINT 2550 PRINT"DEMODULATOR CONSTANT = ";KD;" VOLTS PER RADIAN" 2560 PRINT"INTEGRATOR CONSTANT = ";KF;" 1/SEC" 2570 PRINT"OSCILLATOR CONSTANT = ";KO;" RADIANS/SEC/VOLT" 2580 PRINT"FIRST CUT FREQ (LEAD) = ";F1;" HZ" 2590 PRINT"SECOND CUT FREQ. (LAG) = ";F2;" HZ" 2600 PRINT"CLOSED LOOP BANDWIDTH = ";BW;" HZ" 2610 PRINT"RESPONSE TIME = ";TR;" SEC " 2620 PRINT"PULL-IN RANGE = ";.707/PI*(4*PI*BW*KO*KD-(2*PI*BW)^2)^(1/2); 2630 PRINT" HZ" 2640 PRINT" R1=";R1 2650 PRINT" R2=";R2:PRINT" R3=";R3:PRINT"C1=";C1:PRINT"C2=";C2 2660 OPEN "PLLVAL.TXT" FOR OUTPUT AS #2 2670 PRINT:PRINT#2," SUMMARY OF COMPONENT VALUES":PRINT 2680 PRINT#2,"DEMODULATOR CONSTANT = ";KD;" VOLTS PER RADIAN" 2690 PRINT#2,"INTEGRATOR CONSTANT = ";KF;" 1/SEC" 2700 PRINT#2,"OSCILLATOR CONSTANT = ";KO;" RADIANS/SEC/VOLT" 2710 PRINT#2,"FIRST CUT FREQ (LEAD) = ";F1;" HZ" 2720 PRINT#2,"SECOND CUT FREQ. (LAG) = ";F2;" HZ" 2730 PRINT#2,"CLOSED LOOP BANDWIDTH = ";BW;" HZ" 2740 PRINT#2,"RESPONSE TIME = ";TR;" SEC" 2750 PRINT#2,"PULL-IN RANGE = ";.707/PI*(4*PI*BW*KO*KD-(2*PI*BW)^2)^(1/2); 2760 PRINT#2," HZ" 2770 PRINT#2," R1=";R1 2780 PRINT#2," R2=";R2:PRINT#2," R3=";R3:PRINT#2,"C1=";C1:PRINT#2,"C2=";C2 2790 PRINT#2,"DELTAG=";DELTAG ,"FCT=";FCT 2791 PRINT#2,:PRINT#2, 2792 PRINT#2, "THIS IS THE TYPE 2 CIRCUIT:" 2793 PRINT#2," _DEMOD OUTPUT " 2794 PRINT#2," |--C1-R2-| | " 2795 PRINT#2," |-----------| | | | |----------| " 2796 PRINT#2," FREQ --|DEMODULATOR|--R1----OPAMP----R3----|OSCILLATOR|---FREQ" 2797 PRINT#2," INPUT |-----|-----| | |----------| OUT " 2798 PRINT#2," | C2 | " 2799 PRINT#2," | | | " 2800 PRINT#2," | FREQ FEEDBACK GND | " 2801 PRINT#2," |----------------------------------------| " 2802 PRINT#2," " 2803 PRINT#2," " 2805 CLOSE#2 2810 PRINT:PRINT"LOOK IN FILE PLLTST.CIR FOR THE SPICE LISTING" 2820 OPEN "PLLTST.CIR" FOR OUTPUT AS #1 2830 PRINT#1,"* PHASE LOCK LOOP MODEL * * GENERATED ";DATE$;" ";TIME$ 2840 PRINT#1,".AC DEC 20 ";F1/4;" ";4*F2 2850 PRINT#1,".OPTIONS LIMPTS 1000" 2860 PRINT#1,".NODESET V(13)=0 V(15)=0 V(11)=0 2870 PRINT#1,".PRINT AC V(11) VP(11) V(5) VP(5)" 2880 PRINT#1,"* ALIAS V(11)=VOUT" 2890 PRINT#1,"* ALIAS V(5)=VFREQ " 2900 PRINT#1,"* VOUT IN VOLTS IS EQUAL TO THE OSCILLATOR OUTPUT IN RADIANS" 2910 STP=1/BW/100 2920 PRINT#1,".TRAN ";STP;" ";2/BW 2930 PRINT#1,".PRINT TRAN V(11) V(5)" 2940 PRINT#1,"VIN 4 0 AC 1 PULSE 0 1 0 ";STP;" ";STP;" ";2/BW 2950 PRINT#1,"EMIX 13 0 0 1 10K" 2960 PRINT#1,"EINT 15 0 0 3 ";AOP 2970 PRINT#1,"EOSC 11 0 0 6 10K 2980 PRINT#1,"* FOR AN OPEN LOOP RESPONSE, REMOVE THE ASTERISKS AND CHANGE RB * 2990 PRINT#1,"*EOL 30 0 31 0 1" 3000 PRINT#1,"*ROL 11 31 100MEG" 3010 PRINT#1,"*COL 31 0 100" 3020 PRINT#1,"* RB 1 30 1K" 3030 PRINT#1,"RA 4 1 1K" 3040 PRINT#1,"RB 1 11 1K" 3050 PRINT#1,"RD 1 13 ";STR$(KD)+"K" 3060 PRINT#1,"R1 13 3 ";R1 3070 PRINT#1,"R2 2 15 ";R2 3080 PRINT#1,"R3 15 5 ";R3 3090 PRINT#1,"RO 5 6 1MEG" 3100 PRINT#1,"C1 3 2 ";C1 3110 PRINT#1,"C2 5 0 ";C2 3120 PRINT#1,"C3 6 11 ";STR$(1/KO*.000001) 3130 PRINT#1,".END" : CLOSE#1 3140 SYSTEM 3150 END