What Causes INL/DNL and Missing Codes?
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.
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 LSB ⇒ Missing codes.
- DNL ≥ −1 LSB ⇒ ADC 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
DNL shows 2^k periodic texture; anomalies near endpoints or mid-scale. Texture amplitude changes with temperature or sample rate.
Unit-cap mismatch; switch charge injection/kickback; comparator offset or hysteresis; insufficient driver GBW; reference-buffer transients coupling with switch timing.
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.
INL bends or segments, often near stage boundaries; DNL clusters locally. Bending worsens as input frequency increases.
MDAC capacitor mismatch; finite op-amp gain/bandwidth and incomplete settling; interstage gain error; reference transients.
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.
Large local DNL swings; occasional bubble/hot codes causing brief non-monotonic jumps; anomalies concentrated near code boundaries.
R-2R or resistor-ladder mismatch; comparator offset/noise; insufficient bubble suppression or encoder issues.
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.
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.
Modulator overload; unit-DAC mismatch; reference transients/noise coupling back through the loop, shifting static inl dnl.
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.
How to Test DNL/INL
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 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.
- 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.
- Run a slow ramp across full scale and scan for zero-count bins → missing codes.
- Compute DNL extremes to judge monotonicity (DNL ≥ −1 LSB) and “no missing codes” (DNL ≤ +1 LSB).
- If abnormal, switch to DC and mid-band sine to separate source/driver issues from internal causes.
Bring-Up Checklist
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.
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.
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.
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.
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
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.
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.
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.
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
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.
- 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.
- Reference / ground: clean ripple; Kelvin and short returns.
- Driver / source / S&H: meet Rsrc·Csh and GBW/phase margins; MUX-derate sample rate; reach 0.5 LSB by Ts/4.
- Layout returns: shorten reference/analog loops; avoid switching current paths.
- Sampling phase / clock: ensure coherence and low jitter to stabilize counts.
- 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
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.
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.
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.
- What is an ADC code? / What is LSB coding / LSB error? → Coding & errors
- What is LSB in a DAC? / INL and DNL in DAC? → DAC linearity
- “No ADC required” → Sensor interfaces
- Three main sources of error / four common methods of error detection → Coding & errors
Conversion
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.
Related Articles
- ·HBM3 vs. HBM3E: Complete Technical Comparison for AI, HPC, and Global Component Procurement
- ·How Large Language Models Work
- ·SK Hynix & Samsung: The Unprecedented HBM Expansion Race
- ·Micron 6600 ION 245TB Redefines Data Center
- ·Why Memory and Storage Define the Next Decade
- ·How Artificial Intelligence Acquires “Knowledge”
- ·How DRAM Will Change the World
- ·Why SSD Write Cache Is Crucial for AI Applications
- ·DRAM Product, Technology & Application Guide
- ·HBM4 compared to HBM4E






.png?x-oss-process=image/format,webp/resize,h_32)










