Model notes
Checked with ADCToolbox. oversampling/: ntfperf, perfosr, ifilter. spectrum/: analyze_spectrum. fundamentals/: fit_sine_4param. This page follows examples exp_o01, exp_o02 and exp_o03; python/adc_oversampling.py builds the same record, runs the ADCToolbox analysis and pins every number shown here.
Oversampling. A converter sampling at fs spreads its quantisation noise from 0 to fs/2. If the signal needs only 0 to fs/2·OSR, a filter can drop the rest and with it all but 1/OSR of the noise: 3 dB for every doubling of OSR. That is the slope with no shaping.
Noise shaping. The model starts with stationary white quantisation noise of variance LSB²/12 and passes it through NTF(z) = (1 − z−1)L before adding it to the sine: zero at DC, rising as (2 sin πf)L, a straight line of 20L dB a decade on the log axis. The total noise gets worse, two, six and twenty times for L = 1, 2, 3, but what stays in the band collapses, and each doubling of OSR now buys 6L + 3 dB.
Why the spectrum looks like noise. A clean coherent sine through an undithered low-resolution quantiser produces periodic error and therefore a comb of harmonics. That is real, but it hides the noise-transfer-function slope. This lesson uses the standard linearised, dither-equivalent model and a circular NTF filter, so the record is stationary and the FFT has no false low-frequency floor from filter startup. It explains the expected noise power; a real modulator can add idle tones, overload and stability limits.
Added white noise. The slider adds independent, unshaped wideband noise after the NTF, in rms LSB. Oversampling still removes all but roughly 1/OSR of its power, but noise shaping cannot push it away from DC. Turn it up to see a flat floor take over from the sloped quantisation noise and limit the achievable SNDR.
Two ways to count it. perfosr fits the sine, windows the residual and adds up its spectrum to fs/2·OSR, one OSR after another. ntfperf integrates |NTF|² over the same band on a million-point grid; the dashed predictions combine shaped quantisation noise of LSB²/12 with the slider's flat white-noise power. The solid and dashed curves differ because the record is finite; once the residual becomes extremely small, the numerical sine fit also sets the measured floor.
What the band holds. ifilter keeps the FFT bins of the band, and their mirrors, and nothing else. The grey output can look like noise with a sine somewhere in it; the band is the sine, and what the filter left outside has an rms of its own.
A spectrum model, not a loop simulation. Resolution sets the ideal LSB and hence LSB²/12. The page does not claim a particular modulator topology or stability range; use a loop-level model when overload, state swing, DAC levels or idle tones are the question.