home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HAM Radio 1
/
HamRadio.cdr
/
tech
/
design3
/
fildes.bas
< prev
next >
Wrap
BASIC Source File
|
1979-12-31
|
6KB
|
129 lines
10 FOR I=1 TO 10
20 PRINT CHR$(13)
30 NEXT I
40 PRINT " FILTER DESIGN PROGRAM FILDES.BAS"
50 PRINT:PRINT " BY TIM REGAN"
60 PRINT:PRINT " NATIONAL SEMICONDUCTOR CORPORATION"
70 PRINT " 2900 SEMICONDUCTOR DRIVE
80 PRINT " SANTA CLARA, CALIFORNIA 95051
90 PRINT:PRINT " VERSION 1.0 OCT 7, 1983
100 PRINT:PRINT
110 PRINT "This program determines all of the necessary parameters to design"
120 PRINT:PRINT "LOWPASS--HIGHPASS--BANDPASS and NOTCH filters synthesised using"
130 PRINT:PRINT "BUTTERWORTH--CHEBYSHEV or ELLIPTIC approximations.
140 PRINT:PRINT "NOTE: Lowpass and Highpass designs are limited to 10th Order..."
150 PRINT " Bandpass and Notch designs are limited to 20th Order"
160 PRINT:PRINT
170 PRINT "What response shape is to be designed:":PRINT
180 R=0:G=0:HCP=0:Z=0
190 INPUT "[L]owpass-[H]ighpass-[B]andpass-[N]otch (Enter 1 Letter)";R$
200 PRINT
210 IF R$="L" THEN R=1
220 IF R$="H" THEN R=2
230 IF R$="B" THEN R=3
240 IF R$="N" THEN R=4:IF R=0 GOTO 190
250 PRINT "Which filter type:":PRINT
260 INPUT "[B]utterworth--[C]hebyshev--[E]lliptic (Enter 1 Letter)";T$
270 IF T$="B" THEN G=1 ELSE IF T$="C" THEN G=2 ELSE IF T$="E" THEN G=3 ELSE 260
280 PRINT:INPUT "Do you want to Print Out all results (Y/N)";K$:PRINT
290 IF K$="Y" THEN HCP=1: GOTO 310
300 IF K$<>"N" GOTO 280
310 ON R GOSUB 410,410,660,660
320 OPEN "O",1,"PROTO"
330 PRINT #1,R,G,HCP,F1,F2,A1,Z
340 IF Z$="Y" THEN PRINT #1,N:GOTO 360
350 PRINT #1,A2
360 IF R<3 THEN PRINT #1,FC,FS:GOTO 380
370 PRINT #1,BW,SW,FCNTR
380 CLOSE #1
390 PRINT:PRINT "NOW LOADING THE FILTER SYNTHESIS PROGRAM...."
400 RUN "FILSYP.EXE"
410 REM ********** ENTER LOWPASS / HIGHPASS DATA **********
420 IF R=1 THEN F$="LOWPASS"
430 IF R=2 THEN F$="HIGHPASS"
440 PRINT:PRINT "What is the maximum Passband Ripple (Amax) in DB:":PRINT
450 IF G=1 THEN PRINT "For Butterworth, Amax is typically 3db":PRINT
460 INPUT "Enter in DB";A1
470 PRINT:PRINT
480 IF A1=0 THEN PRINT "Need a non-ZERO value for Amax!!!":GOTO 440
490 IF A1<0 THEN A1=-1*A1
500 INPUT "Enter the Corner Frequency (FC) in Hz";FC
510 PRINT:PRINT "Do you already know the order of this "F$" (Y/N)";:INPUT Z$
520 IF Z$="N" GOTO 560
530 IF Z$<>"Y" GOTO 510
540 PRINT:INPUT "What is the order (MUST BE LESS THAN 10)";N
550 Z=1:GOTO 590
560 PRINT:INPUT "Enter the Minimum Stopband Attenuation (Amin) in DB";A2
570 IF A2<0 THEN A2=-1*A2
580 IF A2<=A1 THEN PRINT:PRINT:PRINT "NOT MUCH OF A "F$"!!!....Amin<=Amax":GOTO 440
590 PRINT:INPUT "Enter the Stopband Frequency (FS) in Hz";FS
600 IF (FS<FC) AND (R=1) THEN PRINT:PRINT:PRINT "LOOKS LIKE A HIGHPASS!!!....FS<FC":GOTO 440
610 IF (FS>FC) AND (R=2) THEN PRINT:PRINT:PRINT "LOOKS LIKE A LOWPASS!!!...FS>FC":GOTO 440
620 PRINT:PRINT:IF FS=FC THEN PRINT "You're not "F$"ING ANYTHING....FS=FC!!!!!":GOTO 440
630 IF R=2 THEN F1=1:F2=FC/FS:GOTO 650
640 F1=1:F2=FS/FC
650 RETURN
660 REM ********** ENTER BANDPASS / NOTCH DATA **********
670 IF R=3 THEN F$="BANDPASS"
680 IF R=4 THEN F$="NOTCH"
690 PRINT:PRINT "For this "F$" filter which parameters do you know:"
700 PRINT "1. Upper and Lower Frequency Limits of the Passband and Stopband.
710 PRINT "2. Center Frequency, PASS Bandwidth and STOP Bandwidth.
720 INPUT "Select 1 or 2";K
730 ON K GOSUB 770,1010
740 IF R=3 THEN F1=1:F2=SW/BW
750 IF R=4 THEN F1=1:F2=BW/SW
760 RETURN
770 PRINT:INPUT "Enter the Maximum Passband Ripple (Amax) in DB";A1:PRINT
780 IF A1<0 THEN A1=-1*A1
790 IF A1=0 THEN PRINT:PRINT "Need a non-ZERO value for Amax!!!":GOTO 770
800 INPUT "Enter the Lower Frequency Edge of the Passband (FL) in Hz";FL:PRINT
810 INPUT "Enter the Higher Frequency Edge of the Passband (FH) in Hz";FH
820 IF FH<FL THEN PRINT:PRINT "The frequencies are BACKWARDS, FH<FL":GOTO 770
830 BW=FH-FL: FCNTR=SQR(FH*FL)
840 PRINT:PRINT "Do you know the Order of this "F$" (Y/N)";:INPUT Z$
850 IF Z$="N" GOTO 900
860 IF Z$<>"Y" GOTO 840
870 PRINT:INPUT "Enter the order (N)";N
880 Q=N MOD 2:IF Q<>0 THEN PRINT:PRINT "ORDER MUST BE EVEN":GOTO 870
890 Z=1:GOTO 930
900 PRINT:INPUT "Enter the Minimum Stopband Attenuation (Amin) in DB";A2
910 IF A2<0 THEN A2=-1*A2
920 IF A2<A1 THEN PRINT:PRINT "You're not ATTENUATING Anything!!! A2<A1":PRINT:GOTO 770
930 PRINT:INPUT "Enter the Lower Frequency Edge of the Stopband (FLS) in Hz";FLS
940 PRINT:INPUT "Enter the Higher Frequency Edge of the Stopband (FHS) in Hz";FHS
950 IF FHS<FLS THEN PRINT:PRINT "The frequencies are BACKWARDS, FHS<FLS":GOTO 770
960 SW=FHS-FLS
970 IF (R=3) AND (SW<BW) THEN PRINT:PRINT "LOOKS LIKE A NOTCH!!!...Stopband is narrower than the Passband":GOTO 770
980 IF (R=4) AND (BW<SW) THEN PRINT:PRINT "LOOKS LIKE A BANDPASS!!!...Passband is narrower than the Stopband":GOTO 770
990 IF BW=SW THEN PRINT:PRINT "You're not "F$"ing ANYTHING.....Passband=Stopband":GOTO 770
1000 RETURN
1010 PRINT:INPUT "Enter the Maximum Passband Ripple (Amax) in DB";A1
1020 IF A1<0 THEN A1=-1*A1
1030 IF A1=0 THEN PRINT:PRINT "Need a non-ZERO value for Amax!!!":GOTO 1010
1040 PRINT:INPUT "Enter the Center Frequency (FCNTR) in Hz";FCNTR
1050 PRINT:INPUT "Enter the Passband Bandwidth (BW) in Hz";BW
1060 X=BW^2+(4*FCNTR^2)
1070 Y=SQR(X)-BW
1080 IF Y<0 THEN Y=SQR(X)+BW
1090 FL=Y/2:FH=FL+BW
1100 PRINT "FCNTR="FCNTR" FL="FL" FH="FH
1110 PRINT:PRINT "Do you know the Order of this "F$" (Y/N)";:INPUT Z$
1120 IF Z$="N" GOTO 1170
1130 IF Z$<>"Y" GOTO 1110
1140 PRINT:INPUT "What is the Order (N)";N
1150 Q=N MOD 2:IF Q<>0 THEN PRINT:PRINT "ORDER MUST BE EVEN":GOTO 1140
1160 Z=1:GOTO 1200
1170 PRINT:INPUT "Enter the Minimum Stopband Attenuation (Amin) in DB";A2
1180 IF A2<0 THEN A2=-1*A2
1190 IF A2<A1 THEN PRINT:PRINT "You're not ATTENUATING Anything!!!...A2<A1":GOTO 1010
1200 PRINT:INPUT "Enter the Stopband Bandwidth (SW) in Hz";SW
1210 IF (R=3) AND (SW<BW) THEN PRINT:PRINT "LOOKS LIKE A NOTCH!!!...SW<BW":GOTO 1010
1220 IF (R=4) AND (BW<SW) THEN PRINT:PRINT "LOOKS LIKE A BANDPASS!!!...BW<SW":GOTO 1010
1230 X=SW^2+(4*FCNTR^2)
1240 Y=SQR(X)-SW
1250 IF Y<0 THEN Y=SQR(X)+BW
1260 FLS=Y/2:FHS=FLS+SW
1270 PRINT "FCNTR="FCNTR" FLS="FLS" FHS="FHS
1280 RETURN