What Causes INL/DNL and Missing Codes?

September 11 2025
Ersa

Causes of INL/DNL errors, why missing codes happen (DNL < −1 LSB), how to test with histograms, and how to keep ADCs monotonic.

INL/DNL (inl dnl) describe how an ADC’s step widths and cumulative transfer error behave—why missing codes appear and how adc monotonicity is maintained. DNL is the step-to-step width error versus the ideal 1-LSB. INL is the cumulative deviation from an ideal straight line, referenced to an endpoint or best-fit baseline. Missing codes arise when any DNL is below −1 LSB; monotonicity requires DNL ≥ −1 LSB. In practice, a “no missing codes” claim commonly means DNL ≤ +1 LSB across the range. Typical causes include element mismatch (capacitors/resistors), reference or supply instability, insufficient input-driver or track-and-hold settling, and comparator offset or hysteresis. For a fast bring-up check, run a code-density histogram and watch for zero-count bins and outlier DNL. Mitigate in this order: reference/ground, then driver/source resistance, then layout return paths, then sampling phase or clock quality. Want a refresher on What is an ADC? Jump to the hub. Need the Hub’s Resolution overview? Open it here.

INL vs DNL relationships and thresholds explaining monotonicity and missing codes.
Relationships and thresholds: DNL < −1 LSB → missing codes; DNL ≥ −1 LSB → monotonic.

Definitions in One Minute

DNL = Differential Non-Linearity;  INL = Integral Non-Linearity.

DNL describes per-code step-width error versus the ideal 1-LSB. Using a code-density histogram, the common form is DNL(k) = (Wk − Wideal) / Wideal. Negative DNL means a compressed step; positive DNL means an expanded step.

INL is the cumulative deviation of transition points from an ideal straight line, referenced to an endpoint baseline or a best-fit (least-squares) baseline. In practice, INL is often obtained by integrating measured DNL across the code range.

  • DNL < −1 LSBMissing codes.
  • DNL ≥ −1 LSBADC monotonicity is preserved.
  • DNL ≤ +1 LSB ⇒ common practical “no missing codes” guarantee.
  • “Monotonic” ≠ “no missing codes” — the upper bound must also hold.

Next: see how to derive DNL/INL with a code-density histogram.

Causes by Architecture

Four rows × three columns: Symptoms | Likely causes | Quick checks
SAR
Symptoms

DNL shows 2^k periodic texture; anomalies near endpoints or mid-scale. Texture amplitude changes with temperature or sample rate.

Likely causes

Unit-cap mismatch; switch charge injection/kickback; comparator offset or hysteresis; insufficient driver GBW; reference-buffer transients coupling with switch timing.

Quick checks

Slow-ramp code-density to reveal 2^k DNL patterns and locate bit weights; increase driver GBW or reduce source resistance; slow sampling or extend acquisition window to see if edge anomalies settle.

Pipeline
Symptoms

INL bends or segments, often near stage boundaries; DNL clusters locally. Bending worsens as input frequency increases.

Likely causes

MDAC capacitor mismatch; finite op-amp gain/bandwidth and incomplete settling; interstage gain error; reference transients.

Quick checks

Lower input frequency or allow longer settling—if INL straightens, settling is at fault; step/hold test to confirm 0.5 LSB by Ts/4; vary reference-buffer loading to see bend location shift.

Flash / Ladder
Symptoms

Large local DNL swings; occasional bubble/hot codes causing brief non-monotonic jumps; anomalies concentrated near code boundaries.

Likely causes

R-2R or resistor-ladder mismatch; comparator offset/noise; insufficient bubble suppression or encoder issues.

Quick checks

DC sweep with heavy averaging to catch brief reversals; raise comparator bias/bandwidth or add light dither to test bubble suppression; retune ladder trim/balance to watch DNL converge.

Delta-Sigma
Symptoms

Static linearity sensitive to reference nonlinearity and internal DAC unit mismatch; missing codes are rare. With overload or reduced OSR, SINAD/ENOB drop before static metrics drift.

Likely causes

Modulator overload; unit-DAC mismatch; reference transients/noise coupling back through the loop, shifting static inl dnl.

Quick checks

