Forum Discussion

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

CPLD clock skew generation

I use an epm2210 CPLD and need to generate two internal clocks of

50MHz with 3 to 8ns phase difference.

Any ideas?

3 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    I use an epm2210 CPLD and need to generate two internal clocks of

    50MHz with 3 to 8ns phase difference.

    Any ideas?

    --- Quote End ---

    The MAX II devices do not have PLLs, so shifting the clock phase at 50MHz (20ns) is not going to be simple. You can invert the clock and get 10ns.

    What are you trying to achieve? Perhaps there is an alternative.

    Cheers,

    Dave
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Thanks for the reply.

    My code decodes address,data,,cs and r/w from a processor bus. The data is written and read to a fifo based on fifo_read and fifo_write. Since the clock for the processor bus signals is the same as the fifo clock I just wanted a few ns delay between fifo_read/write (generated by a state machine) to make sure the fifo_clock is stable before the fifo_read/write happens.

    Without any phase difference between the closks the current design seems to give unpredictable read/writes results.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    My code decodes address,data,,cs and r/w from a processor bus. The data is written and read to a fifo based on fifo_read and fifo_write. Since the clock for the processor bus signals is the same as the fifo clock I just wanted a few ns delay between fifo_read/write (generated by a state machine) to make sure the fifo_clock is stable before the fifo_read/write happens.

    Without any phase difference between the closks the current design seems to give unpredictable read/writes results.

    --- Quote End ---

    What you need to do is perform a timing analysis.

    Quartus has a tool called TimeQuest. You need to create a timing constraints file that describes the processor bus timing to the TimeQuest tool. The fitter will then try to meet those timing requirements. If it does not meet the timing requirements, then it will indicate which paths are failing.

    The Altera wiki has a nice guide written by Rysc:

    http://www.alterawiki.com/wiki/timequest

    Cheers,

    Dave