DSPRelated.com
Forums

How to design ultra-narrow bandpass digital filter with linear phase characteristic?

Started by Unknown February 6, 2013
I am trying to design bandpass filter that has linear phase characteristic given the following specifications:

1) Sampling rate, Fs=20 MHz,
2) Lower stopband freq, fs1=1.998 MHz,
3) Lower passband freq, fp1=1.999 MHz,
4) Upper passband freq, fp2=2.001 MHz,
5) Upper stopband freq, fs2=2.002 MHz,
6) Passband gain of 0 dB,
7) Sidelobe levels of -70 dB.

May I know how can I obtain such a bandpass filter with not more than 1000 filter coefficients?


Hi,

there has been a lot of related discussion in the last three months. You
should find hints to the typical solutions.

You may get more responses, if you tell a little about the problem you're
trying to solve. It shows that it's not a homework problem. 

On Wednesday, February 6, 2013 5:15:09 PM UTC+8, mnentwig wrote:
> Hi, > > > > there has been a lot of related discussion in the last three months. You > > should find hints to the typical solutions. > > > > You may get more responses, if you tell a little about the problem you're > > trying to solve. It shows that it's not a homework problem.
Yes, it is not a homework problem. My friend passed this question to me saying that it is possible to obtain such a filter design. However, i tried using the filter design tool "sptool" provided by Matlab and I am not able to get a filter coefficients of less than 1000. Then, I tried to search for information on the internet and IEEE but I cannnot find any publication in this area. Please advice on the filter design method if you know one. Thank you.
On Wednesday, 6 February 2013 08:37:14 UTC, ywee...@gmail.com  wrote:
> I am trying to design bandpass filter that has linear phase characteristic given the following specifications: > > > > 1) Sampling rate, Fs=20 MHz, > > 2) Lower stopband freq, fs1=1.998 MHz, > > 3) Lower passband freq, fp1=1.999 MHz, > > 4) Upper passband freq, fp2=2.001 MHz, > > 5) Upper stopband freq, fs2=2.002 MHz, > > 6) Passband gain of 0 dB, > > 7) Sidelobe levels of -70 dB. > > > > May I know how can I obtain such a bandpass filter with not more than 1000 filter coefficients?
Leaving aside Matlab for the moment, Kaiser's empirical formula for the required length of an FIR filter is: N = 1 + 2 * ( attenuation - 8 ) / ( 29 * NormalizedTransitionBandwidth ) where NormalizedTransitionBandwidth is normalized to sample rate: NormalizedTransitionBandwidth = TransitionBandwidth / Fs Your transition bands are 1 kHz, so: NormalizedTransitionBandwidth = 1e-4 attenuation = 70 dB N = 85518 So on this estimate you need about 85000 coefficients, not 1000. Matlab, unsurprisingly since it uses Kaiser's estimate, designs a Kaiser FIR with 83000 coefficients. Kaiser's estimate is an empirical 'rule of thumb' but it does not seem unreasonable in this case.
On Wed, 06 Feb 2013 02:37:51 -0800, Chris Bore wrote:

> On Wednesday, 6 February 2013 08:37:14 UTC, ywee...@gmail.com wrote: >> I am trying to design bandpass filter that has linear phase >> characteristic given the following specifications: >> >> >> >> 1) Sampling rate, Fs=20 MHz, >> >> 2) Lower stopband freq, fs1=1.998 MHz, >> >> 3) Lower passband freq, fp1=1.999 MHz, >> >> 4) Upper passband freq, fp2=2.001 MHz, >> >> 5) Upper stopband freq, fs2=2.002 MHz, >> >> 6) Passband gain of 0 dB, >> >> 7) Sidelobe levels of -70 dB. >> >> >> >> May I know how can I obtain such a bandpass filter with not more than >> 1000 filter coefficients? > > Leaving aside Matlab for the moment, Kaiser's empirical formula for the > required length of an FIR filter is: > > N = 1 + 2 * ( attenuation - 8 ) / ( 29 * NormalizedTransitionBandwidth ) > > where NormalizedTransitionBandwidth is normalized to sample rate: > > NormalizedTransitionBandwidth = TransitionBandwidth / Fs > > Your transition bands are 1 kHz, so: > > NormalizedTransitionBandwidth = 1e-4 attenuation = 70 dB N = 85518 > > So on this estimate you need about 85000 coefficients, not 1000. > > Matlab, unsurprisingly since it uses Kaiser's estimate, designs a Kaiser > FIR with 83000 coefficients. > > Kaiser's estimate is an empirical 'rule of thumb' but it does not seem > unreasonable in this case.
I was thinking "use decimation", but I'm not sure it could be done without lots of aliasing. Of course, if it's just a trick question, then I suppose you could respond with "but you didn't say anything about aliasing". -- Tim Wescott Control system and signal processing consulting www.wescottdesign.com

