DDS / NCO Calculator

Tuning word, frequency resolution and phase-truncation SFDR for a direct digital synthesizer.

How a DDS sets its frequency

A direct digital synthesizer (DDS), or numerically controlled oscillator (NCO), is an N-bit phase accumulator that adds a constant tuning word every clock. The accumulator's top bits index a sine lookup table, which feeds a DAC. Because the phase wraps after 2N, the output frequency is simply:

The frequency resolution is one LSB of tuning word — fclk/2³² at 100 MHz is about 0.023 Hz, which is why DDS gives such fine, instantly-switchable steps. A target frequency rarely lands on an exact word, so the tool rounds and reports the residual error.

The catch is phase truncation: the accumulator is N bits but only the top P bits address the LUT, and dropping the rest injects spurs. The worst-case spurious-free dynamic range is approximately:

So more LUT phase bits buy a cleaner spectrum (the DAC's own quantization adds ~6.02·D + 1.76 dB on top). Keep fout below fclk/2 — and well below it in practice, to leave room for the reconstruction filter.