Weighted-resistor and R-2R ladder DACs — performance criteria (resolution, accuracy, monotonicity, settling time) — IC DAC0808 — Flash, Successive Approximation (SAR), Counter-ramp, Single-slope, and Dual-slope ADCs — IC ADC0801 — with VLSI mixed-signal design perspective.
The real world is analog — temperature, pressure, sound, light, and voltage are all continuous quantities. Digital processors work exclusively with binary numbers. DAC and ADC are the bridge between these two domains.
The simplest DAC uses a resistor network where each bit’s resistor is half the value of the next lower-significant bit’s resistor. Each bit drives VREF or 0V through its resistor. A summing op-amp adds the weighted currents.
For an n-bit weighted-resistor DAC with feedback resistor Rƒ:
V_out = −(V_REF / 2^(n−1) · R) · [2⁰·b₀ + 2¹·b₁ + 2²·b₂ + … + 2^(n−1)·b_(n−1)]
Each bit bᵢ = 0 or 1 (connects its resistor to GND or V_REF). The output is proportional to the binary code.
The R-2R ladder solves the precision problem by using only two resistor values — R and 2R — regardless of the number of bits. The ratio R:2R is all that matters, and this ratio can be maintained accurately in silicon (both resistors track each other with temperature).
General output formula for n-bit R-2R ladder DAC:
V_out = −(V_REF / 2ⁿ) × [2⁰·b₀ + 2¹·b₁ + 2²·b₂ + … + 2^(n−1)·b_(n−1)]
| Parameter | Definition | Formula / Example | VLSI significance |
|---|---|---|---|
| Resolution | Smallest change in output per 1 LSB change in input (step size) | Step = V_FS / (2ⁿ − 1) e.g. 10V/1023 ≈ 9.78 mV for 10-bit | Determines the granularity of D/A conversion — higher bits = finer steps |
| Accuracy | Maximum deviation of actual output from ideal straight line (% of full scale) | 8-bit: accuracy ≤ ±0.2% (±½ LSB) | Determines absolute correctness — affected by resistor mismatch, op-amp offset |
| Monotonicity | Analog output increases strictly when digital input increases (staircase has no downward steps) | If any step is negative, converter is non-monotonic → defective or poorly designed | Critical for control systems — non-monotonic DAC causes oscillation in feedback loops |
| Settling time | Time for output to settle within ±½ LSB of final value after input change | Typical: 100 ns to 10 μs depending on DAC architecture | Limits how fast the DAC can update — determines maximum output sample rate |
The DAC0808 (also DAC0800) is a popular 8-bit R-2R ladder DAC with internal transistor switches. It outputs a current proportional to the 8-bit input, which is converted to voltage by an external op-amp.
| Parameter | Value |
|---|---|
| Resolution | 8-bit (256 steps) |
| Output type | Current (I_out); external op-amp converts to voltage |
| Reference current | 2 mA (set by +5V → R_ref) |
| Output range | 0 to −2 mA (approx 0 to 2V with 1 kΩ feedback) |
| Supply | +5V (pin 13) and −15V (pin 3 = V_CC) |
| Input pins | Pins 5–12: digital inputs b₁ (MSB) to b₈ (LSB) |
| Settling time | ~150 ns |
| Package | DIP-16 |
The flash ADC is the fastest conversion method — all bits are resolved in a single clock cycle. For an n-bit output, it requires 2ⁿ − 1 comparators in parallel, each comparing the analog input against evenly spaced reference voltages. A priority encoder then converts the thermometer-code comparator outputs into binary.
The SAR ADC determines each bit sequentially from MSB to LSB — like a binary search. It requires exactly n clock cycles for n-bit conversion and needs only one comparator and one DAC.
A binary counter drives a DAC to generate a staircase ramp. The counter increments each clock until the DAC output equals or exceeds V_in. The counter value at that moment is the digital output. Simple but very slow — maximum conversion time is 2ⁿ clock cycles (for full-scale input). Only suitable for very slowly changing signals.
Modified version (tracking ADC): Use an up/down counter instead of resetting each cycle. The counter tracks V_in by incrementing when DAC < V_in and decrementing when DAC > V_in. Faster for slowly varying signals, oscillates by ±1 LSB around V_in in steady state.
The dual-slope ADC offers excellent noise rejection and accuracy but low speed. It integrates V_in for a fixed time t₁, then integrates −V_REF until the output returns to zero. The time t₂ for the second phase is proportional to V_in:
V_in = V_REF × (t₂ / t₁)
The key advantage: the conversion result depends only on the ratio of times t₂/t₁ and the ratio V_REF — not on the values of R and C. Component variations do not affect accuracy. Also, integrating over a full period of 50/60 Hz power line frequency cancels power-line noise — making dual-slope ideal for digital multimeters and precision instruments.
| Phase | Switch position | Duration | Integrator output |
|---|---|---|---|
| Phase 1 (charge) | V_in connected | Fixed t₁ (set by counter overflow) | Ramps down by V_in × t₁ / RC |
| Phase 2 (discharge) | −V_REF connected | Variable t₂ until output = 0 | Ramps back up to 0 |
| Result | — | Counter counts t₂ → digital output | Count ∝ V_in × (t₁/t₂) / V_REF |
The ADC0801 is a popular 8-bit successive approximation ADC in a 20-pin DIP. It contains an on-chip clock generator (external R and C set the frequency), SAR logic, R-2R DAC, and comparator.
| Pin | Name | Function |
|---|---|---|
| 1 | C̄S̄ | Chip select (active-low) |
| 2 | R̄D̄ | Output enable (active-low) — digital outputs float when high |
| 3 | W̄R̄ | Start conversion (active-low pulse) |
| 4 | CLK IN | External clock or RC oscillator node (connect C here) |
| 5 | INTR̄ | Interrupt — goes low when conversion complete |
| 6 | V_IN(+) | Non-inverting analog input |
| 7 | V_IN(−) | Inverting analog input (differential; tie to AGND for single-ended) |
| 9 | V_REF/2 | Half of reference voltage (leaves floating for 0–5V range) |
| 11–18 | D₇–D₀ | 8-bit digital output (tri-state — active only when C̄S̄ and R̄D̄ both low) |
| 19 | CLK R | Resistor connection for internal RC clock |
| 20 | V_CC | +5V supply |
Clock frequency: f = 1 / (1.1 × R × C) — should be in range 100 kHz to 800 kHz. Conversion time = 8/f_CLK ≈ 100 μs at 640 kHz clock. Tri-state outputs: C̄S̄=0 AND R̄D̄=0 to read output; otherwise pins float (bus-friendly).
| Architecture | Conversion time | Hardware | Accuracy | Best for |
|---|---|---|---|---|
| Flash | 1 clock cycle | 2ⁿ−1 comparators (exponential!) | 6–8 bit typical | Ultra-high speed: video, radar, oscilloscopes |
| SAR | n clock cycles | 1 comparator + 1 DAC + SAR register | 8–18 bit | General purpose: microcontrollers, sensors, audio |
| Counter-ramp | Up to 2ⁿ clock cycles | 1 comparator + 1 counter + 1 DAC | 8–12 bit | Slow/educational; rarely used in practice |
| Single-slope | Proportional to V_in | Integrator + 1 comparator + counter | Moderate (R,C dependent) | Simple, slow measurements |
| Dual-slope | ~2 × 2ⁿ clocks (ms range) | Integrator + 1 comparator + counter | High (R,C independent) | Precision: DMMs, scales, temperature |
| Sigma-Delta (ΔΣ)* | Many cycles (oversampled) | 1-bit modulator + digital filter | 16–24 bit | Audio, precision measurement, modern VLSI |
* Sigma-Delta is beyond this textbook’s scope but is the dominant architecture in modern VLSI mixed-signal design.
| DAC type | Resistors | Formula | Advantage |
|---|---|---|---|
| Weighted resistor | n different values: R, 2R, 4R… 2^(n-1)R | V_L = V_REF/(2ⁿ−1) × Σ(2ⁱ·bᵢ) | Simple; few components |
| R-2R ladder | Only R and 2R (2 values) | V_out = −V_REF/2ⁿ × Σ(2ⁱ·bᵢ) | Precision; VLSI-friendly; preferred |
| DAC parameter | Formula |
|---|---|
| Step size (resolution in V) | V_FS / (2ⁿ − 1) |
| % Resolution | 1/(2ⁿ − 1) × 100 |
| Bits for given step size | 2ⁿ − 1 = V_FS / step; solve for n |
| ADC | Speed | Comparators | IC example |
|---|---|---|---|
| Flash | 1 cycle | 2ⁿ−1 | — |
| SAR | n cycles | 1 | ADC0801 (8-bit) |
| Counter-ramp | ≤2ⁿ cycles | 1 | — |
| Dual-slope | ~2×2ⁿ cycles | 1 | ICL7107 (DMM IC) |