# Series vs Parallel Biquad Filters

What are the pros and cons of arranging a set of biquad filters in series and parallel? I gather that series should be used in cases where the filters contribute to the same passbands and vice versa as stated here. Is this because of precision issues in fixed point?Is this still true for floating point schemes?

Is this because of precision issues in fixed point?Is this still true for floating point schemes?

Floating point has its own precision issues. Often a carefully-executed 32-bit fixed-point filter has better quantization properties than one that uses 32-bit floating point, because 32-bit floating point has, of necessity, a mantissa less than that (IEEE-754 floating point gives you 24 bits of explicit mantissa, with an implied 25$$^{th}$$ bit, but there are other, rare or obsolete, schemes). Using 64-bit floating point drives the problem deeper into the mud, but it still may be a problem.

Even in analog circuits, this can still be an issue -- it's just that the noise sources aren't from quantization.

The definitive way to make such a choice is to analyze the filter for noise gain. Basically, model the quantization noise of the filter as noise injected at the point of quantization. To be strict you'd do this at each point where you multiply by a coefficient less than 1 for fixed-point, or each and every mathematical operation for floating point. It's probably enough to just inject said noise at the end of each biquad stage. Then look at how strongly the filter responds to this noise.

Do this for both topologies, and choose the one that works best.

Intuitively, if you're building a filter where the passbands of the elements tend to overlap, then running them in series is probably best. If you're designing a filter that passes two distinct frequency bands and blocks the middle, then a series filter arrangement would need tons of gain in each section to punch through the other filter's stop band, while a parallel arrangement could almost (or exactly) be realized by just designing the filters independently and adding their results.

It really depends on your filter.

In my experience serial is has almost always the potential to be better. The reason for this is quite simple. The parallel representation is unique. There is one version and that's it. In the serial version you can adjust the pole/zero pairing and the section ordering, both of which can have massive impact on the noise performance even in floating point at least for the type of filter that I typically work with (audio with poles very close to the unit circle).

So parallel has one implementation, serial has dozens or even hundreds. You can simulate all possible implementations and pick the winner based on your specific filters and the requirements, constraints and metrics of your specific application. Chances are the winner will be one of the serial versions, simply because there are so many of them. Serial allows optimization, and parallel is just "take it or leave it".

However, this implies that you actually do the optimization and not simply take what comes out of zp2sos() or even worse tf2sos().

If you're doing a graphic equalizer, it's easy to model it as a series of parametric equalizer but it might sound better (because of quantization noise issues) if the series biquads are mapped to parallel second-order sections having only two coefficients in the numerators each.

This potential SNR advantage to parallel second-order sections might be a little more evident in fixed-point realization is to leave the output of each parallel section as double precision, add all of the parallel sections together, then quantize to the single-precision output word. That way, the only quantization needed for each section would be for the feedback path. In feed-forward, after multiplying coefficient times state, leave that as a double-precision word to be added up with the outputs of all of the other sections.