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.
Direct frequency synthesizers have applications in several domains, including radar, telecommunications, and instrumentation. One drawback of these synthesizers is the generation of spurious components during synthesis. Usually the numerical synthesizer is followed by a digital-to-analog converter (DAC) and, if a high dynamic-range DAC is used, the spurious signals at the DAC input are found at the DAC output. One way to decrease the spurious-signal level is to increase the number of bits in the digital synthesizer; however, another way to is to filter the data before D-to-A conversion.

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.

The Algorithm
Consider an N-point complex time series {si}, with i = 1, 2, 3...N, representing a sine wave with additive noise. The filtering algorithm is based on the SVD of the Hankel matrix formed with the data. This article is limited to a presentation of the algorithm itself—the way to obtain the equations will be presented in a future article.

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.

Simulation Results
To perform the simulations, a time series comprising 16384 complex points was produced by a DDS software simulator, with the following characteristics:

  • Phase accumulator—16 bits
  • Address of the Sine ROM—10 bits
  • Output data—13 bits.

The results presented here show two kind of spectra:

  1. The FFT spectrum of the raw time series
  2. 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.


Figure 1:  FFT spectra of the original time series (red) and of the time series after processing with a sequence of length N=512 (blue).

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.


Figure 2:  FFT spectra of the original time series (red) and of the time series after processing with a sequence of length N=2048 (blue).

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.


Figure 3:  Zoom-in view of the FFT spectra of the original time series (red) and of the time series after processing with a sequence of length N=4096 (blue).

Conclusion
We developed an algorithm to filter a complex sine wave with additive noise. This algorithm is based on the SVD of the Hankel matrix of the signal. The algorithm, presented here in the context of spurious reduction in DDS applications, is very efficient and it is relatively simple to implement. The algorithm is fast because the number of operations to perform is small. This is due to the fact that the N/2 pre-computed values vk are valid as long as the frequency is not changed and thus they can be stored in memory prior to applying the algorithm.

Acknowledgement
The DDS software simulator was designed and written by Arnaud David.





Please sign in to post comment

Navigate to related information

EE Buzz DesignCon

Datasheets.com Parts Search

185 million searchable parts
(please enter a part number or hit search to begin)

Feedback Form