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.
A pipeline for a receiver: bandwidth is everything, and the clock is what stops it.
- 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