CHEBYSHEV/BUTTERWORTH FILTER DESIGN

Milazzo, Carol F., KP4MD, "Chebyshev/Butterworth Filter Design," unpublished. An IBM BASIC program to design Chebyshev and Butterworth low-pass, high-pass, band-pass and band-stop filters.

Theory

This program was written in PC-BASIC for automated design of Chebyshev and Butterworth filters in the low-pass, high-pass, band-pass and band-stop configurations. These filters are composed of a series of circuit branches which are alternately connected in series or shunt with the source-to-load path. In low-pass and high-pass filters, each branch is either a capacitor or an inductor. In band-pass and band-stop filters, each branch is either a series or parallel resonant circuit composed of a capacitor and an inductor. The Butterworth design offers a smooth response curve with maximal flatness at zero frequency. The Chebyshev design offers a steeper response curve at the 3 dB cutoff frequency and requires fewer componenets, but it requires much closer tolerance at the design frequency. This program uses the original synthesis formulas to design a normalized filter with equal impedance terminations, and then scales the filter to the desired impedance and frequency.

Operation

In using the program, the user first specifies the frequency units (Hz, kHz, or MHz) and the type of filter desired. If a low-pass or high-pass filter was specified, two frequencies and their respective attenuations in decibels are required. If a band-pass or band-stop filter was chosen, then a center frequency is first supplied followed by two bandwidth frequencies and their respective attenuations. (The specified attenuation must be greater than zero). In program statements 110-130 the minimum number of branches for the filters is calculated. The value for the Butterworth filter is derived from the Butterowrth response formula. As no corresponding derivation was found for the Chebyshev filter, the number of required branches is estimated to be the next odd number less than that calculated for the Butterworth design. (The design of even-order Chebyshev filters requires much more complicated synthesis formulas and was not attempted in this program). In statement 140 the 3 dB cutoff frequency for the two designs is then calculated. The ripple attenuation of the Chebyshev filter must be specified not greater than 3 decibels. When the filter component values are desired, the termination resistance and the first branch type (shunt or series) must be supplied. The normalized Butterworth filter component values are calculated in statement 270; the Chebyshev values are calculated in statements 300 to 330. These values are scaled to the desired frequency and impedance in the subroutine at statements 340 to 390; and the subroutine at statements 400 to 510 rounds these values to 3 significant digits and prints them in the most common units. The statements following 520 calculate the response curve in the form of a table of attenuation vs. frequency for any specified range and increment of frequency.

Two examples follow to demonstrate the use of this program. First is a bandstop filter with a center frequency of 27.185 MHz, 20 dB attenuation over a 440 kHz bandwidth and a minimum 1 dB attenuation over a 1.63 MHz bandwidth. Both the Butterworth and Chebyshev filters require 3 branches, but the Chebyshev filter has a steeper curve and higher attenuation near the center frequency.

The second example is a low-pass filter with an attenuation of 1 dB at 30 MHz and 30 dB at 54 MHz. The Butterworth design requires 7 components while the Chebyshev design gives a comparable response curve with only 5 components.

Bandstop Filter Design

Center Frequency 27.185 MHz
Bandwidth Freq MHz   Attenuation (dB)    
.44                  20                  
1.63                 1                   

Design Type   Branches    
Butterworth   3           
Chebyshev     3           

Chebyshev Ripple (dB): .1
Resistance (ohms): 50

Butterworth Bandstop Filter Components

Branch 1 Shunt
L 1 = 6.12 µH in Series with
C 1 = 5.6 pF

Branch 2 Series
C 2 = .00122 µF in Parallel with
L 2 = .028 µH

Branch 3 Shunt
L 3 = 6.12 µH in Series with
C 3 = 5.6 pF

Chebyshev Bandstop Filter Components

Branch 1 Shunt
L 1 = 4.27 µH in Series with
C 1 = 8.030001 pF

Branch 2 Series
C 2 = .00153 µF in Parallel with
L 2 = .0223 µH

Branch 3 Shunt
L 3 = 4.27 µH in Series with
C 3 = 8.030001 pF

