Data Converters: ADC & DAC

differential nonlinearity (DNL)

/ D-N-L /

Differential nonlinearity zooms in on each individual step of a converter and asks: is every step the same size? In a perfect converter, moving up by one code should always mean the same small voltage change — every rung of the ladder evenly spaced. DNL measures how much each actual step deviates from that ideal one-LSB size. Where INL checks the whole ruler for a bow, DNL inspects the spacing between neighboring tick marks, one gap at a time.

It is quoted in LSBs as the worst-case step error. A DNL of plus 0.5 LSB on some code means that step is 1.5 LSB wide instead of 1.0; a DNL of minus 0.5 LSB means it is only 0.5 LSB wide. The danger threshold is minus 1 LSB: a step error of exactly minus 1 LSB means that step has zero width — its code never appears for ANY input voltage. That is a MISSING CODE, a value the converter can simply never output, leaving a gap in its possible readings. A converter guaranteed 'no missing codes' has DNL better than minus 1 LSB everywhere.

Why this matters: good DNL means smooth, even steps with no gaps or doubled-up codes, which keeps quantization clean and avoids ugly local glitches. It is especially critical where every code must be usable, such as in closed control loops where a missing code can cause a sudden jump or limit-cycle hunting. DNL and INL are reported together because they tell different stories — DNL is the local, step-by-step evenness; INL is the global, accumulated straightness. A trustworthy converter needs both to be small.

A 12-bit ADC has 1 LSB = 0.806 mV on a 3.3 V reference. If one code has a DNL of -1.0 LSB, that code is missing entirely — no input voltage ever produces it, and the output jumps straight from the code below to the code above. 'No missing codes' guarantees DNL > -1 LSB.

Step-by-step evenness; a -1 LSB step means a code that never appears.

DNL worse than -1 LSB produces missing codes — values the converter can never output. This is why monotonic, no-missing-code behavior is a key spec, especially in feedback and control loops where a gap in the codes can cause instability.

Also called
DNLdifferential linearity error微分線性誤差微分非線性誤差