Global signal conservation

Discussion in 'VHDL' started by David Ashley, Aug 23, 2006.

  1. David Ashley

    David Ashley Guest

    Hi,

    In opencores DDR implementation, the author uses a PLL
    to generate a clock of multiple phases. The PLL outputs
    true and inverted signals, in perfect sync.

    However the author doesn't use the inverting output of
    the PLL -- to generate an inverted output he inverts the
    true clock output and uses that.

    I'm trying to figure out why he did this. Is it because if
    you use the single clock source, then you only need one
    global clock buffer -- but if you use both, presumably
    there would be 2 global clock buffers used, and this
    is excessive for the design?

    Moreover the design needs a 2 phased clock. All clocks
    are 100 mhz. So 2 phases, 2 types (true/inverted) with
    minimum clock skew would necessitate 4 global clock
    buffers, right?

    Instead evidently he opted for just the 2 true clocks,
    then uses inverters when he wants the inverted version.

    Now this means the inverted signal will be delayed by
    the inverter. This appears on the order of .5 to 1 ns in
    the parts I'm interested in.

    So perhaps it's a tradeoff -- minimum skew requires
    4 global clock buffers. Perhaps the inverter approach
    conserves global clock buffers at the expense of a little
    bit of skew.

    Anyway I just am looking for a sanity check. Does the
    reasoning above sound...reasonable? When designing
    is it necessary to keep these things in mind?

    Thanks--
    Dave
     
    David Ashley, Aug 23, 2006
    #1
    1. Advertising

  2. David Ashley

    jtw Guest

    I don't know what technology your example is using, but for Xilinx Virtex
    devices (and I believe also the old 4k), inverters are generally 'free': no
    logic resource penalty, and no timing delay penalty. I suspect Altera and
    the other vendors do something comparable:

    N-input LUTs - inverter is free, it just changes the contents of the LUT
    clock inputs to FFs - true & complement are generally available.

    I believe that in the past, some constructs (FFs in IOBs?) did not support
    'free inversion', but I think most do nowadays.

    Now, for high-speed designs in Virtex 2 & Virtex 2 Pro, where there is a
    significant concern about duty cycle symmetry, the DCMs provide true and
    complement clocks--this requires 2 BUFGs. However, Xilinx has App notes
    showing how to use a Macro to use just the single BUFG--do a search on
    'local clock inversion.' We have used it successfully on Virtex 2 Pro
    devices at well over 600 MHz DDR. (This wasn't a DDR memory interface,
    which would have different timing parameters than our custom interface.)

    I would expect the newer Xilinx and Altera parts to be able to achieve
    higher performance.

    JTW

    "David Ashley" <> wrote in message
    news:44ec9bab$...
    > Hi,
    >
    > In opencores DDR implementation, the author uses a PLL
    > to generate a clock of multiple phases. The PLL outputs
    > true and inverted signals, in perfect sync.
    >
    > However the author doesn't use the inverting output of
    > the PLL -- to generate an inverted output he inverts the
    > true clock output and uses that.
    >
    > I'm trying to figure out why he did this. Is it because if
    > you use the single clock source, then you only need one
    > global clock buffer -- but if you use both, presumably
    > there would be 2 global clock buffers used, and this
    > is excessive for the design?
    >
    > Moreover the design needs a 2 phased clock. All clocks
    > are 100 mhz. So 2 phases, 2 types (true/inverted) with
    > minimum clock skew would necessitate 4 global clock
    > buffers, right?
    >
    > Instead evidently he opted for just the 2 true clocks,
    > then uses inverters when he wants the inverted version.
    >
    > Now this means the inverted signal will be delayed by
    > the inverter. This appears on the order of .5 to 1 ns in
    > the parts I'm interested in.
    >
    > So perhaps it's a tradeoff -- minimum skew requires
    > 4 global clock buffers. Perhaps the inverter approach
    > conserves global clock buffers at the expense of a little
    > bit of skew.
    >
    > Anyway I just am looking for a sanity check. Does the
    > reasoning above sound...reasonable? When designing
    > is it necessary to keep these things in mind?
    >
    > Thanks--
    > Dave
    >
     
    jtw, Aug 25, 2006
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Michael Pronath
    Replies:
    1
    Views:
    1,195
    Diez B. Roggisch
    Jan 3, 2005
  2. Jack Orenstein

    threading.Thread vs. signal.signal

    Jack Orenstein, Sep 18, 2005, in forum: Python
    Replies:
    0
    Views:
    478
    Jack Orenstein
    Sep 18, 2005
  3. Weng Tianxiang
    Replies:
    2
    Views:
    671
    Jonathan Bromley
    Jan 30, 2007
  4. Nicolas Moreau
    Replies:
    9
    Views:
    3,246
  5. dibacco73
    Replies:
    1
    Views:
    667
    joris
    Feb 12, 2009
Loading...

Share This Page