Figure 1. Schematic diagram of three branch bandstop filter.

Frequency Response Curve

Frequency Range (MHz)
Lower Limit: 26
Upper Limit: 28
In steps of .1
MHz    Butterworth     Chebyshev Attenuation (dB)   
26     9.999999E-02    .03                          
26.1   .17             .01                          
26.2   .31             0                            
26.3   .58             .11                          
26.4   1.13            .56                          
26.5   2.25            1.95                         
26.6   4.43            5.03                         
26.7   8.14            10                           
26.8   13.68           16.57                        
26.9   21.4            24.98                        
27     32.68           36.68                        
27.1   53              57.21                        
27.2   98.24           102.52                       
27.3   45.21           49.38                        
27.4   28.96           32.86                        
27.5   19.11           22.53                        
27.6   12.19           14.86                        
27.7   7.24            8.849999                     
27.8   3.98            4.39                         
27.9   2.08            1.71                         
28     1.08            .51                          

Lowpass Filter Design

Freq MHz   Attenuation (dB)    
29.7       1                   
54         30                  

Design Type   Branches    
Butterworth   7           
Chebyshev     5           


Chebyshev Ripple (dB): .1
Resistance (ohms): 50

Butterworth Lowpass Filter Components

Branch 1 Shunt
C 1 = 43.30001 pF

Branch 2 Series
L 2 = .303 µH

Branch 3 Shunt
C 3 = 175 pF

Branch 4 Series
L 4 = .487 µH

Branch 5 Shunt
C 5 = 175 pF

Branch 6 Series
L 6 = .303 µH

Branch 7 Shunt
C 7 = 43.30001 pF

Figure 2. Schematic diagram of seven branch low-pass filter.

Chebyshev Lowpass Filter Components

Branch 1 Shunt
C 1 = 122 pF

Branch 2 Series
L 2 = .364 µH

Branch 3 Shunt
C 3 = 210 pF

Branch 4 Series
L 4 = .364 µH

Branch 5 Shunt
C 5 = 122 pF

Frequency Response Curve

Frequency Range (MHz)
Lower Limit: 20
Upper Limit: 60
In steps of 2
MHz   Butterworth    Chebyshev Attenuation (dB)    
20     0             .02                           
22    .02            .07                           
24    .06            9.999999E-02                  
26    .17            .07                           
28    .47            .01                           
30    1.13           .11                           
32    2.39           .9299999                      
34    4.34           3.01                          
36    6.84           6.04                          
38    9.62           9.34                          
40    12.49          12.53                         
42    15.33          15.51                         
44    18.1           18.27                         
46    20.77          20.83                         
48    23.34          23.21                         
50    25.81          25.45                         
52    28.19          27.55                         
54    30.48          29.53                         
56    32.69          31.41                         
58    34.83          33.21                         
60    36.89          34.91                         

BASIC Program Listing filter.bas

