Direct Digital Synthesis


Like probably most other web pages, this one is also continuously under construction. This is primarily due to the fact, that the DDS project is itself ongoing and will probably be for a few years to come. It is not less related to the fact, that my main hobby is electronics and not the design of web pages. If you plan to start your own DDS project and you think that I might have more than what is apparent on this web site, then please feel free to send me an email.


What is DDS?

DDS stands for Direct Digital Synthesis and in this context it refers to the generation of an analogue signal by some digital circuit and an attached digital to analogue converter (DAC). The picture below shows the signal path of a typical DDS system. Click any of the boxes for more information on the respective function block.

Anti Aliasing Filter Digital-to-Analogue Converter Phase to Amplitude Accumulator Oscillator


The key element of a DDS system is the phase accumulator, clocked by a fixed frequency master clock, that is at least twice as high as the maximum usable signal bandwidth (Nyquist theorem). The output value of this accumulator is the current phase angle of the generated frequency. Overflows of the accumulator are ignored and therefore its output range is constrained to values between 0 and 2n-1, with n being the width of the accumulator. The range is scaled to 0 ~ 2π, so that each output value can be mapped to a phase angle by a suitable phase-to-amplitude converter. A fast digital to analogue converter generates a time discrete analogue signal, which becomes time continuous by filtering it with an anti aliasing filter.


Practical example of a DDS system

I did not employ any of the commercially available integrated circuits. Firstly, that would not really be a challenge and to a certain degree it would be boring. Many others have already used these chips very successfully. Also I've not seen a commercial device, which supports AM and SSB modulation. And last but not least, I wanted to learn more about the principles of digital signal processing.

Therefore I decided to use a Field Programmable Gate Array (FPGA) and design the DDS from scratch. My plan was always not just to generate a pure sine signal, but I've built the system with modulation in mind. My ultimate goal is a fully digital FM/AM/SSB transmitter in a single FPGA. That explains why the project will probably be ongoing for a few years. Current FPGAs do not yet have the price and performance range that I have in mind. I can currently (2003) implement an AM transmitter in an FPGA that costs about 100€ in single unit quantities. With the fast DAC and some other components that sums up to perhaps 200€. That's really a bit expensive for a mere AM transmitter. Still I'm working on an SSB version, which requires about a fourfold chip size. I would expect to get an FPGA with a suitable performance in about 2005 for perhaps 100€.


What is the status of my DDS project?

I've build a board with a 10K100 Altera FPGA and a fast 14-bit DAC from Analog Devices. This board serves as the key component of a fully digital sweep generator with an output frequency between about 50 kHz (limited due to a transformer after the DAC) and 30 MHz. Its clock speed is 80 MHz. That sweep generator is already working nicely since 2000. With an identical board I'm trying to build a fully digital transmitter for about the same frequency range. It is rather simple to produce an AM signal (not straightforward though as one might think), but the ultimate goal is an USB or LSB signal. It is already clear that it will not fit completely into the above mentioned 10K100, so I have to select a larger FPGA or add some CPU support.

I started to make a presentation about NCOs. It is really far from finished, but it may still be useful as a basic introduction.

Here is the documentation of the sweep generator including the schematics of the board and the FPGA.