Thermometer-Coded DACs and Dynamic Element Matching: How Hardware Averages Away Mismatch by Rotating Which Unit Cells It Uses

2026-09-05

A binary-weighted DAC uses one unit for the LSB, two for bit-1, four for bit-2, and so on. It's compact, but it has a nasty problem at the mid-code transition: going from 0111...1 to 1000...0, every LSB unit turns off while the MSB unit turns on. If the MSB isn't exactly equal to the sum of all the LSBs (and after fab, it never is), the output jumps the wrong direction. That's a non-monotonic DAC — deadly for control loops that assume "code up ⇒ voltage up."

Thermometer coding fixes this. Instead of weighting units by powers of two, you use 2^N − 1 identical unit cells. Code 5 turns on 5 units; code 6 turns on those same 5 plus one more. Every code transition adds or removes exactly one unit — so monotonicity is guaranteed by construction, regardless of unit mismatch. You buy this with area: a 6-bit thermometer DAC needs 63 units instead of 6 weighted ones.

But thermometer coding alone doesn't help linearity — if unit #17 is 0.3% larger than average, then every code ≥ 17 inherits that error. Enter Dynamic Element Matching (DEM). Instead of always turning on units 1–5 for code 5, you rotate which units get used. A common scheme, data-weighted averaging (DWA), keeps a pointer: for code 5, use units 1–5; next sample, code 3, use units 6–8; next, code 4, use units 9–12; wrap around and continue. Over time, every unit is used equally often, so unit mismatch averages out and shows up as shaped noise at high frequencies instead of harmonic distortion in-band.

Concrete example: The ESS Sabre ES9038PRO audio DAC uses a 6-bit thermometer segment with DWA at the top of its architecture, driven by a delta-sigma modulator. Unit-current sources match to about 0.1% raw; DWA pushes the in-band mismatch noise down another 30–40 dB, letting the chip hit 132 dB SNR in the audio band without laser trimming.

Rule of thumb: Raw unit-cell mismatch improves as 1/√area. To halve mismatch, quadruple the unit-cell area. DEM turns that same mismatch into first-order noise-shaped error — every doubling of oversampling ratio gains ~9 dB in-band. So DEM is roughly worth 3–4 bits of effective resolution compared to a plain thermometer DAC at the same OSR, without growing a single transistor.

The tradeoff: DWA adds a rotating barrel shifter and pointer logic in front of the unit array, and the pointer's own switching activity can inject glitches. Higher-order DEM schemes (tree-structured, vector-feedback) shape noise more aggressively but cost more digital logic.

Key Takeaway: Thermometer coding guarantees monotonicity by construction, and Dynamic Element Matching turns fixed unit-cell mismatch into shaped high-frequency noise by rotating which units serve each code.

All newsletters