Model notes

Ported from ADCToolbox 0.9.1. fundamentals/units.py: db_to_mag, mag_to_db, db_to_power, power_to_db, lsb_to_volts, volts_to_lsb, bin_to_freq, freq_to_bin, snr_to_enob, enob_to_snr, dbm_to_vrms, vrms_to_dbm, sine_amplitude_to_power; fundamentals/snr_nsd.py: amplitudes_to_snr, snr_to_nsd, nsd_to_snr; fundamentals/metrics.py: calculate_walden_fom, calculate_schreier_fom, calculate_thermal_noise_limit, calculate_jitter_limit. This page is the interactive companion to its examples exp_c02–exp_c05; python/adc_conversions.py runs ADCToolbox and every number here matches it.

Nothing here is sampled. Every other lesson on this site measures a capture; this one is the arithmetic around it — the closed forms a part is specified in, and the two ratios the field compares parts by. The four buttons are working points, not real products.

Walden divides the power by the conversions and by the steps each one resolves: P / (2ENOB · fs), in joules per conversion step, and lower is better. It assumes a bit costs twice the last one, which is true while a converter is limited by its own comparators and switches. Schreier assumes the opposite — that noise sets the price, so a bit costs four times the last — and counts SNDR + 10 log (BW / P) in dB, where higher is better. A part usually looks good by one and ordinary by the other; which one flatters it tells you what limits it.

The left plot puts the converter on the map: each blue line is what a fixed Walden figure buys at the power you have set, so moving the power slider slides the whole family up and down. The dashed red line is the ENOB a clock of that jitter leaves at a Nyquist-rate input, which is why converters above a gigasample need femtoseconds, and the grey line is the ceiling kT/C puts on a sampling capacitor of that size over that range. All three walls are noise spread over fs/2, so oversampling takes 10 log OSR off every one of them — which is why the audio part, impossible at OSR 1, becomes nearly possible at 64, and why its slider is worth pushing.

The ladder on the right is the same converter written eight ways. Watch the round trips: dB to a ratio and back is exact, but SNDR through ENOB and back is not quite, because 6.02 and 1.76 are the shorthand for 6.0206 and 1.7609 — the bits a datasheet quotes carry that rounding with them. NSD is the one number that lets two converters of different bandwidths be compared at all.

500 MHz
65 dB
60.0 mW
× 1
100 fs
1.0 pF

A pipeline for a receiver: bandwidth is everything, and the clock is what stops it.

The landscapeENOB against sampling rate, at 60.0 mW Walden 82.6 fJ per conversion step
048121620241 M10 M100 M1 G10 G100 GENOB, bitskT/C10 fJ100 fJ1 pJ
The other figureSNDR against bandwidth, at 60.0 mW Schreier 161.2 dB
02040608010012014010 k100 k1 M10 M100 M1 G10 GSNDR, dB160170180190
The ladderthe same part, written every way on a 1.0 V range, sold as 14 bits
Bandwidth
250 MHz
fs / 2·OSR
ENOB
10.505 bits
snr_to_enob, back to 65.00 dB
Noise density
−148.98 dBFS/Hz
snr_to_nsd, back to 65.00 dB
Noise
198.818 µV rms
= 3.26 LSB, volts_to_lsb
One LSB
61.035 µV
lsb_to_volts, at 14 bits
Full-scale sine
3.98 dBm
= 2.500 mW into 50 Ω
Walden
82.58 fJ/step
calculate_walden_fom · lower is better
Schreier
161.20 dB
calculate_schreier_fom · higher is better
Nearest wall
kT/C, 74.8 dB
at 250 MHz in: clock 76.1 · kT/C 74.8 · codes 86.0
Room left
+9.8 dB
and 1.6 bits of it