News & Analysis
A Fast Algorithm to Decrease DDS Spurious Signals
Alain Bourdillon
11/7/2002 12:00 AM EST
![]() |
|
|
ABOUT THE AUTHOR
Alain Bourdillon is a professor of Electrical Engineering at the University de Rennes. He is involved in research on Over The Horizon radar and on radio propagation.
|
||
Researchers have found that the singular value decomposition (SVD) is useful for removing noise from data.

In this article, we propose a simple and fast filtering algorithm, based on the SVD of the Hankel matrix of the signal, to decrease the spurious-signal level in a Direct-Digital Synthesizer (DDS) numerical signal.
Though the algorithm is presented here in the context of direct-digital synthesis, where the signal frequency is known, you can also use it to filter an unknown frequency sine wave with additive noise. Before processing by the algorithm, the data is organized in sequences with length N=2n, where n is an integer. We will show that the greater the sequence length N, the better the results with respect to spectral purity.
As a first step, the components of a vector v of length N/2 are computed from the original time samples si using the following relationship:

where * represents the complex conjugate. The vector v is thus a translated version of the autocorrelation function of the time series (k=1 corresponds to a zero time delay).
In the DDS application, the frequency of the wave is known. In this case, instead of Equation 1, it is possible to use the translated autocorrelation function of the complex exponential wave given by:
vk = exp[j2pF(k-1)] k = 1,2,3...N/2 (2)
where F is the normalized frequency of the wave.
As a second step, the scalars u1 and u2 are computed by:

and the filtered signal is obtained using the following two equations:
sfilteredk = u1vk k = 1,2,3...N/2 (5)
sfilteredk+N/2 = u2vk k = 1,2,3...N/2 (6)
The filtering algorithm is simple to implement. The vector v, used in Equations 5 and 6, is valid as long as the frequency of the wave is not changed. This vector must be modified each time the frequency of the synthesized signal is changed. In specific applications, for instance during the generation of a chirp signal, it is necessary to change the frequency very frequently and the N/2 components of the vector v at each frequency should be stored in memory in advance. Eventually, if speed is not a critical factor, the vector v could be computed in real time during the chirp.
- Phase accumulator16 bits
- Address of the Sine ROM10 bits
- Output data13 bits.
The results presented here show two kind of spectra:
- The FFT spectrum of the raw time series
- The spectrum of the time series after filtering.
Before spectral analysis, the data is windowed by a Kaiser function with very low level sidelobes. To apply the filtering algorithm, the time series is processed dividing the original sequence into smaller length sequences. The algorithm is applied to the smaller size sequences of N points and the FFT analysis is then performed on the 16384-point sequence reconstructed using the filtered data.
In our results, the synthesized frequency is F=11.358 MHz and the clock frequency is 64 MHz. Figure 1 shows the FFT spectra of the original time series (in red) superimposed with the spectra of the time series processed with a sequence length N=512 (in blue). Note that the main spectral peaks in blue and in red are superimposed so they cannot be distinguished, but this is not really a problem since we only want to compare the level of the spurious signal before and after filtering. Figure 1 shows a large decrease of the spurious level after processing. The improvement is not uniform: it is larger as one is moving away from the main spectral line. Figure 2 shows the results obtained with a processing length N=2048 while Figure 3 presents a closer view of the spectra around the main peak for N=4096. These figures show that the spectral purity of the filtered signal is continuously improved by the filtering operation as N is increased. In the original time series, the spurious free dynamic range (SFDR) is about 60dB. After processing, the SFDR is improved by 20 to 40 dB, depending on the value of the sequence length N. Larger SFDR can be obtained using larger N values. Of course, the spectral purity of the signal after filtering also depends on the accuracy of the calculations performed inside the algorithm. In our simulations the calculations were made with floating-point arithmetic so that accuracy is not a limitation but this could be different if the algorithm were implemented on a chip. In any case, it is necessary to choose the accuracy of the calculations, taking into account the final SFDR value needed.
From the computational point of view, the complexity of the algorithm is weak because, to process a sequence containing N points, it is necessary to perform 2*N complex multiplications and N-2 complex additions.




