[time-nuts] 32768 Hz from 10 MHz
Hal Murray
hmurray at megapathdsl.net
Sat Feb 4 06:46:25 UTC 2012
tvb at LeapSecond.com said:
> I'm curious how a 10 MHz-driven high-end DDS would generate 32 kHz with the
> lowest possible jitter?
What do you mean by high-end DDS? A chip from Analog Devices or one from
Xilinx? :)
If you use a classic DDS chip with a binary adder and ROM, it will have low
jitter but the frequency will be off a tiny bit. My calculations...
24 bits:
54975 => 32767.653465
54976 => 32768.249511
32 bits:
14073748 => 32767.998054
14073749 => 32768.000382
If you use a FPGA, it's something like this:
X = X + 32768
If X >= 10000000
output clock pulse
X = X - 10000000
You get the subtract for free if you are using decimal arithmetic and ignore
the overflow. You can do it with binary addition if you pipeline things
right and put a mux in front of the adder. It either adds 32K or adds
(32K-10M).
That makes a 1 clock wide clock pulse, 100 ns at 10 MHz. If you want a
square clock, make a 2X clock and toggle a FF to divide by 2.
It will have the right long term frequency, or at least as good as the input
clock.
It will have lots of jitter. It's not Gaussian type jitter but spurs.
Peak-to-peak will be roughly one clock period.
------
I don't know how to compute the jitter on traditional (binary, ROM) DDS
chips. Peak to peak will also be roughly one clock period in the raw output,
but the output is close to a sine wave so some filtering would easily reduce
the jitter.
I'm pretty sure they have spurs and that they are smaller and farther out if
the ROM is wider and deeper.
Both DDS chips and FPGAs usually contain a PLL/DLL to get a faster internal clock rate. That would reduce jitter.
I don't know enough matlab to be able to simulate this. Another time sink when I get the time.
--
These are my opinions, not necessarily my employer's. I hate spam.
More information about the time-nuts
mailing list