2
$\begingroup$

I've seen many discussions suggesting that SOS's are often/usually the preferred structure for fixed point hardware filter implementations, since they preserve conjugate pairs, etc., but I've never seen any specific arguments explaining why they are better for FIR filters.

Do these advantages still apply for direct form, linear phase FIR filters which allow the number of multipliers to be reduced by a factor of 2?

Finally, are there any good resources discussing these trade-offs? I'm trying to implement fairly long FIR filters with small multipliers, i.e. 40+ taps with 8-10b coefficients, and am looking for resources that might shorten this effort.

$\endgroup$
  • $\begingroup$ "SOS" usually means cascaded Second Order Sections, no? i s'pose you can have FIR SOS's, but most of the time "SOS" also means IIR. IIR's are not precisely linear phase, in the same sense that FIR filters are. so seeing "SOS" alongside of "linear phase" or "FIR" is confusing to me. $\endgroup$ – robert bristow-johnson Apr 7 '15 at 19:25
  • $\begingroup$ Right, SOS = second order stage. My main question is whether SOSs are useful for linear phase FIR filters. As I mentioned most of the explicit comments about SOS filter's advantages are re: IIR filters. $\endgroup$ – headdab Apr 7 '15 at 19:47
2
$\begingroup$

well, i see little value in factoring an FIR into quadratics and implementing them in cascade. it won't be computationally cheaper and it's not better from a quantization noise POV if your FIR has access to an accumulator that is double width.

perhaps it will help with limiting coefficient range so that it's less likely that you have non-zero coefficients (at the tails of the FIR) with values of, say, $10^{-8}$ the size of other coefficients (in the middle). there are other, more efficient ways of dealing with that problem (like computing the FIR from the outside in, doing the tails first and the middle last).

$\endgroup$
  • $\begingroup$ Thanks! Do you have any references to the "computing from the outside in" strategy? $\endgroup$ – headdab Apr 9 '15 at 22:53
  • $\begingroup$ well a paper i remember from a long time ago was from a friend of mine, Duane Wise: Block Floating-Point FIR Filters Using a Fixed-Point Multiplier. now if you're using floating-point, the issue is the same. in FIR summation $$ y[n] = \sum\limits_{i=0}^{L-1} h[i] x[n-i] $$ begin summing the first and last terms first. then add the second and second to last terms, an so on. so the $i=\frac{L-1}{2}$ term will be the last one summed. the impulse response is typically greatest in magnitude in the middle than at the ends. $\endgroup$ – robert bristow-johnson Apr 10 '15 at 0:39
2
$\begingroup$

I agree with Robert's answer, but I would like to add why SOS are used for IIR filters, from which it becomes easier to understand why they are not commonly used for implementing FIR filters. One of the reasons why SOS are a very common way of implementing IIR filters is the fact that poles close to each other and/or close to the unit circle make a direct implementation of the transfer function extremely sensitive to coefficient quantization. Since FIR filters don't have any poles away from the origin you don't have that problem when implementing FIR filters.

This is not to say that coefficient quantization is no issue for FIR filters. It becomes a problem for large filter lengths and if a high stopband attenuation is desired. In [1] a conservative bound was derived for the error due to coefficient quantization:

$$\epsilon\le 20\log_{10}N-6B\;\text{(dB)}$$

where $N$ is the filter length, and $B$ is the number of bits used for representing the filter coefficients. So for a filter with $N=50$ and $B=10$ you get $\epsilon\le -26\,\text{dB}$, which means that in the worst case the filter's stopband attenuation is only $26\,\text{dB}$. However, the authors mention that this bound is very conservative and that in practice the error is usually much smaller.

If the naive approach of filter design assuming infinite precision and subsequent coefficient quantization does not result in a useful filter, one must take coefficient quantization into account already during the design process. This can be done using integer programming techniques. The classic reference on this topic is Design of Optimal Finite Wordlength FIR Digital Filters Using Integer Programming Techniques by D.M. Kodek.

The following example illustrates the difference between the coefficient sensitivity of direct form implementations of FIR and IIR filters. I designed two lowpass filters: one 7th order elliptic IIR filter and one Parks-McClellan equiripple linear-phase FIR filter with $101$ taps, both filters satisfying approximately the same magnitude specifications. The plot below shows the magnitudes of the frequency responses (IIR in blue, FIR in green). The top two plots are the responses with unquantized coefficients, and the bottom plots are the responses with 14 bit fixed-point coefficients. Note the huge difference in coefficient sensitivity in the passband.

enter image description here


[1] T.W. Parks, C.S. Burrus, Digital Filter Design, p. 143

$\endgroup$
  • $\begingroup$ Thanks for the comments. I was aware of the issues for IIR filters but am concerned with FIR implementation now. Experimentally, I've seen the types of trade-offs that your bound above addresses. Low pass filter coefficient magnitude tapers away from the origin of the filter and you soon run out of resolution for longer filters. If you want to stick with low resolution coefficients, it seems like at some point you have to go with a cascaded structure (although with filters that can be much longer than SOSs). $\endgroup$ – headdab Apr 9 '15 at 22:47
  • $\begingroup$ I been primarily relying on matlab to help design quantized filters, but am a bit frustrated since 1) most of the time, you do not know what's going on under the hood, and 2) I can typically design better filters than matlab but hand tweaking and quantizing a filter myself. I'd be interested in any good references you have on the integer programming techniques. $\endgroup$ – headdab Apr 9 '15 at 22:51
  • $\begingroup$ Matt, the same reason why cascading SOS for IIRs speaks to the denominator coefficient issue, can be said for cascading SOS for FIR regarding the numerator coefficients. i s'pose you could say there were coefficient sensitivity issues either way. $\endgroup$ – robert bristow-johnson Apr 10 '15 at 0:32
  • $\begingroup$ @robertbristow-johnson: But the effect of coefficient quantization on the frequency response for a given filter order is of a totally different order of magnitude for the denominator polynomial of an IIR filter than for a FIR polynomial. $\endgroup$ – Matt L. Apr 10 '15 at 7:13
  • $\begingroup$ i fail to see the "totally different order of magnitude" between $$ -20 \log_{10}\left| e^{j\omega}-p_k \right| $$ and $$ +20 \log_{10}\left| e^{j\omega}-q_k \right| $$. looks like they have about the same order of effect to me. imagine you're $e^{j\omega}$ on the unit circle. if you get close to either a pole or a zero, the frequency response, in dB will be adversely affected. now they don't both affect stability the same. and that's more than just a different order of magnitude. $\endgroup$ – robert bristow-johnson Apr 10 '15 at 8:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.