Noise shaper system equations

Here are a few quick notes on digital noise shapers, primarily for my own reference.

Introduction

Here we have a traditional noise shaper setup, consisting of an Nth-order loop filter and a quantizer:

When a linear model is assumed, the noise transfer function (NTF) $H_{ntf}$ can be expresses as a function of the loop filter:

$H_{ntf}(z) = \frac{1}{1+H_{loop}(z)}.$

The loop filter also changes the frequency response of the input signal:

$H_{sig}(z) = \frac{H_{loop}(z)}{1+H_{loop}(z)}.$

Assuming the loop gain is very high in the lower part of the spectrum, where the desired signal is present, this frequency response can be approximated as:

$H_{sig}(z) = \frac{H_{loop}(z)}{1+H_{loop}(z)} \approx \frac{H_{loop}(z)}{H_{loop}(z)} = 1.$

In effect, given enough in-band loop gain, the frequency domain distortion is negligible.

Causal loop filters

Given a desired noise transfer function $H_{ntf}$, the loop filter can be derived as follows:

$H_{loop}(z) = \frac{1}{H_{ntf}(z)} - 1$

Now, splitting the NTF into its poles A(z) and zeroes B(z), the loop filter can be expressed as:

$H_{loop}(z) = \frac{A_{ntf}(z)}{B_{ntf}(z)} - 1$

and therefore:

$H_{loop}(z) = \frac{A_{ntf}(z) - B_{ntf}(z)}{B_{ntf}(z)}.$

For the loop to be causal, the loop filter must have at least one pure delay. Given that $A(z) = 1 - a_1 \cdot z^{-1} - a_2 \cdot z^{-2} - \ldots - a_n \cdot z^{-n}$, if we force the first coefficient of B(z), i.e. $b_0$, to be equal to 1, the first coefficient of the resulting loop filter numerator will be zero and the loop filter is guaranteed to have at least one delay.