ADC Quantization & Dynamic Range
Digitization trades continuous voltage for discrete counts; the fabric sizes bit depth and range so quantization noise never limits a physics inference.
Quantization as noise
An N-bit converter over a full-scale range V_fs has a least-significant step q = V_fs / 2^N. Ideal quantization adds noise of standard deviation q/sqrt(12), giving a ceiling on signal-to-noise. The fabric chooses N and V_fs per channel so this ceiling sits well above the sensor's own noise, ensuring the ADC is never the limiting element in a diagnostic.
import math
def quant_snr_db(N):
# ideal SNR of an N-bit converter, full-scale sine
return 6.02*N + 1.76
def lsb(v_fs, N):
return v_fs / (2**N)
print(round(quant_snr_db(16),1), 'dB') # 98.1 dB
print(lsb(10.0, 16)) # ~153 uV per count
Dynamic range budget
Dynamic range is the span between the smallest resolvable change and the largest un-clipped excursion. A Mirnov channel must resolve a small precursor oscillation yet survive a large disruption transient without saturating. The front end sets gain so both live inside the converter's range; the calibration record ties counts back to physical units.
Effective bits, not nameplate bits
- The usable resolution (ENOB) is lower than nameplate bits once front-end and clock jitter are included.
- Sub-microsecond sampling makes clock jitter a real term in the noise budget, linking timing quality to amplitude resolution.
- The fabric tracks per-channel effective resolution as a data-quality attribute (see data-quality scoring).
Why it matters for the twin
Equilibrium and pressure-map inversions amplify input noise. If quantization noise entered at the ADC, it would propagate into the core pressure map and the instantaneous Q estimate. Sizing the converter correctly keeps the twin's inputs honest for both the breeder's magnetics and the burner's potential and density diagnostics.