Creating Arbitrary Waveforms Using Direct Digital Synthesis (DDS)
Modern arbitrary waveform generators frequently use direct digital synthesis (DDS) for creating waveforms. Direct digital synthesis offers the precision of digital control logic - reducing the complexity of the generator while increasing the stability. A DDS generator stretches a waveform using interpolation to fill its available memory. For example the 33220A expands the downloaded points to a 16K or 64K point memory, based on the size of the original waveform.
Adjusting frequency is simple using a DDS generator. You can create a waveform using as many points as you want and simply set the desired frequency. A phase accumulator is used to select points from the memory to generate the waveform. A larger phase increment will effectively sample the points in memory by skipping memory locations to produce a higher frequency waveform. A slower waveform is generated using more of the memory locations, perhaps repeating points by using the same location more than once.
With the decrease in memory prices, arbitrary waveform generators can store more waveforms, both user defined and pre-defined. Users can define waveforms by using the front panel or by downloading a waveform from a PC. Several software packages are available to help create waveforms, such as the free IntuiLink software from Agilent. IntuiLink allows you to create arbitrary waveforms using a graphical user interface on your PC, and then download them into your function generator. You can also capture waveforms from your Agilent oscilloscope and import them into IntuiLink. Once the waveform has been imported you can use the editing functions available in IntuiLink to smooth the waveform, add noise, or edit it to create a single cycle. The latest version of IntuiLink is available at: www.agilent.com/find/intuiLink
Improvements to the front panel, such as a graphical user interface and linear interpolation have made it easier to create simple waveforms from the front panel.
When creating an arbitrary waveform it is ideal to use the entire vertical resolution for defining amplitude. Many function generators use a scale of -1 to 1; defining a waveform with values between 0 and 1 would only give you half the amplitude resolution.
When creating arbitrary waveforms, the function generator will always replicate the finite-length time record to produce a periodic version of the data in waveform memory. However, as shown on the right, it is possible that the shape and phase of a signal may be such that a discontinuity is introduced at the end point. When the wave shape is repeated for all time, this end-point discontinuity will introduce leakage errors in the frequency domain because many spectral terms are required to describe the discontinuity. It is important to create arbitrary waveforms as a single period or as multiple periods and avoid a discontinuity.
The output frequency is typically limited by the bandwidth of the function generator. The generator outputs the entire arbitrary waveform at the specified rate. When an arbitrary waveform is defined as multiple cycles, the actual output frequency may be higher than the specified rate. As an example, if a waveform is defined as 10 cycles of a sine wave and is output at 1MHz, the actual frequency will be 10 MHz. An anti-aliasing filter is placed at the output to smooth the voltage steps to create the final waveform. When using multiple cycles in an arbitrary waveform, especially at high frequencies, the final result may be attenuated. It could also be under-sampled.