Direct digital synthesis
From Wikipedia, the free encyclopedia
Direct Digital Synthesis (DDS) is an electronic method for digitally creating arbitrary waveforms and frequencies from a single, fixed source frequency.
Contents |
[edit] Overview
A basic DDS circuit consists of an electronic controller, a random-access memory, a frequency reference (usually a crystal oscillator), a counter and a digital-to-analogue converter (DAC). Two operating steps are required to make the device work: we shall call these programming and running.
[edit] Programming
In the programming step, the electronic controller fills the memory with data. Each item of data is a binary word representing the amplitude of the signal at an instant of time. The array of data in the memory then forms a table of amplitudes, with time implied by the position in the table. If, for example, the first half of the table were filled with zeroes and the second half with values of 100%, then the data would represent a square wave. Any other wave shape can be created simply by altering the data.
[edit] Running
In the running step, the counter (properly called the phase accumulator) is instructed to advance by a certain increment on each pulse from the frequency reference. The output of the phase accumulator (the phase) is used to select each item in the data table in turn. Finally, the DAC converts this sequence of data to an analogue waveform.
To generate a periodic waveform, the circuit is set up so that one pass through the table takes a time equal to the period of the waveform. For example, if the reference frequency is 1 MHz, and the table contains 1000 entries, then a complete pass through the table with a phase increment of 1 will take 1000 / 1 MHz = 1 ms, so the frequency of the output waveform will be 1/(1 ms) = 1 kHz.
This system can generate a higher output frequency simply by increasing the phase increment so that the counter runs through the table more quickly. In the example above, the phase increment is equal to 1, so the next possible frequency is obtained by setting the increment to 2, resulting in a doubling of output frequency. To obtain a finer control of frequency than this, the standard phase increment can be set to, say, 10. This then allows slightly higher or lower output frequencies. For example, increasing the increment to 11 would increase the output frequency by 10%, and reducing it to 9 would decrease the output frequency by the same proportion. The more precision required over the frequency, the more bits are needed in the counter and DAC.
[edit] Implementation details
Practical implementations usually set the size of the lookup table to be a power of 2 and work with 32-bit phase accumulators and phase increments. Usually the upper 8 or 10 bits of the counter are used as lookup table index (lookup table size is 256 or 1024, respectively). The remaining lower bits can be used as a parameter or index to interpolate between the adjacent entries in the lookup table. Often linear interpolation suffices. The source frequency usually comes from a crystal of 1 MHz to 100 MHz.
The highest frequency that can be generated this way depends on the size of the lookup table and the frequency. In order to generate a reasonable representation of the waveform, at least a minimum number of samples must be taken from it. If the phase increment becomes too large, then the counter would step through the lookup table too fast and the result may be a severe distortion of the output signal.
Implementations exist in both software and hardware. Due to the realtime nature of DDS, software implementations are usually limited to audio frequencies.
Applications of DDS are: function generators, mixers, modulators, and sound synthesizers.
[edit] References
[edit] Papers
- Tierney, J., Rader, C.M., and Gold, B. "A Digital Frequency Synthesizer," IEEE Transactions on Audio and Electroacoustics AU-19:1, March 1971, 48-56
[edit] Books
- Goldberg, Bar-Giora, Digital Techniques in Frequency Synthesis, New York: McGraw-Hill, 1996. ISBN 0-07-024166-X