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

    Source: geocities.com/russlk/basic

               ( geocities.com/russlk)