6
$\begingroup$

Currently I'm working on a project which uses oversampling to increase the resolution of a 12 bit ADC to a maximum of 16 bits. My goal is to fully understand the theory behind oversampling and why it is increasing the resolution. As far as I understood this topic, oversampling and decimation increases the resolution because the white noise of the input signal is distributed along a larger frequency span. After the oversampling the signal gets low pass filtered, so that we achieve fewer noise in the frequency span of interest (see the first figure).

enter image description here

So far so good, but I think i'm still not 100% confident of what is going on here:

  1. How is the low pass filtering achieved? I know that I need to sample the input signal $4^n$ ($n$ = additional bits) times for every additional bit. After adding all samples together, the sum gets right shifted by $n$, which is equal to divide the sum by $2^n$. Is this the low pass filtering or do i need to somehow low pass filter it after i shifted the sum? In the application note AN118 that I used to understand this topic it seemed like the process of shifting is the low pass filter.

  2. My input signal is a dc signal (sensor output) and I'm getting kind of a headache to understand why oversampling can increase the resolution of dc signals. Inside the appendix A of the application AN118 is a good approach to explain the reason for the increased resolution with oversampling. It also shows where the often used equation f_os = 4^n * f_s (f_os = oversampling frequency; f_s = sampling frequency) comes from. My problem is this whole appendix refers to AC-Signals... You can see this with for example equation 8 inside the application note, where the in-band noise power is calculated with the integral from 0 to f_m (f_m = highest spectral component of the input signal). In case of a dc signal as input i got f_m = 0. Am I missing something or can someone maybe explain to me why the resolution of a dc signal can be improved with oversampling?

  3. Is something like SNR a good specification to describe the quality of a dc signal? I've read from a source that SNR is an AC specific attribute, for example in Table 2 of this Texas Instruments document. This document also states that ENOB can't be calculated for dc signals and that i need to calculate the "effective resolution" for dc signals. This was the first time i've read something about this... Can someone verify that for sure dc signals can't be specified with SNR and ENOB?

At the end of my project I would like to compare different resolutions achieved with oversampling. What would be a good specification to compare the measured results? Maybe the "effective resolution" or the overall noise calculated with the variance?

I hope someone can answere my questions. At the moment i'm struggling a bit to fully understand this topic...

$\endgroup$
4
$\begingroup$

My input signal is a dc signal (sensor output) and im getting kind of a headache to understand why oversampling can increase the resolution of dc signals.

The ADC puts out integers. So, let $x$ be the integer that would come out of the ADC (100.3, say, or -333.3). Now let $y = \lfloor r \rfloor$ be the quantization operation, where you get straight integers, like 100 or -334.

