|
|
Filter design/implementation question
Hello,
I have to implement a fixed-point low-pass digital filter which meets these
requirements:
Passband: 0-3700Hz
Max ripple in passband: 1.5dB
Stopband: 4000Hz and up
Attenuation in stopband: minimum 40dB
Sample frequency: 16000Hz
As far as I can see, 3 sections of second-order IIR filters (elliptic
filters) would do the job at a
low cost:
Number of Multipliers : 15
Number of Adders : 12
Number of States : 6
Multiplications per Input Sample : 15
Additions per Input Sample : 12
Which design/implementation would you go for?
|
|
0
|
|
|
|
Reply
|
Joe
|
6/1/2010 7:09:25 PM |
|
"Joe" <Joe@NoSpammers.Com> wrote in message <4c055ae7$0$280$14726298@news.sunsite.dk>...
> Hello,
>
> I have to implement a fixed-point low-pass digital filter which meets these
> requirements:
>
> Passband: 0-3700Hz
> Max ripple in passband: 1.5dB
> Stopband: 4000Hz and up
> Attenuation in stopband: minimum 40dB
> Sample frequency: 16000Hz
>
> As far as I can see, 3 sections of second-order IIR filters (elliptic
> filters) would do the job at a
> low cost:
>
> Number of Multipliers : 15
> Number of Adders : 12
> Number of States : 6
> Multiplications per Input Sample : 15
> Additions per Input Sample : 12
>
>
>
> Which design/implementation would you go for?
>
Hi Joe, if you use fdesign.lowpass, you can investigate a number of designs easily and see which ones satisfy your goals.
% fdesign.lowpass has a number of specification strings
h = fdesign.lowpass('Fp,Fst,Ap,Ast',3700,4000,1.5,40,16000);
% design all options, FIR and IIR available to you.
D = design(h,'all');
With the Filter Design Toolbox, I get 8 filters. Four IIR and four FIR designs. You can see the designs available with
designmethods(h)
From what I see the elliptic design has the lowest cost. Although the Chebyshev designs are also low cost.
D1 = design(h,'ellip');
cost(D1)
Number of Multipliers : 12
Number of Adders : 12
Number of States : 6
Multiplications per Input Sample : 12
Additions per Input Sample : 12
but I have not looked at the filter with
D1.arithmetic = 'fixed';
and the appropriate fixed-point settings for you design. That should also be considered.
Hope that helps,
Wayne
|
|
0
|
|
|
|
Reply
|
Wayne
|
6/5/2010 10:27:05 AM
|
|
|
1 Replies
243 Views
(page loaded in 0.034 seconds)
|
|
|
|
|
|
|
|
|