WHAT YOU ARE LOOKING AT
The usual story is that a quantizer adds white noise of power
Δ²/12. That story is a convenience. Feed a quantizer a pure
sine and the error is not random at all: it repeats exactly once per
signal period, so it can only contain harmonics of the signal. Writing
that Fourier series out gives
e(t) = Σp Ap sin(pωt),
Ap = δp12n-1 +
Σm (2/mπ) Jp(2mπ2n-1),
p odd
where Jp is a Bessel function of the first kind. The red stems
are that formula, evaluated live. The grey stems are a direct FFT of a
quantized sine. They land on top of each other, which is the point: the
formula is not an approximation.
THINGS TO TRY
-
Start at 1 bit. Two levels, so the output is a square wave and
the harmonics fall off as 1/p — enormous, nothing like a noise
floor. The white noise line sits far below the real harmonics.
-
Walk the bits up. Each individual harmonic drops about 9 dB per
bit — not the 6 dB you might expect, because 6 dB per
bit is the total noise power, and the number of harmonics
doubles at the same time, adding 3 dB back. They also get denser
and more irregular, because the Bessel functions oscillate. By
8 bits the spikes are so many and so small that calling them
“a noise floor” finally becomes a fair description —
which is exactly when the Δ²/12 model starts being useful.
-
Drag terms m down to 1. One Bessel term already gets the shape
roughly right; the sum converges slowly (the terms fall off like
m-3/2) so a few hundred terms are needed before the small
harmonics settle. Watch A3 stop wobbling.
-
Back the amplitude off to about 0.5. The measured harmonics move
but the Bessel curve does not: the formula is derived for a full scale
sine. This is why a real converter's distortion changes with input
level.
-
At any setting, compare SQNR with 6.02B+1.76. They agree
within a fraction of a dB even though the noise is manifestly not
white — the total power is right, only its distribution is wrong.
WHY IT MATTERS
Harmonics fold. An odd harmonic above fs/2 lands somewhere
inside your band, and no amount of oversampling removes it, because it is
not noise you can average away — it is a tone. That is why real
converters dither: adding a little genuine noise before the quantizer
breaks the harmonics up into something that actually is white, trading a
slightly higher noise floor for the absence of spurs.
The static version of this figure is Figure 18 and the new
quantization noise figure in the ADC chapter. Bessel values here come
from a small series implementation in this page; the lecture figures use
scipy.special.jv and agree to about 0.1 %.