Direct Digital Synthesis
Direct digital synthesis — DDS — is one of the most elegant ideas in modern radio electronics. Instead of building an analog oscillator and fighting its tendency to drift, or building a PLL and wrestling with loop dynamics, DDS generates a waveform entirely in the digital domain and then converts it to an analog signal. The result is a signal source with sub-hertz frequency resolution, instantaneous frequency switching, programmable phase, excellent stability derived from a crystal clock, and remarkable flexibility — all from a single compact IC.
DDS appears in equipment ranging from homebrewer kits costing $30 to military frequency-hopping radios costing millions of dollars. The AD9850 and AD9951 chips from Analog Devices have powered thousands of homebrew HF rigs, signal generators, and beacon transmitters. Understanding DDS at the circuit and mathematical level will let you design, troubleshoot, and evaluate any equipment that uses it.
- The Core Concept: Counting Through a Circle
- DDS Architecture: Three Essential Blocks
- The Phase Accumulator in Detail
- The DDS Frequency Formula
- DDS Output Frequency Calculator
- Worked Examples
- Frequency Resolution
- The Nyquist Limit and Why Output Must Be Below Half Clock
- Spurious Outputs and SFDR
- The DAC and Reconstruction Filter
- Phase and Frequency Modulation with DDS
- DDS in Ham Radio Applications
- DDS vs PLL Synthesizer: When to Use Which
The Core Concept: Counting Through a Circle
Imagine a circle representing one complete cycle of a sine wave — 360 degrees of phase, from 0° to 360°. A pointer rotates around this circle at a constant angular velocity. Every time the pointer completes a full revolution, one cycle of the sine wave is generated. The sine wave amplitude at any moment is the sine of the current pointer angle. If the pointer spins once per second, the output frequency is 1 Hz. If it spins 14 million times per second, the output is 14 MHz.
Now replace the continuously rotating pointer with a digital counter. At every clock tick, the counter advances by a fixed step size called the phase increment (also called the frequency tuning word). When the counter overflows — counting past its maximum value and wrapping back to zero — that represents one complete revolution of the circle, one complete cycle of the output sine wave.
The output frequency depends on two things: how fast the counter ticks (the clock frequency) and how far it advances with each tick (the phase increment). A large phase increment means the counter wraps around quickly — high output frequency. A small phase increment means it wraps slowly — low output frequency. This is the entire conceptual basis of DDS.
DDS Architecture: Three Essential Blocks
DDS architecture: the frequency tuning word programs the phase increment added to the phase accumulator on each clock cycle. The accumulator output addresses a sine lookup table (ROM), whose output drives a DAC. The analog DAC output passes through a low-pass reconstruction filter to remove clock artifacts and produce a clean sine wave.
View LargerEvery DDS system has three essential blocks between the crystal clock input and the analog output.
1. Phase Accumulator
The phase accumulator is an N-bit binary counter. At every rising edge of the clock, it adds the frequency tuning word (FTW) to its current value. When the accumulated value exceeds 2N, the counter overflows and wraps back to zero. This overflow represents one complete cycle of the output waveform.
The most significant bits of the accumulator output are used to address the lookup table. If the accumulator is 32 bits wide but the lookup table has only 12-bit addressing, the top 12 bits of the accumulator select the table entry. The bottom 20 bits are simply discarded — they provide sub-cycle frequency resolution below the lookup table granularity.
2. Sine Lookup Table (Phase-to-Amplitude Converter)
The lookup table (implemented as ROM inside the DDS IC) maps each phase value to the corresponding sine wave amplitude. For a 12-bit addressed table with 4,096 entries, each entry stores the 14-bit or 16-bit digital value representing sin(2π × address / 4096). When the accumulator outputs address 0, the table outputs 0 (sin 0° = 0). At address 1024, the table outputs its maximum positive value (sin 90° = 1). At 2048, it outputs 0 again (sin 180°). At 3072, it outputs its maximum negative value (sin 270° = −1).
The table is typically stored in ROM and is implemented very efficiently in silicon. It only needs to store one quadrant (0° to 90°) using symmetry — the other three quadrants are generated by sign inversions.
3. Digital-to-Analog Converter (DAC)
The DAC converts the digital amplitude values from the lookup table to an analog voltage or current. Its output is a staircase waveform — the sine wave sampled at the clock rate, with sharp transitions between each sample. After the DAC comes the reconstruction filter (a low-pass filter) that smooths these staircase steps into a continuous sine wave.
The Phase Accumulator in Detail
Consider a 32-bit phase accumulator with clock frequency Fclk. The accumulator counts from 0 to 232 − 1 = 4,294,967,295. If the frequency tuning word (FTW) is 1, the accumulator advances by 1 per clock cycle. It takes 4,294,967,296 clock cycles to overflow and complete one output cycle. With a 1 GHz clock, the output frequency would be 1,000,000,000 / 4,294,967,296 ≈ 0.233 Hz. That is the minimum frequency step (frequency resolution) for this system.
If the FTW is set to 429,497 (approximately 232 / 10,000), the accumulator overflows approximately 10,000 times per second for every gigahertz of clock frequency — actually, it overflows at exactly 429,497 / 4,294,967,296 × Fclk Hz, which is about 0.0001 × Fclk.
The general formula for the output frequency is derived directly from this counting process:
Fout = FTW × Fclk / 2N
Where:
Fout = output frequency (Hz)
FTW = frequency tuning word (integer, 0 to 2N−1)
Fclk = clock frequency (Hz)
N = accumulator bit width (typically 24 to 48 bits)
Solving for FTW:
FTW = Fout × 2N / Fclk
The DDS Frequency Formula
Let us examine this formula carefully because it reveals everything important about DDS behavior.
Fout ∝ FTW: Output frequency is directly proportional to the tuning word. Double the FTW, double the frequency. This makes DDS extremely easy to program — no loop dynamics, no lock time, no analog tuning voltage. Just write a number and the frequency changes instantly.
Fout ∝ Fclk: If the clock changes, all output frequencies change by the same ratio. If the clock drifts by 1 ppm, the output drifts by 1 ppm at all frequencies. The DDS output is exactly as stable as its clock — no more, no less.
Fout ∝ 1/2N: A wider accumulator gives finer frequency steps. Doubling N (adding one bit) halves the minimum frequency step without changing the clock or tuning word.
Maximum output frequency: Limited by the Nyquist theorem to Fclk/2. In practice, the reconstruction filter rolls off before Nyquist, so the usable output range is typically below 40% of Fclk to maintain good spurious-free performance.
DDS Output Frequency Calculator
DDS Output Frequency Calculator
Calculate the DDS output frequency from the frequency tuning word, clock frequency, and accumulator bit width. Also calculates frequency resolution and maximum usable frequency. Use this to set up AD9850, AD9851, AD9951 or any DDS IC.
Worked Examples
The AD9850 has a 32-bit phase accumulator (N = 32) and is commonly clocked at 125 MHz (Fclk = 125,000,000 Hz).
232 = 4,294,967,296
FTW = Fout × 2N / Fclk
FTW = 7,074,000 × 4,294,967,296 / 125,000,000
FTW = 7,074,000 × 34.3597 = 242,978,893 (rounded to nearest integer)
Verification: Fout = 242,978,893 × 125,000,000 / 4,294,967,296
= 242,978,893 × 0.02910383... = 7,073,999.97 Hz ≈ 7.074000 MHz ✓
The small error (0.03 Hz) is due to rounding FTW to an integer. With a 32-bit accumulator and 125 MHz clock, the frequency resolution is:
Fres = 125,000,000 / 4,294,967,296 = 0.02910 Hz per LSB
This means you can tune in steps finer than 0.03 Hz — dramatically better than any analog VFO or integer-N PLL synthesizer.
232 = 4,294,967,296
FTW = 14,225,000 × 4,294,967,296 / 100,000,000
= 14,225,000 × 42.94967296
= 611,042,547 (rounded)
Verification: 611,042,547 × 100,000,000 / 4,294,967,296 = 14,225,000.0 Hz ✓ (coincidentally exact)
Maximum usable output: 40% × 100 MHz = 40 MHz — 14.225 MHz is well within range. ✓
Frequency resolution: 100,000,000 / 4,294,967,296 = 0.02328 Hz per LSB — again, sub-0.03 Hz resolution.
Fres = Fclk / 2N = 400,000,000 / 4,294,967,296 = 0.0931 Hz per LSB (≈ 93 mHz resolution)
Nyquist limit = 400 MHz / 2 = 200 MHz
Recommended max (40% of Fclk) = 0.4 × 400 MHz = 160 MHz
This DDS can cover HF (1.8 to 30 MHz), all VHF bands (50, 144 MHz), and parts of UHF — all with 93 mHz frequency resolution. Multiply by 2× in a doubler stage to reach 222 MHz or 432 MHz bands. The AD9951 is a capable single-chip frequency source for a multi-band transceiver.
Frequency Resolution
The frequency resolution of a DDS system — the smallest frequency step it can make — is determined entirely by the accumulator bit width and the clock frequency:
Fresolution = Fclk / 2N
For a 32-bit accumulator at 125 MHz: Fres = 125×106 / 4.295×109 = 0.029 Hz
For a 48-bit accumulator at 1 GHz: Fres = 109 / 2.81×1014 = 3.6 µHz
This extraordinary frequency resolution is DDS's greatest advantage over PLL synthesizers. An integer-N PLL with 10 kHz comparison frequency can only tune in 10 kHz steps. A DDS system with a 32-bit accumulator can tune in steps of 0.03 Hz — 300,000 times finer — while maintaining the same clock stability. This is why DDS is used for the fine-tuning VFO in many transceivers, providing continuous smooth tuning while a PLL handles coarse band selection.
Adding more bits to the accumulator increases resolution at no cost to the maximum output frequency or the noise floor. This is why modern DDS ICs use 24-, 32-, 40-, or even 48-bit accumulators. The silicon cost of extra flip-flops is minimal.
The Nyquist Limit and Why Output Must Be Below Half Clock
The Nyquist-Shannon sampling theorem states that a sampled system cannot accurately represent frequencies above half the sampling rate. In DDS, the clock is the sampling rate and the output is the sampled signal. If you try to set the output frequency above Fclk/2 (the Nyquist frequency), the output aliases — it folds back to a different, incorrect frequency.
Aliasing example: with a 100 MHz clock and output set to 60 MHz, the DDS actually produces a signal at 100 − 60 = 40 MHz (its alias). The Nyquist limit is absolute: there is no way to produce a clean output above Fclk/2 with a standard DDS architecture. This is why DDS ICs always specify the clock frequency separately from the maximum output frequency — the maximum output is always less than Fclk/2.
In practice, the reconstruction filter limits the usable output to about 40% of Fclk because the filter cannot achieve a perfectly sharp cutoff right at Nyquist. A 100 MHz clock gives reliable, clean outputs up to about 40 MHz. For higher frequencies, you either use a faster clock or follow the DDS with a multiplier stage.
Spurious Outputs and SFDR
DDS output spectrum showing the desired output carrier and the spurious signals that determine SFDR. Phase truncation spurs appear at predictable offsets from the carrier. Harmonic spurs appear at multiples of the output frequency. The reconstruction filter suppresses clock-rate images but not close-in phase truncation spurs.
View LargerUnlike a sine wave generator, a DDS does not produce a perfectly pure output. Several mechanisms create unwanted spurious signals:
Phase Truncation Spurs
The phase accumulator may be 32 bits wide, but the sine lookup table may only use the top 12 bits for addressing. The lower 20 bits are discarded — this is called phase truncation. The phase error introduced by truncation is periodic and creates spurs at predictable frequencies relative to the output carrier. Phase truncation is the dominant source of close-in spurious signals in DDS.
The worst-case spur from phase truncation is approximately −6 dBc × (N − B), where N is the accumulator width and B is the address bits used for the lookup table. For N = 32 and B = 12, worst-case spur ≈ −6 × (32−12) = −120 dBc — excellent. In practice, the actual worst-case SFDR (spurious-free dynamic range) is around −80 to −100 dBc due to DAC and circuit non-idealities.
DAC Non-Linearity Spurs
A real DAC is not perfectly linear. Minor errors in each bit weight create harmonic distortion that appears as spurious signals at multiples of the output frequency. These decrease in level with more bits and better DAC architecture. The AD9850's 10-bit DAC gives SFDR of about −50 dBc under typical conditions. High-end DDS ICs with 14- or 16-bit DACs achieve SFDR of −80 to −100 dBc.
Clock Feedthrough
Some of the clock signal couples to the DDS output through capacitive and substrate paths inside the IC. This appears as a spur at exactly the clock frequency and its harmonics. Good PCB shielding and decoupling reduce but cannot eliminate this. The reconstruction filter attenuates clock-rate spurs significantly since they are near or above Fclk.
Spurious-Free Dynamic Range (SFDR)
SFDR is the ratio of the output carrier level to the strongest spurious signal, expressed in dBc (decibels below carrier). It is the key specification for DDS cleanliness. A DDS with SFDR of −70 dBc has its worst spur 70 dB below the carrier. For amateur transmitters, FCC Part 97 requires harmonics and spurious emissions to be at least 43 dB below the carrier (for stations under 5 W PEP) or 60 dB below (for stations 5 W and above). A DDS with −70 dBc SFDR before the bandpass filter meets this requirement, and the filter provides additional suppression.
The DAC and Reconstruction Filter
The DAC output is a staircase waveform — the sine values sampled at Fclk. This staircase contains the desired output frequency plus images of it centered around the clock frequency (at Fclk ± Fout) and at all higher multiples. A reconstruction low-pass filter removes these images and the clock frequency, leaving only the desired sine wave.
The filter cutoff must be placed above the maximum desired output frequency (to pass the signal) but well below the clock frequency (to reject the first image at Fclk − Fout). For a 125 MHz clock with maximum output of 50 MHz, a cutoff around 60–70 MHz works well. Fifth- or seventh-order elliptic or Chebyshev filters are commonly used because they provide steep attenuation above the cutoff.
In a fixed-frequency application (such as a 7 MHz beacon), the reconstruction filter can be a narrow bandpass filter centered on the output frequency, providing excellent harmonic suppression. In a wide-tuning transceiver VFO, a switched-filter bank (separate filters for each amateur band) provides the necessary coverage.
Phase and Frequency Modulation with DDS
DDS has a unique capability that analog oscillators and PLLs lack: the ability to change not just frequency but also the phase of the output signal, instantly and by a precisely controlled amount. This is because the phase accumulator value at any moment completely defines the output phase. Changing the accumulator by a fixed offset immediately shifts the output phase by that fraction of a full cycle.
This makes DDS ideal for phase-shift keying (PSK) digital modes. PSK31, the most popular keyboard-to-keyboard digital mode in amateur radio, uses 180° (binary PSK) and 45° (differential PSK) phase shifts. A microcontroller can command the DDS phase register directly, producing instantaneous, clean phase transitions without the amplitude glitches that can occur with analog switching methods.
For continuous phase frequency shift keying (CPFSK) — used in RTTY and many other modes — the DDS simply changes the FTW from one value to another. Because the accumulator state is preserved through the FTW change, the output phase is continuous through the frequency transition. No phase discontinuities, no transients, no switching glitches. This is called continuous-phase FSK and is important for minimizing spectral splatter from digital transmissions.
DDS in Ham Radio Applications
VFO for HF Transceivers
DDS is nearly ideal as the VFO for an HF transceiver. A 32-bit DDS with a 125 MHz clock provides 0.029 Hz resolution across the entire HF range (1.8 to 30 MHz) with the stability of the clock oscillator. There is no warm-up drift, no microphonics, no LC tank to adjust. The microcontroller simply writes a new FTW to the DDS IC over SPI, and the frequency changes in nanoseconds. The QRP Labs QCX series, the Elecraft KX2, and many other modern rigs use DDS or DDS-like (Si5351 fractional-N) frequency generation for exactly these reasons.
Signal Generators and Frequency Standards
Laboratory-quality signal generators from Rigol, Siglent, and BK Precision use DDS as their core frequency generation engine. A 200 MHz clock with a 32-bit or 48-bit accumulator provides coverage from DC to 80+ MHz with millihertz resolution and excellent frequency accuracy — directly tied to the internal 10 MHz TCXO or an external reference. For amateur use, DDS-based homebrewed signal generators provide a cost-effective tool for alignment and testing.
Beacons and WSPR Transmitters
WSPR (Weak Signal Propagation Reporter) transmissions use 4-FSK modulation with 1.46 Hz channel spacing — an absurdly fine resolution requirement that rules out PLL synthesizers with multi-kHz comparison frequencies. DDS handles this trivially: a 32-bit accumulator at 100 MHz provides 0.023 Hz resolution, making the 1.46 Hz step achievable with a single FTW increment of about 63 counts. The QRP Labs U3S WSPR transmitter, which has logged contacts on all continents with just a few milliwatts, uses an Si5351 DDS-like synthesizer for this reason.
SDR Local Oscillators
Software-defined radios (RTL-SDR, HackRF, ADALM-PLUTO) use DDS techniques internally for quadrature mixing and frequency generation. The "digital down-conversion" inside an SDR involves multiplying the incoming samples by a numerically controlled oscillator (NCO) — which is essentially the accumulator and sine table part of DDS without the DAC step. This allows the SDR to tune to any frequency within its bandwidth with sub-hertz precision by simply changing the NCO FTW.
DDS vs PLL Synthesizer: When to Use Which
| Parameter | DDS | PLL Synthesizer |
|---|---|---|
| Frequency resolution | Extremely fine (sub-Hz with 32-bit accumulator) | Limited by comparison frequency (typically 1 kHz–100 kHz for integer-N; sub-Hz for fractional-N) |
| Frequency switching speed | Instantaneous (nanoseconds) | Milliseconds (limited by loop lock time) |
| Phase noise | Moderate — dominated by phase truncation spurs at small offsets; often worse than a good PLL | Excellent close-in phase noise possible with low-noise reference and wide loop bandwidth |
| Maximum frequency | Below Fclk/2; practical maximum 30–40% of Fclk | Very high — PLLs routinely synthesize 10 GHz and above |
| Spurious outputs | Phase truncation spurs inherent; SFDR typically −60 to −100 dBc | Reference spurs and fractional spurs; typically −80 to −100 dBc in good designs |
| Phase control | Excellent — phase register allows instant, precise phase shifts | No direct phase control; phase jumps cause transients |
| Frequency modulation | Excellent FM and FSK — continuous phase guaranteed | FM possible via VCO modulation but may cause spur issues |
| Complexity | Low — single IC, no feedback loop, no lock time issue | Moderate — loop filter design needed, lock time management |
| Typical cost | $3–$30 for DDS IC (AD9850, AD9951) | $2–$50 depending on frequency range and phase noise spec |
| Best application | HF VFO, fine-tuning, digital modulation, signal generators | VHF/UHF/microwave LO, low phase noise requirements, frequency multiplication |
Many modern transceivers combine both: a DDS for fine HF tuning (where its sub-Hz resolution shines) and a PLL for VHF/UHF local oscillators (where its superior phase noise and high-frequency capability matter). The combination exploits the strengths of each technology while avoiding their weaknesses.
Frequently Asked Questions
Why does DDS have a Nyquist limit — why can't it generate frequencies above half the clock rate?
The Nyquist-Shannon sampling theorem is fundamental to all sampled data systems. To represent a signal accurately in digital form, you must sample it at least twice per cycle. Equivalently, a digital system clocked at Fclk can only produce output frequencies up to Fclk/2 without aliasing. Above Nyquist, the output folds back to a mirror image frequency — the same mathematical reason that a car wheel can appear to spin backward on video. There is no way around this with standard DDS architecture; it is a mathematical constraint, not a circuit limitation.
Why is DDS phase noise often worse than a PLL at the same frequency?
DDS phase noise is dominated by phase truncation spurs and DAC quantization noise at close-in offsets. The PLL, by contrast, suppresses VCO noise inside the loop bandwidth and inherits the crystal reference's excellent close-in phase noise. A good PLL synthesizer can achieve −110 dBc/Hz at 1 kHz offset, while a typical DDS might give −90 dBc/Hz at 1 kHz offset. For applications where close-in phase noise matters — such as a receive LO in a crowded amateur band where reciprocal mixing is a concern — a PLL has the advantage. For applications where fine frequency resolution and fast switching matter more, DDS wins. The best designs combine both.
What is the AD9850 and why do homebrewers use it?
The AD9850 from Analog Devices is a 32-bit DDS IC with an integrated 10-bit DAC and a programmable clock multiplier, covering output frequencies up to 62.5 MHz with a 125 MHz reference clock. It has a simple parallel or serial programming interface and costs around $5–$15. Homebrewers use it because it is inexpensive, well-documented, drives directly from 5 V logic, and provides excellent frequency resolution for HF operation. The AD9851 adds a ×6 clock multiplier internally, simplifying the reference oscillator design. Many kits from Elecraft, QRP Labs, and hobbyist suppliers include one or both of these chips as the VFO.
If DDS is so good, why use a PLL at all?
DDS has three significant limitations. First, maximum output frequency is hard-bounded to less than half the clock rate — you cannot easily generate 144 MHz or 432 MHz signals from a 125 MHz DDS without frequency multiplication, which adds complexity. Second, phase noise at close-in offsets is typically worse than a good PLL. Third, SFDR is limited by DAC bits and phase truncation — high-SFDR DDS ICs exist but cost more. PLL synthesizers routinely generate frequencies in the GHz range, can achieve excellent close-in phase noise, and have been refined over 50 years into very clean, well-understood architectures. DDS wins at HF with sub-Hz resolution; PLL wins at VHF/UHF with low phase noise.
Can I use a DDS to generate SSB signals directly?
Yes, using a quadrature DDS (two accumulators with 90° phase offset) or an I/Q modulator. The DDS generates two outputs in quadrature (sine and cosine), which are then amplitude-modulated by the baseband I and Q audio components of the SSB signal. The two products are summed to produce a single-sideband output. This approach — used in software-defined radios and some modern homebrew designs — eliminates the need for a physical SSB filter. The phasing method of SSB generation relies on the precise 90° phase relationship that DDS can maintain exactly, unlike analog phase-shift networks that require trimming.
Test Your Knowledge
Answer the questions below to check your understanding. Every answer can be found in the lesson above.