Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
11 years ago

Problem with Data Integrity & Clock between 2 FPGAs

Hi

I have a problem with data integriry & clock between 2 FPGAs. A scheme of my design is inserted at the end.

My design consists of 2 Cyclone III FPGAs. Each FPGA has several clock domains, each feeding their own logic.

In FPGA-2 there is a PLL which generates two 50 MHz clocks with 180-degree phase shift; i.e. clk2 = NOT clk1.

The clk1 feeds FPGA-2 logic. The clk2 signal goes out from FPGA-2 using a normal IO pin and feeds FPGA-1 logic through a dedicated clock pin.

FPGA-1 generates a 16-bit data using clk2 and sends it to FPGA-2.

Both FPGAs use Fast Input/Output Register on this data bus pins in order to minimize t_co & t_su.

FPGA-2 processes that data using clk1.

I used two clocks with 180 degree phase shift and I hoped that half of clock cycle is sufficient for all delays, including t_co, t_su, PCB delay, etc.

Now, using SignalTap it is evident that FPGA-1 has generated data correctly, but in FPGA-2 received data is corrupted.

What could cause this problem?

  • sending out a clock from a normal IO with Fast Output Register option enabled? Is this a good design practice?

  • Not setting IO delay constraints? Keep in mind that 50 MHz is not so high and PCB tracks are short, though with unequal lengths (less that 0.5 inch)

  • Something else ??!!!

I'm using Quartus-II v.11

My design scheme:

http://www.alteraforum.com/forum/attachment.php?attachmentid=9651&stc=1

Thanks in advance.

20 Replies