IIR Filter Structures

IIR Direct Implementations

IIR Direct Form (Recursive-only)

The IIR direct form with only recursive components implements a filter with coefficients $g[n]$ according to: $$y[n] = x[n] - \sum_{m=1}^{M-1} g[m] y[n-m]\; ,$$ or in the Z-domain $$Y(z) = X(z) - \sum_{m=1}^{M-1} g[m] Y(z) z^{-m} \; ,$$ This form is illustrated below.

IIR Direct Form I

A general causal, linear, time-invariant system with $M$ FIR and $M$ IIR components can be expressed as: $$ \begin{align*} g[n] * y[n] &= h[n] * x[n] \\ \sum_{m=0}^{M-1} g[m] y[n-m] &= \sum_{m=0}^{M-1} h[m] x[n-m] \\ g[0] y[n] + \sum_{m=1}^{M-1} g[m] y[n-m] &= \sum_{m=0}^{M-1} h[m] x[n-m] \\ y[n] &= \frac{1}{g[0]} \left( \sum_{m=0}^{M-1} h[m] x[n-m] - \sum_{m=1}^{M-1} g[m] y[n-m] \right) \end{align*} $$ This form can be represented by a direct form FIR filter added to a direct form IIR filter, as shown below in two ways. For simplicity, we assume $g[0]=1$ (often known as the gain). Hence, a general IIR filter can be expressed by $$ \begin{align*} y[n] &= \sum_{m=0}^{M-1} h[m] x[n-m] - \sum_{m=1}^{M-1} g[m] y[n-m] \end{align*} $$

IIR Direct Form II

This form rearranges direct form I to reduce the number of delays in the impelmentation. This form is shown below.

Transposed IIR Direct Form II

This form merges all of the summation from the IIR Direct Form I to again reduce the number of delays in the implementation. This form is shown below.

IIR Cascade Implementations

The IIR cascade form implements a filter based on the Z-transform representation: $$ \begin{align} Y(z) = X(z) \prod_{k=1}^{K} H_k(z) \; . \end{align} $$ In this case, $H_k(z)$ is represented by an IIR direct form filter.

IIR Parallel Form

The IIR parallel form implements a filter based on a partial fraction decomposition. Hence, when we have more poles than zero, the partial fraction decomposition with $P$ poles is defined by: $$ \begin{align} Y(z) &= X(z) \left( \sum_{m=1}^{P} H_m(z) \right) &= X(z) \left( \frac{b_0}{a_0} \sum_{m=1}^{P} \frac{A_m}{1 - p_{m} z^{-1} } \right) \; . \end{align} $$ Each term in the summation represents a single-pole filter, described by the difference equation: $$ \begin{align} Y_m(z) &= X(z) \frac{A_m}{1 - p_{m} z^{-1} } \\ (1 - p_{m} z^{-1}) Y_m(z) &= A_m X(z) \\ y_m[n] - p_m y_m[n-1] &= A_m x[n] \\ y_m[m] &= p_m y_m[n-1] + A_m x[n] \end{align} $$ This implementation is shown below.