Voltage References & Bandgap Circuits

The yardstick of every precise measurement. Learn why ADCs and DACs are only as good as their reference, zener, buried-zener, bandgap and XFET references, series vs shunt references (TL431), the bandgap principle (CTAT V_BE plus PTAT ΔV_BE), key specs (initial accuracy, temperature coefficient and box method, long-term drift, thermal hysteresis, noise, line/load regulation, output drive), buffering and filtering, and building a reference error budget for an ADC — with Python computing ΔV_BE, the bandgap voltage and a 12-bit reference error budget.

An ADC converts voltage to a number relative to its reference: a 0.1% reference error is a 0.1% gain error in every reading. References must be accurate, stable over temperature and time, and quiet.

The bandgap circuit — adding a voltage that falls with temperature to one that rises — is one of the most elegant ideas in analog design and sits inside nearly every IC.

An analogy

A voltage reference is like the official metre bar in a measurement lab: every ruler (ADC reading) is only as good as the bar it was compared with, so the bar must not grow, shrink or wobble with temperature or age.

Reference types

Main technologies:

Specifications

Initial accuracy (0.02–1%), temperature coefficient (1–100 ppm/°C, box method), long-term drift (ppm/√kh), thermal hysteresis after temperature cycling, 0.1–10 Hz noise (µV pp) and wideband noise, line and load regulation, output current, and turn-on settling. Solder-reflow shift and board stress can move a reference by tens of ppm — package choice (ceramic, LCC) and layout (slots to relieve stress) matter for the best parts.

Using references with ADCs

SAR ADC reference inputs draw charge in pulses at each bit decision; the reference needs a large low-ESR capacitor (e.g. 10–47 µF) at the pin and often a buffer amplifier. Noise can be filtered with an RC (then buffered). Ratiometric measurement — powering a bridge or RTD from the same reference — cancels reference error altogether.

Inside the bandgap

Brokaw and Widlar cells use two transistors with emitter-area ratio N and an op-amp or feedback to force equal currents; the resistor ratio sets K. Second-order curvature (V_BE is not perfectly linear in T) leaves a parabolic TC of a few ppm/°C, corrected by curvature-compensation techniques. Trimming at wafer test sets initial accuracy. Sub-1 V bandgaps sum currents instead of voltages.

Formulas

Worked example: PTAT voltage

Given: Current-density ratio 24 at 300 K

Find: ΔV_BE.

Answer: ≈ 82.2 mV

Worked example: Box-method TC

Given: 2.5 V ref varies 2.4990–2.5015 V over −40…85 °C

Find: TC.

Answer: 8 ppm/°C

Worked example: 16-bit LSB

Given: V_REF 4.096 V

Find: LSB.

Answer: 62.5 µV

Bandgap principle

  V_BE:     0.65 V at 27 °C, −2 mV/°C  (CTAT: falls with T)
  ΔV_BE:    V_T·ln N,  +0.18 mV/°C for N = 8  (PTAT: rises with T)
  V_REF = V_BE + K·ΔV_BE with K ≈ 11 → slopes cancel → ≈ 1.25 V, flat vs temperature
  (1.25 V ≈ silicon band gap extrapolated to 0 K — hence 'bandgap')

Two transistors at different current densities produce a ΔV_BE proportional to absolute temperature. Scaling it by K (a resistor ratio) and adding a V_BE cancels the first-order temperature coefficient. Curvature correction handles the remaining second-order bow.

Bandgap numbers and a reference error budget

import math
# Bandgap reference principle and reference error budget
VT, n_ratio = 0.02585, 8
dVbe = VT * math.log(n_ratio)
print(f"delta VBE for 8:1 area ratio = {dVbe*1e3:.2f} mV (PTAT, +{dVbe/300*1e6:.0f} uV/K)")
VBE, tc_vbe = 0.65, -2.0e-3
K = -tc_vbe / (dVbe / 300)
print(f"PTAT gain for zero TC: K = {K:.1f} -> Vref = VBE + K*dVBE = {VBE + K*dVbe:.3f} V (near silicon bandgap 1.2 V)")
# Reference error budget for a 12-bit ADC (2.5 V): initial accuracy and drift
Vref, acc, tc, dT = 2.5, 0.001, 10e-6, 40
lsb = Vref / 4096
err = Vref * acc + Vref * tc * dT
print(f"initial 0.1% = {Vref*acc*1e3:.2f} mV, drift 10 ppm/C over 40 C = {Vref*tc*dT*1e3:.2f} mV -> total {err*1e3:.2f} mV = {err/lsb:.1f} LSB (12-bit)")
# Noise: 10 uVpp (0.1-10 Hz) vs LSB of a 16-bit ADC at 2.5 V
print(f"16-bit LSB at 2.5 V = {2.5/65536*1e6:.1f} uV")
# delta VBE for 8:1 area ratio = 53.75 mV (PTAT, +179 uV/K)
# PTAT gain for zero TC: K = 11.2 -> Vref = VBE + K*dVBE = 1.250 V (near silicon bandgap 1.2 V)
# initial 0.1% = 2.50 mV, drift 10 ppm/C over 40 C = 1.00 mV -> total 3.50 mV = 5.7 LSB (12-bit)
# 16-bit LSB at 2.5 V = 38.1 uV

An 8:1 ratio gives 53.8 mV of PTAT voltage; multiplying by 11.2 and adding V_BE yields a 1.25 V reference with zero first-order drift. For a 12-bit, 2.5 V system, a 0.1% reference with 10 ppm/°C over 40 °C already costs 5.7 LSB — calibration or a better reference is needed if absolute accuracy matters.

Common mistakes

Applications

Key takeaways

Going further