0
$\begingroup$

[Edit answer moved from OP edit to "Answers" as per comment suggestion]

I'm trying to create a simple model of a signal chain (image sensor) that includes an ADC but I'm failing to observe quantization noise. I'm afraid I'm missing big points about quantization noise. [Will assume Matlab for pseudo code]

Let's assume that the input signal has a range between 0-1 Volts and the ADC has N bits with LSB=1/2^N (eg 8 or 10).

My input signal average is centered in the range and let's assume that the standard deviation is a certain percentage of the ADC LSB (alpha): I=0.5+alpha*LSB*randn(10000,1)

I'm modeling the ADC as a quantizer like so: Iq=round(I/LSB)

I evaluate the noise of the quantized image as Iq_std_meas = std(Iq)

Case 1) If alpha>>0.5 then the signal swing is big compared to the LSB. I'm expecting to be able to model the output noise as Iq_std_model = alpha+1/sqrt(12) but it seems that a better model is Iq_std_model = alpha since the quantization error becomes insignificant.

Case 2) If alpha<<0.5 I'm expecting to be able to model the output noise as such: Iq_std_model = 1/sqrt(12) but obviously Iq_std_meas tends to 0 the lower alpha becomes.

Note that for any value of alpha I can observe quantization noise as 1/sqrt(12) by just taking: std(I-Iq)

It seems I can't measure the final noise as Iq_std_meas = std(Iq). What is the fundamental point that I'm missing?

$\endgroup$
9
  • $\begingroup$ What kinda ADC is it? If it's a ΣΔ ADC, the quantization noise will be sorta gaussian. But if it's a "conventional" ADC, the quantization error will be uniform p.d.f. I guess it looks like, from your code, that your model is of a conventional ADC. $\endgroup$ Commented Sep 20, 2023 at 16:30
  • $\begingroup$ Correct, I'm trying to model a conventional ADC (Iq=round(I/LSB) and hope it can be modeled using a gaussian approximation $\endgroup$
    – Knyq
    Commented Sep 20, 2023 at 16:39
  • 2
    $\begingroup$ That would be an inaccurate model. It's a uniform p.d.f. quantization error having zero mean (because you're using round() instead of floor()) with variance of $\frac{\Delta^2}{12}$ and it's bandlimited (to the Nyquist frequency) white. Now, for most modeling purposes (such as noise shaping or something), it probably wouldn't hurt to replace the uniform p.d.f. with gaussian p.d.f. having the same mean and variance and spectrum (uncorrelated samples). If your signal swing is large, you can get away with it. $\endgroup$ Commented Sep 20, 2023 at 17:46
  • 1
    $\begingroup$ @robertbristow-johnson I think you're aiming for application of the central limit theorem and getting to Gaussian PDFs that way. It does get a bit ugly, though, for insufficiently dithered signals, because the CLT depends on independently identically distributed variables, and that quantization noise becomes correlated if there's few LSBs of change between the sales that get filtered! $\endgroup$ Commented Sep 20, 2023 at 22:09
  • 1
    $\begingroup$ I don't disagree. I just think that when I have been doing noise-shaped quantization in the past, I knew the error coming out of the quantizer was uniform p.d.f. but I only worried about the mean and variance and filtered this just like it was AWGN with a bandwidth of Nyquist. The behavior came out virtually the same as if it really was AWGN having the same mean and variance. $\endgroup$ Commented Sep 20, 2023 at 22:14

1 Answer 1

0
$\begingroup$

I'm expecting to be able to model the output noise as Iq_std_model = alpha+1/sqrt(12)

That's the big fundamental point that I was missing. Standard deviation sums in quadrature, duh! Using Iq_std_model = sqrt(alpha^2+1/12) works quite well when simulating Case1

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.