[sci.electronics] Variable bandwidth 6 pole Butterworth LPF

david@mplvax.nosc.MIL (David Almagor) (11/09/88)

Hi there all you hardware gurus, 

I need to design a variable bandwidth low pass filter, whose
programmed pass band will span 10kHz to 1MHz. The field is 
open for analog, digital, or any other form of implementation.
The input's dynamic range is about 40dB, and the filter should 
have the properties of a 6 pole Butterworth. Budget should 
be kept at a min. Any ideas out there?

Thanks in advance, David.


-- 
David Almagor          | Phone 619-534-1813           | 
The Marine Physical lab| or:   619-442-3451 ext. 3173 | 
UCSD, San Diego,       |                              |david@mplvax.ucsd.edu
Ca 92152               |                              |

gmg@hcx.uucp (Greg M. Garner) (11/10/88)

In article <787@mplvax.nosc.MIL>, david@mplvax.nosc.MIL (David Almagor) writes:
> 
> I need to design a variable bandwidth low pass filter, whose
> programmed pass band will span 10kHz to 1MHz. The field is 
> open for analog, digital, or any other form of implementation.
> The input's dynamic range is about 40dB, and the filter should 
> have the properties of a 6 pole Butterworth. Budget should 
> be kept at a min. Any ideas out there?

How about using a digital filter. You can take the s equation of a analog
6 pole butterworth filter, and then transform it to digital form by 
replacing all the s factors with this:

     
    s= 2 * [1-Z^(-1)]   
       -------------
       T * [1+Z^(-1)]

T is usually set to 1, as it cancels out later in the calculations.

The steps for doing this transformation are fairly clearly presented in 
the book "Fundamentals of Digital Signal Processing" by Lonni C. Ludeman.
The book is published by Harper & Row, Publishers, Inc. (c) 1986.

  They describe in chapter 3 how to design analog butterworth filters,
and then in chapter 4 they go into how to use the bilinear transform
to change the s equations into Z equations. The Z equations are simply 
delay elements, so if you have a Z^(-1) it is a sample that is one time
unit old, and Z^(-2) is two time units old. They show in the book how 
to design the digital filters when you have a known cutoff frequency,
but I messed around a bit with their equations to come up with 
with a form that had a variable cutoff. The math involved got pretty
harry for a simple first order lowpass filter, but I ended up with 
a lowpass digital filter that I could run a picture through, and then 
I could adjust the cutoff value and see what the effect was. 

Here is the portion of C code that did the actual filter, note that I passed
the cutoff frequency to this subroutine as a double. The value passed in f
represents the digital cutoff frequency in radians, I think.  

redraw(fp,f)
FILE *fp;
double f;
{
 double ran();
 double y,y1,x,x1;
 long j,k;
 int cc;

 for (j=1; j<=128; j++)
     {
      x1=0;
      y1=0;
      for (k=1; k<=128; k++)
           {
	    fscanf(fp,"%d",&cc);   /* Read in picture data here. */
	    x=cc;	

          /* Here is the actual butterworth lowpass filter. */
	  /* Note how it uses memory and the current input value. */

	    y=(f*x+f*x1+(2-f)*y1)/(2+f);
	    y1=y;
	    x1=x;    /* Save the current values of x and y for the */  
	    cc=y;    /* Memory so they will contribute to filter next time. */

	    if (cc>255) cc=255;
	    if (cc<0)   cc=0;
				
	    cc=cc/16+16;  /* My machine only has 16 gray levels (Amiga). */

	    SetAPen(rp,cc);
            WritePixel(rp,k,j);
           }
     }
}

It took me some time to wade through all this, but it is possible. the 
only problem may be that you need to run this filter in realtime,
and you are going to have trouble finding something that will execute
the floating point multiplies and divides fast enough to keep up.
maybe a floating point DSP chip could do it. 
  Note that the math to implement the 6th order butterworth will 
probably take you about 1 day to get all worked out, so send me
the results if you do it!

> 
> Thanks in advance, David.
> 

Your Welcome!

   Greg Garner
   gmg@hcx.uucp    path:   ...!uunet!harris.cis.ksu.edu!hcx!gmg
   501-442-4847

bill@videovax.Tek.COM (William K. McFadden) (11/12/88)

In article <787@mplvax.nosc.MIL> david@mplvax.nosc.MIL (David Almagor) writes:
>I need to design a variable bandwidth low pass filter, whose
>programmed pass band will span 10kHz to 1MHz.
>The input's dynamic range is about 40dB, and the filter should 
>have the properties of a 6 pole Butterworth. Budget should 
>be kept at a min. Any ideas out there?

Sounds like a switched-capacitor filter would work.  The filter's cutoff
frequency is proportional to the input clock frequency.  Monolithic devices
are available from National Semiconductor, Linear Technology, Maxim, and
others.  Unfortunately, none of them will work up to 1 MHz.  The closest I know
of is the new MAX260 series from Maxim.  Some devices in this family offer
cutoff frequencies up to 140 KHz.  Switched capacitor technology makes it
possible to implement highpass, lowpass, bandpass, and notch functions
simultaneously.  However, achieving a 1 MHz response will probably require a
discrete design (I don't know if this is feasible).  In any case, check out the
data sheets and app. notes from the manufacturers listed above.  It should be
educational and useful information.

The only other alternative I know of is a voltage controlled filter (VCF).
Again, I don't know how feasible a 1 MHz passband would be.

Good luck!
-- 
Bill McFadden    Tektronix, Inc.  P.O. Box 500  MS 58-639  Beaverton, OR  97077
UUCP: bill@videovax.Tek.COM,  {hplabs,uw-beaver,decvax}!tektronix!videovax!bill
GTE: (503) 627-6920    Funniest new cartoon title: Teenage Mutant Ninja Turtles