[time-nuts] spur prediction DDS software

Magnus Danielson magnus at rubidium.dyndns.org
Sun Jan 30 12:58:18 UTC 2011

On 27/01/11 14:33, jimlux wrote:
> On 1/27/11 5:17 AM, Luis Cupido wrote:
>> Hi,
>> Is there a DDS spur prediction software around ?
> Not generically..
> There is a dissertation out there with some matlab code. I'll see if I
> can find a link
> Most of the time what I do is write a little program in matlab/octave,
> run a bunch of samples, and FFT it. That way you can model things like
> error feedback or truncation effects.

What I do is to write a little C program that keeps accumulating away.
Whenever the wrapped value becomes lower than the previous value I have 
a cycle completed. Just print the values of each such phase-wrap and you 
will readily see the phase movements. You will also notice that this is 
a number of phase movements overlayed ontop of each other. Each such 
overlay structure has an integer number of cycles over the DDS period. 
It really takes very little time to break them out and get their 
relative amplitudes using this method. This is a healthy exercise to do 
to learn what DDS phase noise can result in.

Thinking a bit more about it, you realize that you can see the same 
pattern as being the result of a sawtooth being wrapped up on itself 
around the nyquist frequencies. Pondering some more over it you realize 
that there is DDS frequencies in which these overtones will wrap on top 
of each other in the wrapped spectrum, This condition will avoid 
close-in spurs, so an analogue clean-up has a fair chance of doing 
something with them. It also becomes clear that small shifts can produce 
larger shifts of spurs...

Having a fixed M/N situation where N=2^n (common for many DDSes) will 
limit the frequencies with the "good" condition of spurs being far away, 
but shifting to a variable N improve things in this context, but makes 
some control aspects messy.

A problem with using a 2^(n-1) < N < 2^n is that the phase-sequence will 
run short compared to the usual binary bits taken from the top of the 
DDS, so this will needs to be handled. It takes some extra tricks to 
avoid the phase-jump and hence sawtooth phase modulation.

The good thing about DDSes is that you with very cheap hardware can get 
a linear scale over a large frequency range. It will not necesserily 
align up to the intended frequency (as dialed in). More elaborate 
schemes will reduce these effects.

... and that was prior to do phase quantization prior to sine shaping.


More information about the time-nuts mailing list