[time-nuts] HP 5065A A1 replacement with DDS
jimlux at earthlink.net
Mon Jun 25 08:38:14 EDT 2018
On 6/24/18 2:05 PM, Hal Murray wrote:
> Poul-Henning Kamp said:
>> That's one of the reason I went with Bo's DDS (32bit0 instead of the eBay
>> modules (20-24 bit). Higher resolution mitigates the spur problem at least a
>> little bit.
> I think it also moves the spurs closer in. But maybe if they are small enough
> they get lost in the normal noise.
> Does anybody have a handy formula for the spurs given the parameters for a DDS?
There isn't one.. <grin>
The spur size and location is more determined by "how many loops through
the cosine table til you wind up back at zero" which gets down to the
phase quantization - or the cosine table size
Think of a cosine table that's 16 elements long (i.e. a 4 bit phase).
If the output frequency is fclk*8/16, your DDS puts out entry 0 and
entry 8, and repeats
If the output frequency is fclk*2/16, your DDS puts out entry
If the output frequency is fclk*3/16, your DDS puts out 0,
3,6,9,12,15,2,5,... and it takes a few cycles to repeat around
If the output frequency is fclk*2.5/16, your DDS puts out
these all have very different spur patterns.
> I've occasionally thought of writing code to generate the output of a DDS and
> run it through a FFT. I haven't figured out how much memory that would need,
> or rather how wide a DDS I could simulate with the memory I have. A 20 bit
> accumulator repeats after a million cycles. At 8 bytes/sample that's 8
> megabytes which I can do. (Round down if FFT needs another copy.)
That is, in fact how people do it.
> We are only interested in the close-in area, so old brute-force calculations
> maybe fast enough.
More information about the time-nuts