EDAboard.com | EDAboard.eu | EDAboard.de | EDAboard.co.uk | RTV forum PL | NewsGroups PL

eliminating a DDS

Ask a question - edaboard.com

elektroda.net NewsGroups Forum Index - FPGA - eliminating a DDS

Goto page 1, 2, 3  Next

John Larkin
Guest

Mon Sep 05, 2016 12:11 am   



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.

Do you suppose that one of the FPGA PLLs be used to clean up the DDS
clock, scrub the jitter somehow? That could maybe be used over a
modest range, octave maybe, followed by some dividers.

Any other ideas for making a programmable-frequency clock with DDS
sort of resolution, but without all that outboard analog stuff?

I've been playing with sorta DDS in LT Spice, using a quantizer to
approximate the DDS accumulator and DAC, but that's obviously not the
best tool for this.



--

John Larkin Highland Technology, Inc

lunatic fringe electronics


Guest

Mon Sep 05, 2016 12:11 am   



Den søndag den 4. september 2016 kl. 20.11.40 UTC+2 skrev John Larkin:
Quote:
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.

Do you suppose that one of the FPGA PLLs be used to clean up the DDS
clock, scrub the jitter somehow? That could maybe be used over a
modest range, octave maybe, followed by some dividers.

Any other ideas for making a programmable-frequency clock with DDS
sort of resolution, but without all that outboard analog stuff?

I've been playing with sorta DDS in LT Spice, using a quantizer to
approximate the DDS accumulator and DAC, but that's obviously not the
best tool for this.


you might be able to do something with the clock manager PLL, it does have
a jitter filter mode but I haven't had any reason to look at how it works

other trickery you could do is

use an DDR output flop to get double resolution or more with a faster clock
use some trickery with pll and serdes output

-Lasse

Mike Perkins
Guest

Mon Sep 05, 2016 1:13 am   



On 04/09/2016 19:11, John Larkin wrote:
Quote:


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.

Do you suppose that one of the FPGA PLLs be used to clean up the DDS
clock, scrub the jitter somehow? That could maybe be used over a
modest range, octave maybe, followed by some dividers.


That isn't how FPGA PLLs work. They add jitter rather than removing it!

Quote:
Any other ideas for making a programmable-frequency clock with DDS
sort of resolution, but without all that outboard analog stuff?

I've been playing with sorta DDS in LT Spice, using a quantizer to
approximate the DDS accumulator and DAC, but that's obviously not the
best tool for this.


The jitter of a clock derived from within a FPGA would simply be related
to the clock frequency used.

If you use a 250MHz clock, as per the max frequency of many cheap FPGAs,
then jitter will be 4ns (+ a small bit).

What jitter spec are you looking for? What is the range of frequencies
you require?

Would a VCO / PLL be a better bet to filter the digital jitter, using
the MSB of your phase accumulator as the reference?

--
Mike Perkins
Video Solutions Ltd
www.videosolutions.ltd.uk

John Larkin
Guest

Mon Sep 05, 2016 1:25 am   



On Sun, 4 Sep 2016 20:13:04 +0100, Mike Perkins <spam_at_spam.com> wrote:

Quote:
On 04/09/2016 19:11, 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.

Do you suppose that one of the FPGA PLLs be used to clean up the DDS
clock, scrub the jitter somehow? That could maybe be used over a
modest range, octave maybe, followed by some dividers.

That isn't how FPGA PLLs work. They add jitter rather than removing it!


We did one clock X2 multiply with a Xilinx DLL, 40 ==> 80 MHz, and the
resulting clock period was bimodal, about 80 ps or so. Ugly. The
actual jitter, ignoring the bimode, wasn't bad.

Quote:

Any other ideas for making a programmable-frequency clock with DDS
sort of resolution, but without all that outboard analog stuff?

I've been playing with sorta DDS in LT Spice, using a quantizer to
approximate the DDS accumulator and DAC, but that's obviously not the
best tool for this.

The jitter of a clock derived from within a FPGA would simply be related
to the clock frequency used.

If you use a 250MHz clock, as per the max frequency of many cheap FPGAs,
then jitter will be 4ns (+ a small bit).

What jitter spec are you looking for? What is the range of frequencies
you require?


Picoseconds of period jitter would be nice!

