SFDR & quantization

Drag the bit-depth slider down. Watch the noise floor lift and the spurs poke through. The reading underneath is your SFDR — the difference between the fundamental tone and the loudest spur, in dB. This is the single most useful number for "how clean does my fixed-point port sound?"

What is SFDR?

Spurious-Free Dynamic Range is the ratio of the RMS amplitude of the fundamental signal to the RMS amplitude of the largest spurious tone in the output spectrum. Quantization is what creates those spurs: rounding a continuous sine to a finite-bit integer is a deterministic, slightly non-linear operation, and any non-linearity creates harmonic and intermodulation spurs.

The "ideal" theoretical limit for an N-bit quantizer feeding a full-scale sine is well-known:

  SNRideal  ≈  6.02 · N + 1.76   (dB)
  ENOB        =  (SNDR − 1.76) ÷ 6.02     (effective number of bits)

SFDR isn't quite the same as SNR. SNR averages noise across the whole spectrum; SFDR cares only about the loudest single spike. For most quantizers SFDR is lower than SNR by a few dB when the signal frequency is rationally related to fs (the spurs pile up on a few bins) and higher when the ratio is irrational (the energy spreads as broadband noise).

Try it

12
0.071 · fs
−1.0 dBFS
SFDR— dB
Theoretical SNR— dB
Fundamental— dBFS
Loudest spur— dBFS
fs / 2 0 dB
Magnitude (dBFS) Fundamental bin Loudest spur

What just happened

Useful formulas

  Quantization step (LSB):    Δ  = 1 / 2^(N−1)        for full-scale ±1
  Quantization noise power:    σ² = Δ² / 12              (uniform over ±Δ/2)
  SNR (full-scale sine, dB):  6.02 · N + 1.76
  ENOB:                       (SNDR − 1.76) / 6.02
  SFDR (dB):                  20 · log10(A_fund / A_spur)
  Coherent-bin condition:     k_signal ÷ NFFT  must be irreducible
                                                         (lowest possible spur)

Tips that show up in this tool

Next steps in Mantissa

Step exam

Answer all 3 questions correctly to complete this step.

  1. SFDR stands for:

  2. Each bit you drop from the quantizer lifts the noise floor by about:

  3. Turning on dither does what to the quantization spurs?

← All tutorials