Increase OSR or averaging and reduce bandwidth—if ENOB recovers while INL stays flat, it was dynamic-limit; limit input to avoid overload; isolate/buffer the reference and measure improvement.

SAR capacitor mismatch creating repetitive DNL patterns across codes.
Capacitor mismatch can imprint 2^k DNL patterns on SAR codes.

How to Test DNL/INL

Code-density (ramp / sine)

Drive a slow ramp or coherent sine to uniformly visit codes, then build a histogram. Estimate DNL from code counts and obtain INL by cumulative summation against the chosen baseline.

DNL(k)Nk / Nideal − 1 (equivalent to Wk / Wideal − 1). Any zero-count bin indicates missing codes.

Endpoint vs best-fit baseline

Endpoint aligns the first and last transition; it is intuitive and easy to compare with datasheets, yet it is sensitive to end-region drift. Best-fit uses least squares; it is more repeatable and usually reports smaller INL magnitude.

For engineering debug, report both and clearly state the baseline used on each plot and table.

Common pitfalls
  • Insufficient source linearity or sine distortion → false INL curvature.
  • Poor coherence or clock jitter → leakage that biases code counts.
  • Unstable Vref or buffer transients → time-varying code width.
  • Driver GBW / source resistance / sampling phase → incomplete acquisition widens DNL.
  • Sample size: target ≥ 50–100 hits per code; use long coherent sine for high resolution.
Quick-check microflow
  1. Run a slow ramp across full scale and scan for zero-count bins → missing codes.
  2. Compute DNL extremes to judge monotonicity (DNL ≥ −1 LSB) and “no missing codes” (DNL ≤ +1 LSB).
  3. If abnormal, switch to DC and mid-band sine to separate source/driver issues from internal causes.
Histogram with a zero-count bin indicating missing codes.
Code-density view: zero-count bins reveal missing codes immediately.

Bring-Up Checklist

DNLpk-pk: —
INLpk-pk: —
Missing codes: unknown
Vref: noise, decoupling, Kelvin

Action. Place local decoupling, route Kelvin to VREF/AGND, and measure ripple plus low-frequency noise spectrum.

Why. Reference drift directly alters code width and can mask true inl dnl or fabricate missing codes.

Pass. Ripple and RMS noise referred to input < 0.3–0.5 LSBENOB; no obvious step during load transients or hot-plug tests.

Driver / source / sample-and-hold

Action. Bound source resistance and acquisition time; select a driver with adequate GBW and phase margin; derate effective sample rate when using a MUX.

Why. Incomplete acquisition widens DNL and can bend endpoints; multiplexing reduces charge time per channel.

Pass. With a full-scale step, reach 0.5 LSB by Ts/4. DNL extremes shrink after reducing Rsrc or increasing driver GBW.

Anti-alias filter first, OSR later

Action. Start with fc ≤ fs/5 using single- or two-pole RC; suppress out-of-band content before oversampling/averaging.

Why. Aliased energy and source distortion bend the INL baseline and corrupt histogram counts.

Pass. With a more conservative cutoff, DNL/INL stop shifting vs input frequency; FFT shows reduced out-of-band leakage.

Layout & return paths

Action. Use star-ground strategy; keep short returns; join analog and digital grounds at one point; keep switching currents away from reference loops.

Why. Return noise and ground bounce modulate code width in load- or temperature-dependent ways.

Pass. DNL patterns remain stable across temp/load; rerouting or extra vias reduce anomalies instead of moving them around.

Pattern reading (diagnosis)

Action. Run a slow code-density sweep; if a zero-count bin appears, treat it as missing codes first. Inspect DNL texture and INL shape.

Why. Repetitive 2^k DNL patterns suggest SAR bit-weight mismatch; endpoint/segmented bends often implicate Vref/MDAC/bandwidth.

Pass. No zero-count bins; DNL ≥ −1 LSB (monotonic) and practical “no missing codes” as DNL ≤ +1 LSB; INL no longer shifts with source or frequency.

Next steps: verify with a code-density histogram and, if needed, refine Reference & Front-End.

Common Pitfalls

Monotonic ≠ No-missing-codes

Mistake. Treating adc monotonicity as equivalent to “no missing codes.”

Why it hurts. Monotonic only requires DNL ≥ −1 LSB; many vendors cite “no missing codes” as DNL ≤ +1 LSB too.