Quote:

Would a VCO / PLL be a better bet to filter the digital jitter, using
the MSB of your phase accumulator as the reference?


Or maybe a filter and comparator? Instinct suggests that would be
mediocre. The real advantage of outboard DDS-MSB clock cleanup is all
those DAC pins saved; probably no cost advantage.

This was a longshot question, just to see if there was some clever
trick lurking somewhere.



--

John Larkin Highland Technology, Inc

lunatic fringe electronics

Tom Gardner
Guest

Mon Sep 05, 2016 3:30 am   



On 04/09/16 19:11, John Larkin wrote:

Quote:
Do you suppose that one of the FPGA PLLs be used to clean up the DDS
clock, scrub the jitter somehow? That could maybe be used over a
modest range, octave maybe, followed by some dividers.


*IIRC* you have to use the Xilinx clocking wizard (part
of ISE or Vivado), and the SERDES blocks' multipliers have
a jitter of 150-200ps.

Tim Wescott
Guest

Mon Sep 05, 2016 5:10 am   



On Sun, 04 Sep 2016 11:11:32 -0700, John Larkin wrote:

Quote:
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.

Do you suppose that one of the FPGA PLLs be used to clean up the DDS
clock, scrub the jitter somehow? That could maybe be used over a modest
range, octave maybe, followed by some dividers.

Any other ideas for making a programmable-frequency clock with DDS sort
of resolution, but without all that outboard analog stuff?

I've been playing with sorta DDS in LT Spice, using a quantizer to
approximate the DDS accumulator and DAC, but that's obviously not the
best tool for this.


I sat in on a seminar on using FPGAs in comms circuits once, a long time
ago. I made some comment that essentially boiled down to "trust the FPGA
clock to not jitter", and was hooted down by the entire audience.

I haven't forgotten...

--
Tim Wescott
Control systems, embedded software and circuit design
I'm looking for work! See my website if you're interested
http://www.wescottdesign.com


Guest

Mon Sep 05, 2016 8:43 am   



Maybe you get a better jitter than the MSB by using an iodelay oscillator. Never done this, but xapp872 describes it.

rickman
Guest

Mon Sep 05, 2016 4:57 pm   



On 9/4/2016 3:13 PM, Mike Perkins wrote:
Quote:
On 04/09/2016 19:11, 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.

Do you suppose that one of the FPGA PLLs be used to clean up the DDS
clock, scrub the jitter somehow? That could maybe be used over a
modest range, octave maybe, followed by some dividers.

That isn't how FPGA PLLs work. They add jitter rather than removing it!


Aren't you thinking of a digital PLL? The PLL in FPGAs is typically a
standard analog PLL and so *would* remove jitter.


Quote:
Any other ideas for making a programmable-frequency clock with DDS
sort of resolution, but without all that outboard analog stuff?

I've been playing with sorta DDS in LT Spice, using a quantizer to
approximate the DDS accumulator and DAC, but that's obviously not the
best tool for this.

The jitter of a clock derived from within a FPGA would simply be related
to the clock frequency used.

If you use a 250MHz clock, as per the max frequency of many cheap FPGAs,
then jitter will be 4ns (+ a small bit).


Yes, you are clearly thinking of a digital PLL based on the digital
fabric of the FPGA. I assume John was talking about the dedicated PLLs
found in most FPGAS.


Quote:
What jitter spec are you looking for? What is the range of frequencies
you require?

Would a VCO / PLL be a better bet to filter the digital jitter, using
the MSB of your phase accumulator as the reference?



--

Rick C

Mike Perkins
Guest

Mon Sep 05, 2016 5:47 pm   



On 05/09/2016 11:57, rickman wrote:
Quote:
On 9/4/2016 3:13 PM, Mike Perkins wrote:
On 04/09/2016 19:11, 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.

Do you suppose that one of the FPGA PLLs be used to clean up the DDS
clock, scrub the jitter somehow? That could maybe be used over a
modest range, octave maybe, followed by some dividers.

That isn't how FPGA PLLs work. They add jitter rather than removing it!

Aren't you thinking of a digital PLL? The PLL in FPGAs is typically a
standard analog PLL and so *would* remove jitter.