<yweesoon@gmail.com> wrote in message:
>I am trying to design bandpass filter that has linear phase characteristic >given the following specifications: > > 1) Sampling rate, Fs=20 MHz, > 2) Lower stopband freq, fs1=1.998 MHz, > 3) Lower passband freq, fp1=1.999 MHz, > 4) Upper passband freq, fp2=2.001 MHz, > 5) Upper stopband freq, fs2=2.002 MHz, > 6) Passband gain of 0 dB, > 7) Sidelobe levels of -70 dB. > > May I know how can I obtain such a bandpass filter with not more than 1000 > filter coefficients?
Keyword: Interpolated FIR Vladimir Vassilevsky DSP and Mixed Signal Consultant www.abvolt.com
You should also specify how many delay stages you can have. If it is much larger than the number of coefficients then the interpolated FIR that Vlad mentioned is the way to go. If not, you are out of luck.


Bob

>> Of course, if it's just a trick question, then I suppose you could
respond with "but you didn't say anything about aliasing". heh, if it's a trick question, I need no more than a single tap. Which is 0.0001. This "filter" even exceeds the stopband specs by 10 dB. The only catch is, 80 dB passband ripple :D There are quite a few engineering solutions, but one would need more information for the design, as they'll typically alias stopband energy to the passband.
On 2/6/13 3:37 AM, yweesoon@gmail.com wrote:
> I am trying to design bandpass filter that has linear phase characteristic given the following specifications: > > 1) Sampling rate, Fs=20 MHz, > 2) Lower stopband freq, fs1=1.998 MHz, > 3) Lower passband freq, fp1=1.999 MHz, > 4) Upper passband freq, fp2=2.001 MHz, > 5) Upper stopband freq, fs2=2.002 MHz, > 6) Passband gain of 0 dB, > 7) Sidelobe levels of -70 dB. > > May I know how can I obtain such a bandpass filter with not more than 1000 filter coefficients? > >
i don't see why this would be different than designing a LPF with 1) Sampling rate, Fs=20 MHz, 4) highest passband freq, fp=0.001 MHz, 5) lowest stopband freq, fs=0.002 MHz, 6) Passband gain of 0 dB, 7) Sidelobe levels of -70 dB. design that as a linear-phase FIR using whatever tool (firpm or firls or kaiser-windowed sinc()). however many taps it takes. then multiply h[n] by 2 cos(2 pi 2.000/20.0 n) . -- r b-j rbj@audioimagination.com "Imagination is more important than knowledge."
Am 06.02.13 09:37, schrieb yweesoon@gmail.com:
> I am trying to design bandpass filter that has linear phase characteristic given the following specifications: > > 1) Sampling rate, Fs=20 MHz, > 2) Lower stopband freq, fs1=1.998 MHz, > 3) Lower passband freq, fp1=1.999 MHz, > 4) Upper passband freq, fp2=2.001 MHz, > 5) Upper stopband freq, fs2=2.002 MHz, > 6) Passband gain of 0 dB, > 7) Sidelobe levels of -70 dB. > > May I know how can I obtain such a bandpass filter with not more than 1000 filter coefficients? >
What about computing one bin of the DFT using Goertzel's algorithm? I haven't checked the numbers, though. Christian