home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / design3 / fildes.bas < prev    next >
BASIC Source File  |  1979-12-31  |  6KB  |  129 lines

  1. 10 FOR I=1 TO 10
  2. 20 PRINT CHR$(13)
  3. 30 NEXT I
  4. 40 PRINT "            FILTER DESIGN PROGRAM     FILDES.BAS"
  5. 50 PRINT:PRINT "                BY TIM REGAN"
  6. 60 PRINT:PRINT "          NATIONAL SEMICONDUCTOR CORPORATION"
  7. 70 PRINT "            2900 SEMICONDUCTOR DRIVE
  8. 80 PRINT "            SANTA CLARA, CALIFORNIA 95051
  9. 90 PRINT:PRINT "          VERSION 1.0         OCT 7, 1983
  10. 100 PRINT:PRINT
  11. 110 PRINT "This program determines all of the necessary parameters to design"
  12. 120 PRINT:PRINT "LOWPASS--HIGHPASS--BANDPASS and NOTCH filters synthesised using"
  13. 130 PRINT:PRINT "BUTTERWORTH--CHEBYSHEV or ELLIPTIC approximations.
  14. 140 PRINT:PRINT "NOTE: Lowpass and Highpass designs are limited to 10th Order..."
  15. 150 PRINT "      Bandpass and Notch designs are limited to 20th Order"
  16. 160 PRINT:PRINT
  17. 170 PRINT "What response shape is to be designed:":PRINT
  18. 180 R=0:G=0:HCP=0:Z=0
  19. 190 INPUT "[L]owpass-[H]ighpass-[B]andpass-[N]otch (Enter 1 Letter)";R$
  20. 200 PRINT
  21. 210 IF R$="L" THEN R=1
  22. 220 IF R$="H" THEN R=2
  23. 230 IF R$="B" THEN R=3
  24. 240 IF R$="N" THEN R=4:IF R=0 GOTO 190
  25. 250 PRINT "Which filter type:":PRINT
  26. 260 INPUT "[B]utterworth--[C]hebyshev--[E]lliptic (Enter 1 Letter)";T$
  27. 270 IF T$="B" THEN G=1 ELSE IF T$="C" THEN G=2 ELSE IF T$="E" THEN G=3 ELSE 260
  28. 280 PRINT:INPUT "Do you want to Print Out all results (Y/N)";K$:PRINT
  29. 290 IF K$="Y" THEN HCP=1: GOTO 310
  30. 300 IF K$<>"N" GOTO 280
  31. 310 ON R GOSUB 410,410,660,660
  32. 320 OPEN "O",1,"PROTO"
  33. 330 PRINT #1,R,G,HCP,F1,F2,A1,Z
  34. 340 IF Z$="Y" THEN PRINT #1,N:GOTO 360
  35. 350 PRINT #1,A2
  36. 360 IF R<3 THEN PRINT #1,FC,FS:GOTO 380
  37. 370 PRINT #1,BW,SW,FCNTR
  38. 380 CLOSE #1
  39. 390 PRINT:PRINT "NOW LOADING THE FILTER SYNTHESIS PROGRAM...."
  40. 400 RUN "FILSYP.EXE"
  41. 410 REM **********  ENTER LOWPASS / HIGHPASS  DATA  **********
  42. 420 IF R=1 THEN F$="LOWPASS"
  43. 430 IF R=2 THEN F$="HIGHPASS"
  44. 440 PRINT:PRINT "What is the maximum Passband Ripple (Amax) in DB:":PRINT
  45. 450 IF G=1 THEN PRINT "For Butterworth, Amax is typically 3db":PRINT
  46. 460 INPUT "Enter in DB";A1
  47. 470 PRINT:PRINT
  48. 480 IF A1=0 THEN PRINT "Need a non-ZERO value for Amax!!!":GOTO 440
  49. 490 IF A1<0 THEN A1=-1*A1
  50. 500 INPUT "Enter the Corner Frequency (FC) in Hz";FC
  51. 510 PRINT:PRINT "Do you already know the order of this "F$" (Y/N)";:INPUT Z$
  52. 520 IF Z$="N" GOTO 560
  53. 530 IF Z$<>"Y" GOTO 510
  54. 540 PRINT:INPUT "What is the order (MUST BE LESS THAN 10)";N
  55. 550 Z=1:GOTO 590
  56. 560 PRINT:INPUT "Enter the Minimum Stopband Attenuation (Amin) in DB";A2
  57. 570 IF A2<0 THEN A2=-1*A2
  58. 580 IF A2<=A1 THEN PRINT:PRINT:PRINT "NOT MUCH OF A "F$"!!!....Amin<=Amax":GOTO 440
  59. 590 PRINT:INPUT "Enter the Stopband Frequency (FS) in Hz";FS
  60. 600 IF (FS<FC) AND (R=1) THEN PRINT:PRINT:PRINT "LOOKS LIKE A HIGHPASS!!!....FS<FC":GOTO 440
  61. 610 IF (FS>FC) AND (R=2) THEN PRINT:PRINT:PRINT "LOOKS LIKE A LOWPASS!!!...FS>FC":GOTO 440
  62. 620 PRINT:PRINT:IF FS=FC THEN PRINT "You're not "F$"ING  ANYTHING....FS=FC!!!!!":GOTO 440
  63. 630 IF R=2 THEN F1=1:F2=FC/FS:GOTO 650
  64. 640 F1=1:F2=FS/FC
  65. 650 RETURN
  66. 660 REM **********  ENTER BANDPASS / NOTCH DATA  **********
  67. 670 IF R=3 THEN F$="BANDPASS"
  68. 680 IF R=4 THEN F$="NOTCH"
  69. 690 PRINT:PRINT "For this "F$" filter which parameters do you know:"
  70. 700 PRINT "1. Upper and Lower Frequency Limits of the Passband and Stopband.
  71. 710 PRINT "2. Center Frequency, PASS Bandwidth and STOP Bandwidth.
  72. 720 INPUT "Select 1 or 2";K
  73. 730 ON K GOSUB 770,1010
  74. 740 IF R=3 THEN F1=1:F2=SW/BW
  75. 750 IF R=4 THEN F1=1:F2=BW/SW
  76. 760 RETURN
  77. 770 PRINT:INPUT "Enter the Maximum Passband Ripple (Amax) in DB";A1:PRINT
  78. 780 IF A1<0 THEN A1=-1*A1
  79. 790 IF A1=0 THEN PRINT:PRINT "Need a non-ZERO value for Amax!!!":GOTO 770
  80. 800 INPUT "Enter the Lower Frequency Edge of the Passband (FL) in Hz";FL:PRINT
  81. 810 INPUT "Enter the Higher Frequency Edge of the Passband (FH) in Hz";FH
  82. 820 IF FH<FL THEN PRINT:PRINT "The frequencies are BACKWARDS, FH<FL":GOTO 770
  83. 830 BW=FH-FL: FCNTR=SQR(FH*FL)
  84. 840 PRINT:PRINT "Do you know the Order of this "F$" (Y/N)";:INPUT Z$
  85. 850 IF Z$="N" GOTO 900
  86. 860 IF Z$<>"Y" GOTO 840
  87. 870 PRINT:INPUT "Enter the order (N)";N
  88. 880 Q=N MOD 2:IF Q<>0 THEN PRINT:PRINT "ORDER MUST BE EVEN":GOTO 870
  89. 890 Z=1:GOTO 930
  90. 900 PRINT:INPUT "Enter the Minimum Stopband Attenuation (Amin) in DB";A2
  91. 910 IF A2<0 THEN A2=-1*A2
  92. 920 IF A2<A1 THEN PRINT:PRINT "You're not ATTENUATING Anything!!! A2<A1":PRINT:GOTO 770
  93. 930 PRINT:INPUT "Enter the Lower Frequency Edge of the Stopband (FLS) in Hz";FLS
  94. 940 PRINT:INPUT "Enter the Higher Frequency Edge of the Stopband (FHS) in Hz";FHS
  95. 950 IF FHS<FLS THEN PRINT:PRINT "The frequencies are BACKWARDS, FHS<FLS":GOTO 770
  96. 960 SW=FHS-FLS
  97. 970 IF (R=3) AND (SW<BW) THEN PRINT:PRINT "LOOKS LIKE A NOTCH!!!...Stopband is narrower than the Passband":GOTO 770
  98. 980 IF (R=4) AND (BW<SW) THEN PRINT:PRINT "LOOKS LIKE A BANDPASS!!!...Passband is narrower than the Stopband":GOTO 770
  99. 990 IF BW=SW THEN PRINT:PRINT "You're not "F$"ing ANYTHING.....Passband=Stopband":GOTO 770
  100. 1000 RETURN
  101. 1010 PRINT:INPUT "Enter the Maximum Passband Ripple (Amax) in DB";A1
  102. 1020 IF A1<0 THEN A1=-1*A1
  103. 1030 IF A1=0 THEN PRINT:PRINT "Need a non-ZERO value for Amax!!!":GOTO 1010
  104. 1040 PRINT:INPUT "Enter the Center Frequency (FCNTR) in Hz";FCNTR
  105. 1050 PRINT:INPUT "Enter the Passband Bandwidth (BW) in Hz";BW
  106. 1060 X=BW^2+(4*FCNTR^2)
  107. 1070 Y=SQR(X)-BW
  108. 1080 IF Y<0 THEN Y=SQR(X)+BW
  109. 1090 FL=Y/2:FH=FL+BW
  110. 1100 PRINT "FCNTR="FCNTR"   FL="FL"   FH="FH
  111. 1110 PRINT:PRINT "Do you know the Order of this "F$" (Y/N)";:INPUT Z$
  112. 1120 IF Z$="N" GOTO 1170
  113. 1130 IF Z$<>"Y" GOTO 1110
  114. 1140 PRINT:INPUT "What is the Order (N)";N
  115. 1150 Q=N MOD 2:IF Q<>0 THEN PRINT:PRINT "ORDER MUST BE EVEN":GOTO 1140
  116. 1160 Z=1:GOTO 1200
  117. 1170 PRINT:INPUT "Enter the Minimum Stopband Attenuation (Amin) in DB";A2
  118. 1180 IF A2<0 THEN A2=-1*A2
  119. 1190 IF A2<A1 THEN PRINT:PRINT "You're not ATTENUATING Anything!!!...A2<A1":GOTO 1010
  120. 1200 PRINT:INPUT "Enter the Stopband Bandwidth (SW) in Hz";SW
  121. 1210 IF (R=3) AND (SW<BW) THEN PRINT:PRINT "LOOKS LIKE A NOTCH!!!...SW<BW":GOTO 1010
  122. 1220 IF (R=4) AND (BW<SW) THEN PRINT:PRINT "LOOKS LIKE A BANDPASS!!!...BW<SW":GOTO 1010
  123. 1230 X=SW^2+(4*FCNTR^2)
  124. 1240 Y=SQR(X)-SW
  125. 1250 IF Y<0 THEN Y=SQR(X)+BW
  126. 1260 FLS=Y/2:FHS=FLS+SW
  127. 1270 PRINT "FCNTR="FCNTR"   FLS="FLS"   FHS="FHS
  128. 1280 RETURN
  129.