Now, let $r$ be the sum of some actual value $x$ and some nice well-behaved zero-mean noise -- $r = x + n$. For the right sort of noise (zero-mean Gaussian that's big enough is one kind) the ADC output is a random variable with a mean equal to $x$. So treat $y = x + n_{ADC}$, where $n_{ADC}$ is a zero-mean noise process.

Now when you average a bunch of samples of $y$, the effect of $n_{ADC}$ on the signal diminishes (in fact, its deviation goes down as $\sqrt n$ for an $n$-sample average). That's why oversampling and averaging reduces the noise and increases resolution.

How is the low pass filtering achieved?

In the method you outline, you're averaging the input samples. That's effectively low-pass filtering.

Note that the app note gets it slightly wrong: it's having you add up $2^n$ samples, then shift by $n$, effectively dividing by $2^n$. However, by virtue of the averaging, you're effectively adding bits to the ADC resolution*. Usually when I do this I just take the sum of the $2^n$ samples, knowing that there's a lot of noise in the LSBs. If I do shift down, I shift down by $n/2$, not by $n$.

Is something like SNR a good specification to describe the quality of a dc signal?

Not really. SNR is good when you have a well-defined signal strength.

For DC, it's much better to use $\pm x_e$, where $x_e$ is the anticipated error bars, or effective number of bits, or something. There's plenty of examples out there -- I'd take my guidance from voltmeter specs, or from industrial instrument specs.

* You are adding to precision, not accuracy. Accuracy is a different thing**. The accuracy of an ADC is limited by things other than its noise characteristics.

** The best short description I have is throwing darts: accuracy is how well-centered the darts are around the bullseye -- precision is how tightly clumped they are. If all your darts land on a point 3" over and 1" down from the bullseye, you're very precise -- but not terribly accurate.

$\endgroup$
8
  • 2
    $\begingroup$ For the precision vs accuracy, I find the following example useful: Think about an analog wrist watch to measure time. If it works correctly, then for every true 24 hours (official day) the arms meet vertically exact upwards. Neither late or early, just on time. Then we call this an accurate clock; it measures the time correctly. The precision is related with the tic marks on its rim. The more tickmarks there are, the more precise it tells the time. Eventually, I would prefer a more accurate clock with less precision (less tickmarks) over a less accurate one with more tics. $\endgroup$ – Fat32 Dec 23 '20 at 19:33
  • $\begingroup$ Thanks for the replies! Both examples to understand the difference between accuracy and precision were helpful for me. I still have a few questions: When averaging acts like low pass filter, can I define a cut-off frequency? I mean when I use oversampling it should be somewhere around the signal frequency or not? Another questions relates to @TimWescott method of taking the sum of $2^n$ samples and not shifting them. So your method doesn't add bits to the ADC resolution? I dont really understand why you are just taking the sum without shifting, or why you only shift by $n/2$... $\endgroup$ – Punchi Dec 27 '20 at 13:17
  • $\begingroup$ If I want to find out if a coin is fair, I flip it a bunch of times and see how closely the average ratio of heads to tails is to $\frac{1}{2}$. If my coin is a 1-bit "ADC", and I use your article's rule, then I add up the results of 256 flips (getting a number somewhere around 128) and divide by 256 (i.e., shift down by 8). The result will be zero every time, or evenly distributed between 0 and 1 with rounding. Thus, I lose all that good information implied by the fact that the deviation before rounding to 0 or 1 is $\frac{1}{16\sqrt{2}}$. $\endgroup$ – TimWescott Dec 27 '20 at 18:35
  • $\begingroup$ Yes, your lowpass filter will have a cutoff -- even if you're doing a running average. And yes, there's an optimal cutoff to give you the best tradeoff between preserving signal accuracy and corrupting it with noise. That's the subject of a separate question, I think. $\endgroup$ – TimWescott Dec 27 '20 at 18:37
  • $\begingroup$ Ahh okay, sorry i think you misunderstood the application note and i didn't read your first response well enough... The application note mentions that you add up the sum of $4^n$ samples and shift that sum by n bits, or divide it by $2^n$. I think in the first figure of the application note they call it downsampling. It's essencially the method you described in your first response. $\endgroup$ – Punchi Dec 28 '20 at 11:44
0
$\begingroup$

I feel that someone ought to advise the questioner against thinking that this process is automagically going to give an extra 4 bits of resolution. IF the noise on the DC signal is uncorrelated, gaussian-distributed noise, then yes it will. In the vast majority of real cases, the noise is not like that. In particular, for DC type signals with low-cost ADCs, there are nonlinearity and "sticky counts" that will make the averaging results much worse. Try and find out. If you you get less than you want, look into dithering your signal. This technique helps spread the quantization errors out into a smoother distribution, approximating a gaussian.

$\endgroup$
1
  • $\begingroup$ I've already tested my setup and im happy with the results. I have a good gaussian-distribution of values when I measure signals. With 4 additional bits via oversampling and a reference voltage of 3V, I get a rms voltage of 57,54µV. Using the formula from table 2(ti.com/lit/eb/slyy192/…) i get a effective resolution of 15,67 bits, which is a pretty good result I think. $\endgroup$ – Punchi Dec 30 '20 at 18:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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