One interesting property of noise is that there's no upper limit to how big a single pulse can be. It is possible to find the average size of the pulses (called the mean noise error) though.
Ideally, the mean noise error will be zero: on average, the positive and negative pulses will cancel each other. But sometimes the pulses going one way will be larger or more frequent than the ones going the other way, and the mean noise error will be positive or negative.
If that happens, you can treat the mean noise as an uncorrelated error (an offset) and subtract it from the readings to compensate them. It doesn't eliminate the error in any single measurement, it just means that noise will make half of your measurements too big and the other half too small.
The natural follow-up question is, "how much too large or too small?" To answer that, we find the average difference between any single error and the mean.
There's a problem though: if the mean noise error is zero, the difference between each pulse and the mean is simply the value of the pulse itself. If we add them together, we'll get zero again.
Instead, we get rid of the negative values by squaring the size of each pulse. Then we can add the squared values together, take the square root of the sum, then divide that by the number of samples. The result is a value called the root mean square deviation of the noise or RMS value.
RMS values give us a way to describe how noise signals combine.
When multiple noise sources act on the same signal, they can either add together or cancel the same way the pulses from a single noise source cancel over time. We combine them the same way: squaring, adding, then finding the RMS value.
One thing RMS values don't do is solve the 'no upper limit on the size of a single error' problem. Technically there is no solution, but we can deal with the problem using some more math and a few assumptions.
The most common kind of noise is called Gaussian, and has the same statistical properties as the standard distribution:
The RMSD of the standard distibution is called the standard deviation, which has qualities we can use.
For Gaussian noise, about 63% of the individual errors will be smaller than the standard deviation. The remaining 37% will be larger.
Of that 37%, about 63% of them will be smaller than two standard deviations, 63% of what's left will be smaller than three standard deviations, 63% of the remainder will be smaller than four standard deviations, and so on.
Here's a plot of 5000 Gaussian random numbers, with horizontal lines spaced one standard deviation apart:
As you can see, only a few values are more than 3 standard deviations from the mean (statistically, only 0.26% of them).
If we define an ADC's LSB in terms of standard deviations of the RMS noise, we can predict the distribution of output codes we'll get for a constant input. At 1 standard deviation per LSB, we can expect to see 8 different codes in a series of 5000 readings.
We usually set LSB at 6 standard deviations. That way if the input is halfway between two thresholds (+3 and -3 on the graph above), we can expect to get the same code 99.74% of the time.
If the input is equal to one of the thresholds (+6, 0, and -6), we can expect almost all of the output to be one of two codes (only one Gaussian value in 500 million is more than 6 standard deviations from the mean), and we can expect each of those two codes to appear 50% of the time.
Now we can put the definition of Noise-Free Code Resolution in known and useful terms:
If we define NFCR as six times the RMS value of all input-referred noise in a sytem, the contribution from noise will only exceed 1LSB for 1 reading in 500 million.
That's why the resolution of the ADC itself has little to no effect on the quality of measurements:
- Only bits larger than the NFCR can be considered measurements of the signal.
- Bits smaller than the NFCR just measure the noise in that particular reading.
With that information, you can use NFCR as a design value. If you want to use an ADC with a given resolution, you have to build a circuit whose RMS noise is less than 1/6th of the ADC's LSB.
Here's how those numbers crunch for several common ADC resolutions working with a signal that swings between 0v and 5v:
MAXIMUM RMS NOISE
... and now you know why I twitch a little when people talk about wanting to use 24-bit or 32-bit ADCs.
Given all the problems we've covered so far, what do chip manufacturers mean when they advertise an umpty-many bit ADC?
An ADC's resolution means the ADC itself won't contribute errors larger than the specified LSB, and can perform at that resolution under suitable conditions.
It's up to the circuit designer to learn what those conditions are, to build a circuit that can live up to the ADC's capabilities, and to choose signals that don't exceed the ADC's limits.
Dealing with noise is only one part of working with an ADC. Even if your signal is perfectly noise-free, you can only be sure you're getting correct readings if you're measuring a DC voltage.
If you want to measure a signal that changes over time, you have to make sure your ADC can capture it correctly. To do that, you need to know something about the way ADCs work.