[time-nuts] An (unknown?) nasty feature of the DDS principle fortime nuts applications
df6jb at ulrich-bangert.de
Tue Jan 25 13:54:12 UTC 2011
I should perhaps add that I do not wanted to express that the observed flaws
are a problem of the DDS principle itself. My guess is that it is a effect
that is due to the movement of the sampling points in conjunction with the
different quantization error scenarios for every movement. I.e. it is a
problem of the practical implementation of a DDS not a problem of the
> -----Ursprungliche Nachricht-----
> Von: time-nuts-bounces at febo.com
> [mailto:time-nuts-bounces at febo.com] Im Auftrag von Ulrich Bangert
> Gesendet: Dienstag, 25. Januar 2011 14:38
> An: Time nuts
> Betreff: [time-nuts] An (unknown?) nasty feature of the DDS
> principle fortime nuts applications
> the pros and cons of DDS chips and how to improve them have
> been discussed here from time to time. Most of the
> improvements have the aim to remove spurs out of the power
> spectrum or to reduce the noise level. Yesterday I run into a
> thing that may make it very qestionable whether DDS based
> circuitry is in general good for precise timing applications.
> I have setup a AD9850 which is clocked from my Z3805
> reference. Since the clocking involves a sine-cmos conversion
> (currently done with 74HC4046 as described by Shera et al)
> and a second sine-cmos conversion (also 74HC4046) behind the
> reconstruction lowpass of the DDS (DDS ouput serves as
> reference input of an ADF4002 PLL) I wanted to check the AD
> of the cmos output signal and later test whether there was
> any improvement by using 74AC4046
> The DDS was set to app. 1 MHz. For a 1 MHz output @ 10 MHz
> clock with 4 byte accumulator width the necessary frequency
> tuning word is 2^32/10. But since 2^32 is a power of two its
> one and only prime factor is "2" and it is not divideable
> without rest by any integer that is not a power of two
> itself. 2^32 is 4,294,967,296 so the closest integer to
> 2^32/10 is 429,496,730 which produces a frequency offset of
> +0.000931322574615479 Hz against 1.0 MHz.
> I compared this signal with a 1,000,000.001 MHz signal coming
> from my HP3325 which itself is also locked to the Z3805. I
> used my SR620 in high resolution mode to compare the signals.
> That is: The counter is armed by its own 1 kHz reference
> signal and measures exactly 1000 start/stop time intervals
> per second between its start/stop inputs which are fed from
> the two 1 MHz sources. Then the counter averages over the
> 1000 samples which improves the counter's noise by app.
> SQRT(1000) = app. 32. which results in a close picosecond
> resolution @ 1 Hz sample rate for the 1000 average.
> The results of this measurement is shown in
> When the linear trend resulting from the small frequency
> difference is removed the plot looks like
> which shows an unexpected very regular pattern. Indeed a auto
> correlation computation reveals that the measured signal is
> highly self-correlated at even multiples of about 50 s or so
> and highly anti-correlated at odd multiples of 50 s or so.
> See yourself in
> This regular pattern generates this nasty sigma-tau:
> The question is: Where does it come from????
> Well, lets have a look into details: The accumulation process
> starts with a value of zero. After 10 accumulations a new
> period of the sythesized wave starts. However, the phase
> accumulator does not start at zero again, because in 10
> accumulations we accumulated 10 * 429,496,730 = 4,294,967,300
> and the phase accumulator overflow happened at 4,294,967,296
> - 1. The next wave period will have its "sampling point" even
> a bit more far away from the overflow point and all the rest of it.
> If this really were the reason for the regular pattern in the
> measurement then we need to ask ourselves whether after a
> certain time since start the DDS accumulator matches its
> initial condition of zero after which the game begins new.
> Since it was beyond of my mathematical capabilities to
> compute the number of accumulations after which this
> condition is met again in an analytic way I wrote me a small
> simulation of the DDS in PASCAL making use of the fact that
> it supports 64 bit integers (INT64).
> This simulation indicated that the condition "accumulator =
> 0" is met every 2147483648 accumulations. Expressed in time
> (remember that with a 10 MHz clock every accumulation
> resembles a 100 ns step in time) this happens every
> 214.7483648 s. Well, that would explain why every 214 s or so
> the wave pattern matches its initial conditions but not why
> my measurements suggested a repetion rate of abt. 100 s. or so.
> It then came to my mind that perhaps not a perfect match of
> the initial conditions is necessary. Perhaps we need only
> come VERY CLOSE to the initial conditions. So I modified my
> simulation in such a way that accumulator values would be
> found which met the condition (acc>2^32-10) OR (acc<10). I.e.
> I made me a small "window" around the overflow point and run
> the simulation again. The result is to be seen in
> The first column is the number of accumulations, the second
> column is the accumulator value and the third column ist the
> time in s since start. Heureka! This clearly shows that the
> synthesized wave (if not a complete
> match) is kind of "self similar" in a high degree every 107 s
> or so in terms of the position of her sample points. This
> matches my measurements very well. So we more or less need to
> take it for granted that only the moving of the sample points
> relative to the accumulator overflow point generates a
> (allowedly very small) phase modulation on the output of the
> DDS that I have documented with my measurents. For anything
> else other than time nuts expectations this small phase
> modulation may be insignificant or better than the specs demand.
> However for very precise timing a DDS may simply be unsuited.
> My hope that a combination of a DDS with a PLL would make a
> practical offset generator for DMTD or so have vanished in
> the hay. The desribed problem will not show up for power of
> two values of the frequency tuning word but that leaves us
> with very limited number of discrete frequencies that run
> "Ok" on the DDS. This involves ALL circuits that feature a
> DDS. Even the otherwise phantastic scheme suggested by Rick
> Karlquist involves a DDS and may fail as a good offset
> generator if it comes to timing aaplications.
> While I must confess that the effect came a bit surprisingly
> with the DDS I have seen similar (if not the same) effects
> when I tried to compare oscillators by downmixing them into
> the audio domain and further process them with a sound card
> and DSP software. One of the many things that I have tried
> out was to use two digital PLLs locked to the two sound card
> input channels. The sampled data came in chunks worth 1 s in time.
> Every second the program would compute how the PLL output
> increased in terms of phase against the sampling clock and
> then compute the difference between the two channels. Already
> there I noticed that the phase not only increased in time but
> also had this small periodical variations on top of it. This
> was true when the sampled frequency was not an integer
> multiple of 1 Hz. If the frequency was odd, say 100.25 Hz
> then the observed phase modulation on the PLL phase had a
> repetion rate of 4 s because every 4 s there was a match to
> the initial conditions. I am sure today that this is due to
> moving of the sample points against the sampled wave as is
> the case the other way round with the synthesized wave of the DDS.
> Best regards
> Ulrich Bangert
> Ortholzer Weg 1
> 27243 Gross Ippener
> time-nuts mailing list -- time-nuts at febo.com
> To unsubscribe, go to
> and follow the instructions there.
More information about the time-nuts