# ADC response inversion to Gaussian noise

Assuming the input to an ADC is a Gaussian white noise signal, and being a bit idealistic in all senses, is there a theoretical expression that links input power to output power which can be inverted, that considers quantization and clipping effects?

It should be possible, at least with an empiric curve, but I wonder if there is a clear theoretical expression so that when I compute an output (digital) power I can relate it to an input (analogue) power. Always assuming I'm digitizing Gaussian white noise.

Below a Matlab code of my ADC response

v_max = 250e-3;
v_min = -250e-3;
v_ana = linspace(-450e-3,450e3,1000);
step = v_max/(2^(bits-1));
v_dig = step*(floor(v_ana/step)+0.5);
v_dig(v_dig>(v_max-step/2)) = v_max-step/2;
v_dig(v_dig<(v_min+step/2)) = v_min+step/2;

I have forward simulated a Gaussian signal of a power ranging from 0 to -40 dBFS and observed the output power. The plot below shows the input voltage variance (assuming the 250 mV max voltage) vs. the output voltage variance

Yes I have used a derivation from a paper by Walt Kester and Rob Reeder "Understand noise power ratio for modern wireless applications," July 02, 2007 to apply to this very question. This is of interest in radio receiver design when the signal we are measuring has a Gaussian distribution (so is noise like) as are many modern waveforms such as OFDM. With that we would have interest in optimizing the SNR and maximizing the dynamic range of the receiver (and with that minimizing the additional noise contributions from the ADC). In that paper they conveniently derived the clipping noise from a Gaussian distribution and combined it with quantization noise contributions for the use in noise power ratio measurements. The result considers quantization noise as well as clipping for a Gaussian distributed signal. The signal need not be white (can be bandlimited) but should typically transition at least a few quantization levels per sample to ensure that the quantization noise can be reasonably modelled as a uniform white distribution, which this analysis assumes. The parameter to optimize is the "AGC Level" or specifically where do we place the rms level of the waveform relative to the ADC's full scale input:

What this chart shows: Consider the 12 bit case (effective number of bits = 12 bits). If you set the input level of amplified Gaussian noise to be 14 dB below the level where a DC signal would clip (which is 11 dB below the level where a full scale sine wave would clip), you will have minimized the total ADC noise contribution to be 62 dB below the rms level of the signal. Note that there will be clipping in this case. If we were to instead insist on no clipping, we would need to set the input signal lower, where we see the contribution from quantization noise increases, and our overall SNR would be lower. (SNR in the context here as the "signal" being the AWGN sampled and the noise is the local noise contributed by the ADC process).

The quantization noise contribution is given by:

$$N_q(k,n) = \frac{k^2}{3\cdot 2^{2n}} erf(k/\sqrt{2})$$

And the clipping noise for a Gaussian distribution is:

$$N_c(k,n) = (k^2+1)erfc(k/\sqrt{2})-k\sqrt{2/\pi}\exp(-k^2/2)$$

These formulas are summarized below:

Below are the plots of the quantization noise and clipping noise individually to help add more clarity:

What the above plot shows is the total quantization noise, in dB as the total power integrated across the first Nyquist zone ($$-f_s/2$$ to $$+f_s/2$$ where $$f_s$$ is the sampling rate), relative to the power of a a sine wave at full scale (right at the threshold of clipping). Once the quantization noise is determined in absolute power level terms, it will be the same for other waveforms within the operational dynamic range of the ADC input, assuming we are not introducing clipping and that the waveform traverses at least a few quantization levels from sample to sample, and is not correlated to the sampling clock.