Any other ideas for making a programmable-frequency clock with DDS
sort of resolution, but without all that outboard analog stuff?

I've been playing with sorta DDS in LT Spice, using a quantizer to
approximate the DDS accumulator and DAC, but that's obviously not the
best tool for this.

The jitter of a clock derived from within a FPGA would simply be related
to the clock frequency used.

If you use a 250MHz clock, as per the max frequency of many cheap FPGAs,
then jitter will be 4ns (+ a small bit).

Yes, you are clearly thinking of a digital PLL based on the digital
fabric of the FPGA. I assume John was talking about the dedicated PLLs
found in most FPGAS.


Most of my experience is with Xilinx who I don't believe use analogue PLLs.

Most FPGA PLLs are based on a variable length ring of gates which will
have jitter as gates are switched in and out of the loop.

Can you provide an example of a truly analogue PLL in a mainstream FPGA?

--
Mike Perkins
Video Solutions Ltd
www.videosolutions.ltd.uk

Allan Herriman
Guest

Mon Sep 05, 2016 5:52 pm   



On Sun, 04 Sep 2016 11:11:32 -0700, John Larkin wrote:

Quote:
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.

Do you suppose that one of the FPGA PLLs be used to clean up the DDS
clock, scrub the jitter somehow? That could maybe be used over a
modest range, octave maybe, followed by some dividers.

Any other ideas for making a programmable-frequency clock with DDS
sort of resolution, but without all that outboard analog stuff?

I've been playing with sorta DDS in LT Spice, using a quantizer to
approximate the DDS accumulator and DAC, but that's obviously not the
best tool for this.


