[time-nuts] HP 5065A A1 replacement with DDS
jimlux
jimlux at earthlink.net
Mon Jun 25 12:38:14 UTC 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
0,2,4,6,8,10,12,14,0,2,4,6
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
0,2,5,7,10,12,15,1,4,6,9,11,14,0,3, etc.
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_lists.febo.com
mailing list