T
Tim Wescott
Guest
On Mon, 05 Sep 2016 22:52:33 -0400, rickman wrote:
I was thinking along the lines of generating a programmable delay after
the clock tick -- with all due respect for the fact that it won't be
perfect, in a number of ways.
--
Tim Wescott
Wescott Design Services
http://www.wescottdesign.com
I'm looking for work -- see my website!
On 9/5/2016 1:15 PM, Tim Wescott wrote:
On Mon, 05 Sep 2016 07:43:31 -0700, BobH wrote:
On 09/04/2016 11:11 AM, John Larkin wrote:
I have a design that will use a DDS synthesizer to generate an
internal trigger rate for a pulse generator. The chip will be a ZYNQ
7020. The required upper frequency limit is maybe 20 MHz. The FPGA
will have the usual, 48 bit or so, phase accumulator and sine lookup
stuff clocked at maybe 100 MHz. The FPGA drives a fast DAC which in
turn drives an LC lowpass filter and a comparator. Standard stuff.
But could such a clock be generated entirely inside the FPGA?
Just using the MSB of the DDS phase accumulator works, but it will
have one full clock, 10 ns p-p, of jitter. That will be ugly at 20
MHz. I've got to look into some sort of outboard analog filtering to
clean up that single-bit clock, but I'm not optimistic. DDS is just
too weird.
Is the analog signal from your sine generator used elsewhere in the
system? If not, I don't see any advantage to using an external
asynchronous analog comparator on an analog signal. You will pick up
at least one clock cycle of jitter re-syncing the incoming analog
signal to the digital clock. Then you have the jitter from the delays
out to the DAC, the filter delays and the comparator jitter to add in.
If the digital logic for the timing generator is not in the same clock
domain as the system receiving it, you will pick up at least one clock
cycle of jitter in the clock boundary transition.
The only way I can think of to reduce the total jitter is the use as
fast a clock as you can, and keep everything in one clock domain. Then
you only have the clock source jitter that effects the entire system.
Good Luck,
BobH
I can't speak to what John is doing, but if he needs a
variable-frequency pulse train with small jitter for some external
purpose, then he needs some sort of DDS or PLL technique.
Assuming that the FPGA clock is good and steady, one could get a finer
than one-clock resolution by playing tricks like using four or eight
output pins to a current DAC, which then charges a cap, which then
feeds a comparator. Then one wouldn't need to have a whole DDS inside
-- but one would still need some external analog stuff, and one would
still need to depend on the FPGA to have a nice consistent clock edge.
When you say "whole DDS", it's not that much circuitry. Besides, John
said he is using a 48 bit phase accumulator with a table lookup which
will give terrible phase jitter. A table lookup is a very poor choice
given the much better ways of high resolution phase to sine conversions
possible.
I'm not at all familiar with how you would control the current DAC if
you don't use a DDS. Are you suggesting the conversion of phase
directly to analog to create a sawtooth wave with the DAC? I don't
think you want to charge a cap. That would give a curved ramp sawtooth.
Maybe I'm not following at all.
I don't know the Zynq parts, but nearly all other FPGAs have proper
analog PLLs which will greatly reduce jitter. I believe the input
frequency range is somewhat limited, so there may need to be some extra
circuitry with the PLL to get the proper output frequency from the
acceptable input frequencies.
I was thinking along the lines of generating a programmable delay after
the clock tick -- with all due respect for the fact that it won't be
perfect, in a number of ways.
--
Tim Wescott
Wescott Design Services
http://www.wescottdesign.com
I'm looking for work -- see my website!