Changing from a Zynq 7020 to a '030 or '015 would give you transceivers
(GTX or GTP, respectively). This allows you to position the output
transitions with much more precision.
This would reduce your purely digital DDS jitter from 10ns p-p down to
less than 100ps p-p (for the '030 GTX in mid-speed grade) or 160ps p-p
(for the '015 GTP in the fastest speed grade or ~270ps in the slowest
speed grade).

IOW, the '015 gives you about a 40 times reduction in p-p jitter for
about the same cost as the '020.
Plus, the higher effective sampling rate changes the spectral
characteristics of the jitter and you will find it easier to locate a
clean band in which to position your output signal.

You might be tempted to use one of the onboard PLLs to clean this up, but
they generate about that amount of jitter all by themselves, so there's
probably not much net gain in doing that (along with some pitfalls).


The transceivers have another advantage - they have independent power
supplies and PLLs so you won't have activity in the FPGA fabric causing
output jitter as you do with normal logic outputs.


I'm sure you (or someone in your company) will know how to connect up a
DDS to a transceiver to do this. Ask if you need hints.

Regards,
Allan


Guest

Mon Sep 05, 2016 7:21 pm   



Den mandag den 5. september 2016 kl. 17.19.49 UTC+2 skrev rickman:
Quote:
On 9/5/2016 7:47 AM, Mike Perkins wrote:
On 05/09/2016 11:57, rickman wrote:
On 9/4/2016 3:13 PM, Mike Perkins wrote:
On 04/09/2016 19:11, 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.

Do you suppose that one of the FPGA PLLs be used to clean up the DDS
clock, scrub the jitter somehow? That could maybe be used over a
modest range, octave maybe, followed by some dividers.

That isn't how FPGA PLLs work. They add jitter rather than removing it!

Aren't you thinking of a digital PLL? The PLL in FPGAs is typically a
standard analog PLL and so *would* remove jitter.


Any other ideas for making a programmable-frequency clock with DDS
sort of resolution, but without all that outboard analog stuff?

I've been playing with sorta DDS in LT Spice, using a quantizer to
approximate the DDS accumulator and DAC, but that's obviously not the
best tool for this.

The jitter of a clock derived from within a FPGA would simply be related
to the clock frequency used.

If you use a 250MHz clock, as per the max frequency of many cheap FPGAs,
then jitter will be 4ns (+ a small bit).

Yes, you are clearly thinking of a digital PLL based on the digital
fabric of the FPGA. I assume John was talking about the dedicated PLLs
found in most FPGAS.

Most of my experience is with Xilinx who I don't believe use analogue PLLs.

Most FPGA PLLs are based on a variable length ring of gates which will
have jitter as gates are switched in and out of the loop.

Can you provide an example of a truly analogue PLL in a mainstream FPGA?

Xilinx uses a DLL, but I thought they also had a PLL capability.
Everyone else uses a PLL. Lattice data sheet for the XP2 says...


used to use a DLL, I am quite sure Zynq has a real pll

http://www.xilinx.com/support/documentation/user_guides/ug472_7Series_Clocking.pdf

-Lasse

BobH
Guest

Mon Sep 05, 2016 8:43 pm   



On 09/04/2016 11:11 AM, John Larkin wrote:
Quote:


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

rickman
Guest

Mon Sep 05, 2016 9:19 pm   



On 9/5/2016 7:47 AM, Mike Perkins wrote:
Quote:
On 05/09/2016 11:57, rickman wrote:
On 9/4/2016 3:13 PM, Mike Perkins wrote:
On 04/09/2016 19:11, 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.

Do you suppose that one of the FPGA PLLs be used to clean up the DDS
clock, scrub the jitter somehow? That could maybe be used over a
modest range, octave maybe, followed by some dividers.

That isn't how FPGA PLLs work. They add jitter rather than removing it!

Aren't you thinking of a digital PLL? The PLL in FPGAs is typically a
standard analog PLL and so *would* remove jitter.


Any other ideas for making a programmable-frequency clock with DDS
sort of resolution, but without all that outboard analog stuff?

I've been playing with sorta DDS in LT Spice, using a quantizer to
approximate the DDS accumulator and DAC, but that's obviously not the
best tool for this.

The jitter of a clock derived from within a FPGA would simply be related
to the clock frequency used.

If you use a 250MHz clock, as per the max frequency of many cheap FPGAs,
then jitter will be 4ns (+ a small bit).

Yes, you are clearly thinking of a digital PLL based on the digital
fabric of the FPGA. I assume John was talking about the dedicated PLLs
found in most FPGAS.

Most of my experience is with Xilinx who I don't believe use analogue PLLs.

Most FPGA PLLs are based on a variable length ring of gates which will
have jitter as gates are switched in and out of the loop.

Can you provide an example of a truly analogue PLL in a mainstream FPGA?


Xilinx uses a DLL, but I thought they also had a PLL capability.
Everyone else uses a PLL. Lattice data sheet for the XP2 says...

sysCLOCK™ PLLs
• Up to four analog PLLs per device
• Clock multiply, divide and phase shifting

Altera Cyclone V says this...

Phase-locked loops
(PLLs)
• Precision clock synthesis, clock delay compensation, and zero delay
buffering (ZDB)
• Integer mode and fractional mode

I don't think you can do zero delay buffering if the adjustment is
digital. Later in the document they say this...

• Jitter attenuation

and

PLL-based clock recovery Superior jitter tolerance

That's pretty compelling.

--

Rick C

Allan Herriman
Guest

Mon Sep 05, 2016 10:13 pm   



On Mon, 05 Sep 2016 07:43:31 -0700, BobH wrote:

Quote:
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.


I had assumed that the pulse generator was outside the FPGA, and only the
trigger rate was being generated inside the FPGA. It's not quite clear
from the OP.


Allan

Tim Wescott
Guest

Mon Sep 05, 2016 11:15 pm   



On Mon, 05 Sep 2016 07:43:31 -0700, BobH wrote:

Quote:
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.

--

Tim Wescott
Wescott Design Services
http://www.wescottdesign.com

I'm looking for work -- see my website!

Goto page 1, 2, 3  Next

elektroda.net NewsGroups Forum Index - FPGA - eliminating a DDS

Ask a question - edaboard.com

Arabic versionBulgarian versionCatalan versionCzech versionDanish versionGerman versionGreek versionEnglish versionSpanish versionFinnish versionFrench versionHindi versionCroatian versionIndonesian versionItalian versionHebrew versionJapanese versionKorean versionLithuanian versionLatvian versionDutch versionNorwegian versionPolish versionPortuguese versionRomanian versionRussian versionSlovak versionSlovenian versionSerbian versionSwedish versionTagalog versionUkrainian versionVietnamese versionChinese version
RTV map EDAboard.com map News map EDAboard.eu map EDAboard.de map EDAboard.co.uk map