Suppose, you have a signal source which is sampled by 1100 Hz and is "somehow" band limited to either 235 or 440 Hz. In my application, that's the ST IIS3DHHC accelerometer. There is an appnote for that sensor, showing some more details about the internal filtering:
It's just stating, that there are two filter implementations, FIR and IIR with different settling times (I assume, that's the group delay).
I'm wondering now, how to create an optimal filtering chain. The actual requirements are:
- 0.01% ripple in passband (that might be tight and could be relaxed to 0.02%)
- downsample by R = 11 to 100 Hz for further processing -> anti-aliasing to max 50 Hz
- group delay of 100 Hz signal shall be around 10-20 ms to not introduce significant delay in the decimation phase
- not sure about the stopband attenuation. Ideally, 0.01% too, but that would be 80 dB, sounds a bit strong
The samples are pulled from the sensor's fifo buffer which is filled with 1.1 kHz and can further be processed.
So I'll have to design one or multiple filter stages to first reduce the bandwidth to max 50 Hz (I guess, 45 or even 40 Hz because of non-ideal lowpass filters).
Here are the questions:
Is it beneficial in some way that the signals already are band-limited by the sensor itself? It's a sensor parameter to be set to get an 235 Hz or 440 Hz signal. Since I need 50 Hz cutoff anyway
- FIR or IIR filter for this kind of application? I'm aware that some FIR implementations are beneficial because many coefficients are 0. I know that FIR filters usually have linear phase and therefore constant grp delay.
- Do I need linear phase?
- What happens to the distorted signals in the transition band, can I fix them somehow?
- Since in a FIR design R-1 samples are discarded, could I use them in a beneficial way? At the moment, "local averages" are calculated, i.e. all 10 ms, all 10-11 available samples from the fifo are pulled and averaged. This is not a moving average afaik. I would like to get away from that filter, because I can't estimate the frequency response and therefore use a "proper" filter design. Do I really have to just throw the samples away?
- If more cascaded filter stages are recommended, which order (in case of IIR) or how many taps (FIR) should be used, are there general recommendations or is it application dependent?
I can design various filter types here with Matlab. But the architecture is not clear.
Thank you all very much!