help on clock fowarding between 2 FPGAs

Hi,

I'm new to FPGA world and currently working on an emulation board with 2 Virtex-5. I think to forward clock from chip A to chip B. Is that possible to make these 2 clocks synchronous ? What kind of steps, components and constraints need to be done to ensure the synchronous between these 2 FPGAs. The clock frequency is about 50-100 MHz range.

My current scheme is as following, but doesn't work properly. Any help is appreciated.

On FPGA A,

  1. A clock, APP_CLK (200 MHz), comes out of a DCM, which is used to mange the receiving clock from off-chip DDR2 DIMM.

  1. APP_CLK drives another DCM for clock synthesis of 100 MHz and 50 MHz. The feedback of this DCM is from the output of DCM itself, which may be an issue.

  2. Takes the 100 MHz clock to an ODDR primitive (Dedicated IOB double data rate output registers). This is suggested by Xilinx Vitex-5 User Guide.

  1. forward this clock to FPGA B.

on FPGA B,

  1. use IBUG, DCM and BUFG to generate the synchronous clock.

My concern is:

  1. The 2 FPGAs don't have knowledge about each other. How does these two clock synchronize to each other ?

  1. I put huge clock uncertainty (4 ns) with INPUT_JITTER. I hope this will compensate the latency on board.

  2. What IO standard and PAD's constraints is suitable for this?

One background that why I didn't choose board clock source to distribute 2 FPGAS is because we want the 100 MHz clocks of both FPGAs synchronized to APP_CLK.

Appreciate any help in advance.

Chris Kuo @ Austin, Texas

Reply to
ggkuo
Loading thread data ...

I had a similar design requirement.

I solved it this way:

clock input -> DCM -> IOpad out +-> clock in fpga1 -> DCM |-> clock in fpga2 -> DCM

and presto. Synchronous clocking of both fpga's.

--
Reply to nico@nctdevpuntnl (punt=.)
Bedrijven en winkels vindt U op www.adresboekje.nl
Reply to
Nico Coesel

Hi, Nico A good idea! Unfortunately, we have no control on board routing since it 's bought from outside. But thanks though!!!

Kuo

Nico Coesel wrote:

Reply to
Kuo

That's 3 DCMs in series, which is generally reckoned to be a bad idea, because of jitter accumulation.

(1) Can you not simply use IBUFG on the second FPGA? If the DCM is just generating a copy of the incoming clock with no phase shift, try without it.

You have some tools in the IOBs to control signal timings between the FPGAs, without adjusting clock phase in FPGA2; alternatively you may have 90/180/270 degree phase shifts available on the 100MHz clock in FPGA1.

(2) Can you use CLKX2, CLK and CLKDV from a single DCM in the first FPGA? (Alternatively, get both 100 and 200MHz from one DCM and use the second DCM for only the 50MHz clock)

Either of these will reduce the chain of DCMs down to the recommended max of 2. Both will eliminate chaining DCMs altogether.

(3) You could divide the 200MHz clock in a FF in FPGA1, to feed to FPGA2, if you need the DCM in FPGA2. Take care to analyse the delay introduced by the FF.

Brian

Reply to
Brian Drummond

Hi, Brian Thanks for all the valuable suggestion. Chaining is certainly not a good idea.

Finally, we resolve this problem by shifting phase to certain degree of the DCM on FPGA B. The amount to shift is from experiment, which may not be perfect, but at least it passed stress test.

Thanks

Brian Drumm> >

Reply to
Kuo

Kuo,

If you move the phase shift to find the earliest point, and latest point, you then know the margin (and also know the center, or best setting).

If the margin is at least 50% of the period, you are theoretically "perfect."

A margin greater than 25% of the period may be perfectly good over process, voltage and temperature, as the DCM is unaffected largely by these effects.

If you also look at your system jitter, peak to peak, you can see how much the jitter reduces your margins.

Austin

Reply to
austin

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.