Fix. Use a code-density histogram, compute DNL range, and state both bounds explicitly.

Datasheet-only, no on-board histogram

Mistake. Trusting typical specs without validating on the assembled board.

Why it hurts. System-level inl dnl depends on Vref, driver, and layout; lab results often deviate.

Fix. Run slow ramp or coherent sine; target ≥ 50–100 hits/code; report endpoint and best-fit baselines.

Nonlinear ramp / jittered source → fake INL

Mistake. Measuring INL with a distorted ramp or with poor coherence and jittered clocks.

Why it hurts. Leakage and distortion skew code counts, creating false curvature and hiding missing codes.

Fix. Use coherent sine, verify distortion; control jitter σj; reduce bandwidth and input frequency if needed.

Low-noise Vref, weak buffer/driver loop

Mistake. Focusing on quiet references while ignoring buffer transients and driver loop stability.

Why it hurts. Kickback and dynamic load modulate code width, widening DNL and bending endpoints.

Fix. Kelvin route Vref; check Rsrc·Csh vs GBW limits; meet 0.5 LSB by Ts/4 with a full-scale step.

Next: measure properly with a code-density histogram, follow the Bring-Up checklist, or refine Reference & Front-End.

Decision Helpers

DNLmin/DNLmax: — / —
INLpk-pk: —
Missing codes: unknown
Gate: zero-count bin?

Run a code-density histogram with a slow ramp or coherent sine and scan for zero-count bins.

  • Any zero-count bin ⇒ missing codes.
  • Compute DNLmin, DNLmax to judge adc monotonicity and no-missing-codes claims.

If DNLmin < −1 LSB, prioritize mismatch/driver/comparator; if DNLmax > +1 LSB, recheck driver and reference margins.

Read the DNL/INL pattern
  • Repetitive 2^k DNL texture ⇒ SAR unit-cap mismatch (amplitude tracks temp/rate).
  • Endpoint or segmented INL bends ⇒ Vref/MDAC limits or incomplete settling/bandwidth.
  • Large local DNL swings + bubble/hot codes ⇒ flash/ladder comparators/encoder issues.
  • Delta-sigma: rare missing codes; ENOB improves with OSR while INL stays flat ⇒ dynamic limit.

Verify by lowering input frequency, extending acquisition, reducing Rsrc, increasing driver GBW, or tweaking reference buffer compensation.

Fix in this order
  1. Reference / ground: clean ripple; Kelvin and short returns.
  2. Driver / source / S&H: meet Rsrc·Csh and GBW/phase margins; MUX-derate sample rate; reach 0.5 LSB by Ts/4.
  3. Layout returns: shorten reference/analog loops; avoid switching current paths.
  4. Sampling phase / clock: ensure coherence and low jitter to stabilize counts.
  5. Averaging / OSR: add conservative gain only after anti-aliasing and headroom checks.

Exit when no zero-count bins remain; DNL ≥ −1 LSB (monotonic) and practical “no missing codes” as DNL ≤ +1 LSB; INL no longer drifts with source or frequency.

Need background? See How to test DNL/INL, Reference & Front-End, or ADC Types.

Quick Picks

Target ENOB: —
LSB@FS: —
No-missing-codes: aim yes
Reference + buffer

Choose a low-noise reference with tight tempco, then buffer it with ample GBW and output current. Kelvin route VREF/AGND and add local bulk plus high-frequency decoupling near the ADC pins.

  • Noise budget: input-referred < 0.3–0.5 LSBENOB rms across the measurement band.
  • Tempco:10–20 ppm/°C for ≥16-bit builds; looser acceptable for 12-bit work.
  • PSRR:60 dB at switching harmonics; clean load-step recovery at S/H kickback.

Why it matters: reference ripple directly modulates code width, inflating inl dnl and faking missing codes.

Driver + AAF

Use a unity-gain-stable driver with ≥60° phase margin and size the RC anti-alias filter conservatively. Bound the equivalent source resistance seen by the S/H capacitor.

  • Settling target: reach 0.5 LSB by Ts/4.
  • Time constant bound: τ ≤ (Ts/4)/ln(2^(N+1)) ⇒ approx: 12-bit: τ ≤ Ts/36; 16-bit: τ ≤ Ts/47; 18-bit: τ ≤ Ts/53.
  • AAF start point: fc ≤ fs/5; add a second pole if source distortion or OOB energy is high.
  • MUX note: derate effective sample rate; guarantee per-channel acquisition time.

