DSPRelated.com
Forums

FIR filter design

Started by "marinus.yates" September 13, 2007
Hi

I'm busy designing a decimation filter which takes 8 bits from a
excessively oversampled ADC and decimates the signal. I need a FIR
filter to have an increased resolution. For example 8 bits into the
filter but I need 13 bits out.

If anyone could tell me how to make design that filter in matlab it
would be of great help.

Thank you.
Hi,

I am working in the same topic, I hope if I can be helpful. Would you send me more detailed data and then I can send you a complete design flow. The type of data I need are;

Primary data:
------------------
Sampling frequency
Oversampling ratio
Signal frequency

Secondary data:
---------------------
Passband ripples and cutoff band suppression
Transition band width ((fc-fp)/fc, where fc = cutoff band frequency and fp = passband frequency)
Number of decimation stages
Decimation factor for each single decimation stage
Allowed IBN penalty

In the following there is an simple DESIGN EXAMPLE for single stage decimation.

Design parameters:
*******************
Fs: Sampling frequency
Fp: Passband frequency
Fc: Cutoff band frequency
Rp: Passband ripples
Rc: Cutoff band suppression
OSR: Oversampling ratio
SDM_Data: Sigma-Delta Modulator output

Matlab Commands for Single Stage Decimation:
***************************************
[n fo ao w] = remezord([Fp Fc], [1 0], [Rp Rc], Fs);
b = remez(n fo ao w);

filtered_data = filter(b, [1], SDM_Data);
decimator_output = downsample(filtered_data, OSR)

The recommended plot for analyzing your results is to use the PSD plot for decimator input and output.

Concerning the input and output resolution of the decimator, after you finish the decimator design you have to quantize the filter coefficients and then convert them to a any binary arithmetic representation, i.e. like fixed point , CSD, SPT, ... etc. After this step you will get the filter coefficient bit width which is very helpful to estimate your output bit width. Regarding this you have to expect the output bit width from the SDM data, i.e. output resolution = max(SNR)/5.

Feel free if you has further questions.

Best regards.

Yours,

Ahmed.

----- Original Message ----
From: marinus.yates
To: m...
Sent: Thursday, September 13, 2007 8:25:28 PM
Subject: [matlab] FIR filter design

Hi

I'm busy designing a decimation filter which takes 8 bits from a

excessively oversampled ADC and decimates the signal. I need a FIR

filter to have an increased resolution. For example 8 bits into the

filter but I need 13 bits out.

If anyone could tell me how to make design that filter in matlab it

would be of great help.

Thank you.