10 CLS:PRINT"Chebyshev/Butterworth Filter Design":PRINT:PRINT"by Carol F. Milazzo, KP4MD"
20 IF INKEY$="" THEN 20
30 DIM A(2),B(2),C(2),F(2),D(256,2),N(2),D$(2),F$(3),T$(4):D$(1)="Butterworth":D$(2)="Chebyshev":F$(1)="Hz":F$(2)="kHz":F$(3)="MHz":T$(1)="Lowpass":T$(2)="Highpass":T$(3)="Bandpass":T$(4)="Bandstop":PI=3.1415926#
40 CLS:PRINT"Chebyshev/Butterworth Filter Design":PRINT:PRINT"Frequency Units":PRINT:PRINT" 0 . Exit":FOR K=1 TO 3:PRINT K;". ";F$(K):NEXT K:PRINT
50 INPUT"Select: ",FX:IF FX<1 OR FX>3 THEN END
60 F$=F$(FX):FP=1000^(FX-1)
70 PRINT:PRINT" 1. ";T$(1);"/";T$(2):PRINT" 2. ";T$(3);"/";T$(4):PRINT
80 INPUT"Select: ",TY:IF TY<0 OR TY>2 THEN 40
90 CLS:PRINT"Filter Specifications":PRINT:Q=0:B$="":IF TY=2 THEN Q=1:B$="Bandwidth ":PRINT"Center Freq.(";F$;:INPUT"): ",G0:F0=G0*FP:PRINT
100 FOR K=1 TO 2:PRINT K;". ";B$;"Freq.(";F$;:INPUT") ",G(K):IF G(K)<=0 THEN RUN 30
110 INPUT" Attn.(dB) ",A(K):IF A(K)<=0 THEN RUN 30
120 F(K)=G(K)*FP:PRINT:NEXT K
130 N=LOG((10^(.1*A(1))-1)/(10^(.1*A(2))-1))/(2*LOG(F(1)/F(2))):S=SGN(N):T=Q+Q+1.5-.5*S:N(1)=-INT(-(ABS(N))):NX=0:IF N(1)/2>INT(N(1)/2) THEN NX=1
140 NY=0:IF N(1)<4 THEN NY=1
150 N(2)=N(1)-1-NX+2*NY:AX=0:IF A(1)>A(2) THEN AX=1
160 FOR K=1 TO 2:C(K)=F(1+AX)*(10^(.1*A(1+AX))-1)^(-.5/S/N(K)):NEXT K
170 CLS:PRINT T$(T);" Filter Design":PRINT:IF T>2 THEN PRINT"Center Frequency ";G0;" ";F$:PRINT:PRINT B$
180 PRINT"Freq ";F$;" Attenuation (dB)":FOR K=1 TO 2:PRINT G(K),A(K):NEXT K:PRINT:PRINT"Design Type Branches":PRINT D$(1),N(1):PRINT D$(2),N(2):PRINT:PRINT"0. New Filter":PRINT"1. Components Values":PRINT"2. Response Curve":PRINT
190 INPUT"Select: ",D:IF D<0 OR D>2 THEN 190
200 IF D=0 THEN 90
210 PRINT:INPUT"Chebyshev Ripple (dB): ",RDB:IF RDB<=0 OR RDB>3 THEN 170
220 Y=RDB/17.37:Y=LOG((EXP(Y)+EXP(-Y))/(EXP(Y)-EXP(-Y)))/2/N(2):Y=(EXP(Y)-EXP(-Y))/2:E=SQR(10^(.1*RDB)-1):C=LOG(1/E+SQR(1/E/E-1))/N(2):C=(EXP(C)+EXP(-C))/2:IF D=2 THEN 540
230 PRINT:INPUT"Resistance (ohms): ",R:IF R<=0 THEN 210
240 PRINT:PRINT"First Element:":PRINT"1. Shunt":PRINT"2. Series":PRINT
250 INPUT"Select: ",V:IF V<1 OR V>2 THEN 230
260 V=V+V-3:U=S*V:PRINT:PRINT"Design Type:":PRINT"1. ";D$(1):PRINT"2. ";D$(2):PRINT
270 INPUT"Select: ",D:IF D<1 OR D>2 THEN 240
280 CLS:PRINT D$(D);" ";T$(T);" Filter Components":PRINT:IF D=2 THEN 320
290 FOR K=1 TO N(1):G=2*SIN((K+K-1)*PI/2/N(1)):GOSUB 360:PRINT:NEXT K
300 IF INKEY$="" THEN 300
310 GOTO 170
320 FOR K=1 TO N(2):A=SIN((K+K-1)*PI/2/N(2)):B=Y*Y+(SIN(K*PI/N(2)))^2
330 IF K=1 THEN G=2*A*C/Y
340 IF K>1 THEN G=4*A*C*C*A1/B1/G1
350 GOSUB 360:A1=A:B1=B:G1=G:PRINT:NEXT K:GOTO 300
360 IF V>0 THEN PRINT"Branch ";K;" Series"
370 IF V<0 THEN PRINT"Branch ";K;" Shunt "
380 X=G^S/2/PI/C(D)*R^U:GOSUB 420:V=-V:U=-U:IF Q=0 THEN PRINT:RETURN
390 IF U<0 THEN PRINT " in Series with"
400 IF U>0 THEN PRINT " in Parallel with"
410 X=1/(4*PI*PI*F0*F0*X):GOSUB 420:PRINT:RETURN
420 IF U>0 THEN PRINT " L";K;" = ";
430 IF U<0 THEN PRINT " C";K;" = ";
440 P=INT(LOG(X)/LOG(10)):X1=10^(P-2)*INT(X*10^(2-P)+.5):IF P<0 THEN 460
450 PRINT X1;" ";:GOTO 510
460 IF P<-3 OR U<0 THEN 480
470 PRINT 1000*X1;" m";:GOTO 510
480 IF P<-9 AND U<0 THEN 500
490 PRINT 1000000!*X1;" µ";:GOTO 510
500 PRINT 1E+12*X1;" p";
510 IF U>0 THEN PRINT "H";
520 IF U<0 THEN PRINT "F";
530 RETURN
540 CLS:PRINT"Frequency Response Curve":PRINT:PRINT"Frequency Range (";F$;")":INPUT"Lower Limit: ",FL:INPUT"Upper Limit: ",FU:INPUT"In steps of ",FS:I=FL*FP:J=FU*FP:K=FS*FP
550 CLS:PRINT" ";F$;TAB(14);D$(1);:IF N(2)<23 THEN PRINT TAB(28);D$(2);
560 PRINT" Attenuation (dB)":FOR F=I TO J STEP K:X=(F-I)/K+1:F1=F:IF Q>0 THEN F1=ABS(F-F0*F0/F)
570 D(X,1)=.01*INT(1000*LOG(1+(F1/C(1))^(2*S*N(1)))/LOG(10)+.5):IF N(2)>21 THEN 720
580 O=C*(F1/C(2))^S:ON N(2) GOTO 600,0,610,0,620,0,630,0,640,0,650,0,660,0,670,0,680,0,690,0,700,0
590 REM Chebyshev polynomials
600 CN=O:GOTO 710
610 CN=4*O^3-3*O:GOTO 710
620 CN=16*O^5-20*O^3+5*O:GOTO 710
630 CN=64*O^7-112*O^5+56*O^3-7*O:GOTO 710
640 CN=256*O^9-576*O^7+432*O^5-120*O^3+9*O:GOTO 710
650 CN=1024*O^11-2816*O^9+2816*O^7-1232*O^5+220*O^3-11*O:GOTO 710
660 CN=4096*O^13-13312*O^11+16640*O^9-9984*O^7+2912*O^5-364*O^3+13*O:GOTO 710
670 CN=16384*O^15-61440!*O^13+92160!*O^11-70400!*O^9+28800*O^7-6048*O^5+560*O^3-15*O:GOTO710
680 CN=65536!*O^17-278528!*O^15+487424!*O^13-452608!*O^11+239360!*O^9-71808!*O^7+11424*O^5-816*O^3+17*O:GOTO710
690 CN=262144!*O^19-1245184!*O^17+2490368!*O^15-2723840!*O^13+1770496!*O^11-695552!*O^9+160512!*O^7-20064*O^5+1140*O^3-19*O:GOTO710
700 CN=1048576!*O^21-5505024!*O^19+1.238631E+07*O^17-1.559757E+07*O^15+1.204224E+07*O^13-5870593!*O^11+1793792!*O^9-329472!*O^7+33264!*O^5-1540*O^3+21*O
710 D(X,2)=.01*INT(1000*LOG(1+E*E*CN*CN)/LOG(10)+.5)
720 PRINT F/FP;TAB(15);D(X,1);:IF N(2)<23 THEN PRINT TAB(30);D(X,2);
730 PRINT:NEXT F:GOTO 300
1000 SCREEN 2:CLS
1010 LINE (64,16)-(64,176)
1020 LINE (64,16)-(608,16)
1030 LINE (608,16)-(608,176)
1040 LINE (64,176)-(608,176)
1050 LOCATE 1,20:PRINT D$(D);" ";T$(T);" Filter Frequency Response Curve"
1060 LOCATE 1,1:PRINT"Attenuation"
1070 LOCATE 22,74:PRINT"Freq."