Why it matters: incomplete acquisition widens DNL and bends endpoints; aliasing corrupts histograms and adc monotonicity checks.

Production notes

Lock tolerances, drift, power, and I/O bandwidth early. Keep the chain honest from AAF to interface links.

  • RC tolerance:1% (prefer 0.1–0.5% for ≥16-bit corners); matched tempcos on R and C.
  • Ref accuracy/drift:0.05–0.1% initial; ≤ 50 ppm/1000 h aging for precision builds.
  • Thermals/power: leave headroom for driver load; avoid self-heating near VREF nodes.
  • Throughput: SPI/LVDS/JESD204 bitrate ≥ samples × bits × margin; verify logic-level compatibility.

Quick checks: Monte-Carlo RC and Vref tolerances; worst-case fc spread and LSB drift; confirm bus timing slack.

See also Reference & Front-End, Anti-Aliasing & Jitter, and the IC selection guide.

FAQ

What is an INL error in ADC?

INL is the cumulative deviation of code transition points from an ideal straight line. It can be referenced to an endpoint baseline or a best-fit (least-squares) baseline. INL is reported in LSB or %FS and reflects mismatch, reference or buffer issues, and incomplete settling across the range.

What is a DNL error in ADC?

DNL is the per-code step-width error relative to the ideal 1 LSB. Negative DNL means a compressed step; positive DNL is an expanded step. Any DNL below −1 LSB creates missing codes, while DNL ≥ −1 LSB preserves ADC monotonicity. DNL is typically measured with a code-density histogram.

What causes missing codes in ADCs?

Missing codes appear whenever any DNL is less than −1 LSB. Typical triggers include SAR unit-capacitor mismatch, incomplete acquisition from high source resistance or limited driver GBW, comparator metastability or offset, resistor-ladder mismatch, and reference or MDAC settling issues in pipeline converters. Scan for zero-count bins in the histogram.

Does monotonicity guarantee no missing codes?

No. Monotonicity only requires DNL ≥ −1 LSB, which prevents the transfer curve from stepping backward. A common engineering claim for “no missing codes” additionally expects DNL ≤ +1 LSB across the full range. Verify both bounds with a code-density histogram before relying on datasheet headlines.

How is DNL calculated/measured?

Use a code-density histogram with a slow ramp or a coherent sine. Estimate DNL(k) as Nk/Nideal − 1, which is equivalent to Wk/Wideal − 1. Ensure adequate samples per code, coherent sampling, and low jitter. Watch for source distortion and leakage that can bias code counts and DNL extremes.

How do you measure ADC INL?

First derive DNL from the histogram, then integrate to obtain INL using the chosen baseline. Alternatively, compute transition point deviations directly versus an endpoint line or a best-fit line. Report both baselines when possible: endpoint aids datasheet comparison, while best-fit improves repeatability and robustness.

How to check if an ADC is working?

For bring-up, run a slow ramp over full scale, build a histogram, and look for zero-count bins. Compute DNL min and max to confirm monotonicity and practical no-missing-codes claims. Then try a mid-band sine and check SINAD. Also verify reference ripple and driver settling to isolate non-converter causes.

How to increase ADC accuracy?

Improve ENOB and linearity by cleaning the reference and grounds, ensuring driver GBW and phase margin, bounding source resistance, and using a conservative anti-alias filter. Keep sampling coherent with low jitter. Fix layout return paths. If bandwidth allows, average or oversample, then recheck histogram and SINAD.

Related questions

Conversion

Small-batch ADC sourcing with a 48-hour selection loop.
Get three safe options in 48 hours.

Within 48 hours you’ll receive three safe options with indicative lead time, price ranges, and short notes on front-end/Vref and linearity risk.

Cut-Tape / Partial Reel / AEC-Q available.

Ersa

Anastasia is a dedicated writer who finds immense joy in crafting technical articles that aim to disseminate knowledge about integrated circuits (ICs). Her passion lies in unraveling intricate concepts and presenting them in a simplified manner, making them easily understandable for a diverse range of readers.