This guide is intended to help engineers to choose an Analog to Digital Converter for their designs.

When you want to build a system that tracks an analog voltage, you need an Analog to Digital Converter (ADC) so your microcontroller or computer can read and record the results. If you want good measurements, you pick an ADC with the highest resolution you're willing to pay for, right?

Not so fast.

There's only a vague connection between an ADC's resolution and the quality of the output you get from it. A lot of 16-bit ADCs really operate as 7-bit ADCs and 9-bit random number generators.

What's Going On?

An ADC's static performance is controlled by a value called noise free code resolution, or NFCR, usually defined as six times the Root Mean Square (RMS) input-referred noise at the ADC's input pin.

An ADC's dynamic performance is controlled by a value I call aperture slew rate, or ASR. It depends on values you usually can't find in a datasheet.

Those statements contained a lot of undefined terms, and this tutorial will walk through the definitions. Once you understand them, you'll be able to make a more informed decision next time you look for an ADC.

Basic vocabulary

Let's start with some of the simplest terms first:

  • The term static refers to signals that stay constant, or change slowly. 
  • The term dynamic refers to signals that change quickly. 

The difference between 'slowly' and 'quickly' depends on what you're measuring, but usually boils down to, "do I care how much the signal changes while I'm measuring it?" If you can say "no", the input is static. If you have to say "yes", the input is dynamic.

For dynamic readings, the slew rate of the signal you want to measure (how quickly the signal changes) has a huge influence on the kind of ADC you'll need.

  • A code is the output from an ADC. 

In most cases a code is a binary number, but it doesn't have to be. The only real restriction is that different codes represent different voltages at the ADC's input.

Binary is inconvenient for precision analog work because different numbers of bits change from one consecutive value to the next: changing 0010 to 0011 only flips one bit, but changing 0111 to 1000 flips all four. If the bit-flipping has any effect on the quality of the measurement (and in precision work you assume everything has some effect), the quality of the output can change with the output value itself.

Many ADCs use Gray Code, at least internally, because only one bit changes from one Gray code value to the next. Other ADCs use more advanced techniques known as 'whitening transforms' to make the changes from one value to the next look like random noise.

And now that I've used that word:

  • The term noise itself is complicated enough to get its own page, but:
  • Input referred noise describes a way of simplifying noise calculations. 

No real electrical device is perfect, and every real circuit has noise in several places. Trying to describe that kind of system is a hard, and in most cases we don't even try. 

Instead, we pretend the circuit is noise free and imagine connecting a noise generator to the input. As long as we get the same amount of output noise from the same input signal, the simplified model is good enough to be useful. That process -- replacing a real component with a perfect one and adding a noise source at the input -- is called 'referring the noise to the input'.

A term I haven't used yet, but will use a lot in the future, is:

  •  One least significant bit or 1LSB

1LSB has two common definitions that look alike, but are actually quite different:

  1. The smallest change of input that will make the ADC shift from one output code to another.
  2. The smallest change of input you can measure repeatably.

The difference between those definitions hinges on the word 'repeatably' and its connection to noise, so let's meet the villains of our piece...

This guide was first published on May 23, 2019. It was last updated on May 23, 2019. This page (Overview) was last updated on Jun 20, 2019.