Here's an example: An ADC with an Effective Number of Bits (ENOB) of 10 bits clips at +/-1V at its input (Note, ENOB is typically maximized by establishing "full scale" to be 1 to 2 dB below actual clipping in practice). Assuming it's input is terminated in 50 ohms, this would be a sine wave at +10 dBm. We note the full scale sine wave is at -3 dBFS on the horizontal axis. For 10 bits, the total quantization noise (as we can also get from the formula for the SNR of a quantized sine wave) is 6.02 dB/bit + 1.76 = 61.8 dB for 10 bits. If we read over from the 10 bit line at -3 dBFS, we see the relative power is 61.8 dB. From this we establish the total power due to quantization noise is +10dBm - 61.8 dB = -51.8 dBm. Thus if we set the average power level of some other arbitrary signal to be -17 dBm at the ADC input, which is -27 dB below the level of the sine wave reference we established or -30 dBFS on the horizontal axis in the above plot; the quantization noise for this signal will still be at the -51.8 dBm level, or -17 dBm - (-51.8 dBm) = 34.8 dB lower than the signal. This is exactly what we read for the 10 bit line corresponding to -30 dBFS from the above chart.

The above was the total quantization noise alone. For a Gaussian distributed waveform, we would also have clipping noise added which increases in addition to the quantization as the total power of the waveform approaches Full Scale as graphed in the plot below. Note if you look carefully at the Quantization noise graph we see at the high end close to 0 dBFS that the curves due begin to drop from their otherwise linear slopes. This is due to the further decrease in quantization noise contribution due to clipping noise instead.

From the comments the OP is having some continued confusion. This may clear up how the noise due to clipping and quantization is additive and independent to the input waveform (even if the input waveform itself is noise), and thus the total variance would the sum of the individual variances (adds in power).:

Like what you see? These details and many more considerations for optimizing A/D sampling in a receiver are from my online course "DSP for Software Radio" that is running again starting at the end of Feb 2024, with an early sign-up discount until Feb 14! You can find my latest course listings at https://dsprelated.com/courses and https://ieeeboston.org/courses/

• This is very interesting. How do you define the 'Relative ADC noise to input (dB)', 10*log10(Nq/sigma)? Jan 15 at 16:11
• @albert it would be 20Log for a magnitude qty such as rms (standard deviation zero mean) and 10Log for power quantities such as the variance. So 20log10(Nq) is the quantization noise in dB relative to the power level where clipping occurs. That level is specific to your ADC (such as 10 dBm for a 1V peak sinusoid across a 50 ohm load). Jan 15 at 16:34
• (also please review your past questions to see if any of those should be selected as the "right answer" as I noticed you haven't done that yet, that will close them out from being open) Jan 15 at 16:41
• (I will, but answers were not fully clear to me).I can reproduce your curves by doing 10log(Nx). The full curve I understand is 10log(Nc+Nq). If Nx is the noise relative to the clipping level, then to get the absolute ADC output equivalent RMS voltage I should do (Nq+Nc)*v_max (being +/- v_max the ADC voltage range)? This is not clear to me. – Jan 16 at 15:57
• @albert Ah yes sorry those formulas are variance so 10Log. rms is square root of the variance (for zero mean or no DC term). To get rms voltage given -60 dB below full scale sine— start with the rms voltage level of the sine wave at full scale and then divide that by $10^{-60/20}$ (I reversed the formula for converting the ratio of rms voltages to dB which is 20Log(Vnoise rms/ Vsine rms). Make sense? Jan 17 at 0:30

Sort of.

Let's look at specific example: Gaussian noise with variance of 1 and 8 bit quantization.

The tricky part here is that theoretically speaking Gaussian noise does NOT have a maximum amplitude so you can't sample it without clipping. In practice a good assumption for a maximum amplitude is 5 times the standard deviation. The reduces the likelihood of clipping to about 1 in a million. If you want to be extra careful you can raise it to 6 and at this point you are likely to run out of memory and/or time before you see a clipping event. That choice becomes a trade off between clipping noise and quantization noise.

Assuming we stick with 5, than the level after quantization becomes

$$L_D = 10\log_{10}\frac{\sigma_{xx}^2}{5^2} = -14 \text{dBFS} \tag{1}$$

The quantization itself changes that level very little. The quantization noise for an N bit converter is

$$L_Q = 20\log_{10}\frac{2^{N-1}}{\sqrt{12}} \tag{2}$$

For an 8 bit converter that comes out to be $$L_{Q8} \approx -53 \text{dBFS}$$ which will change the overall level only by a fraction of a dB.

Another interesting aspect here: what harm will modest clipping and quantization do? For white noise the answer is probably "very little" since you just add white noise to white noise so it's still white noise.