FPGARelated.com
Forums

DDR-ram interface (xapp200)

Started by Michael Chan August 9, 2003
Hi,

I'm working on a University project that requires ddr-ram interfaced to a
Vertex-EM device.  I am basing my design off xapp200 from xilinx.  The
design uses DLLs to deskew the system clock and ddr-ram clock.  The signal
fed back to the DLLs (sys_clk_fb) is apparently the ddr clk.  What I don't
understand is where I take this signal from.  Should I have tracks on my PCB
comming back from the ddr-ram chips to inputs on the fpga?  Or can the
feedback signal come from inside the fpga?

I am a little lost as to how the DLLs manage to sychronise the two clocks.
Any help would be appreciated.

Thanks.

Michael.


Thanks for the help Bob.  I think I know what I have to do.

Cheers,

Michael.

"Bob" <nimby1_not_spmmm@earthlink.net> wrote in message
news:xc9Za.1457$Nf3.400@newsread4.news.pas.earthlink.net...
> Michael, > > There are two basic ways that DLL's are used to de-skew clocks. For lack
of
> any other names, they are: > > 1) internal de-skew > 2) external de-skew > > Internal de-skew means that the global clock net, within the FPGA, > transitions at the same time (phase) that the FPGA's input clock > transitions. > > External de-skew means that a clock at an FPGA output pin transitions at
the
> same time (phase) that the FPGA's input clock transitions. > > Here are some terms you should know: > > IBUF/OBUF -- an FPGA input/output pin (what most of the FPGA pins are). > IBUFG -- really just a standard I/O pin, but physically close to the
DLL --
> such that the DLL knows what its routing delay is to it. These are where > clock inputs (and external clock feedback signals) are supposed to connect > to. > DLL -- the phase detector, etc... > BUFG -- a global clock buffer. The output of the BUFG's are the global
clock
> nets. > > With internal de-skew, the output of the BUFG (global clock net) is fed > directly back to the DLL's clock feedback input -- with the FPGA itself. > With external de-skew, the output of the BUFG feeds an OBUF (output pin). > Then, a trace on your circuit board connects that OBUF to an IBUFG. > > With a synchronous RAM design (like your DDR project), the idea is to
first
> get a clock to the RAM that has the same phase as one of the FPGA's
internal
> global clock nets. This is so that the timing of the RAM read data, at the > FPGA IBUF's, has a known time relationship. One of the DLL's in the design > is used to do this -- via external de-skew. > > The other DLL is used (via internal de-skew) to create the "read RAM data" > clock. > > I haven't looked at XAPP200 carefully, but here's how we do our DDR > controllers: > > 1) Use external de-skew to create the RAM's CLK/CLKB, and DQS clocks. Note > that the DQS clocks (strobes) are tristated during RAM reads, and are not > used during RAM reads. Additionally, this DLL's 90deg output is used to
feed
> the OBUF's that create the RAM DQ lines -- but only for RAM writes. > > 2) Use internal de-skew to create a separate clock net for RAM reads (and > other FPGA functions). > > Having said all this, I must say that it's amazing to me that a Virtex-E > device can be used for this type of application. I say this because the
data
> from the RAM is valid during the time "between" the RAM's DQS clock
(strobe)
> edges. So, when the RAM read data gets back to the FPGA pins, its valid
data
> position is not ideal (i.e., suitable setup and hold time). It is much > easier to use a Virtex-II device, wherein a third internal de-skew clock
net
> can be generated (which has phase shift via the DCM) in order to properly > capture the RAM read data. > > Either way, you'll learn a lot with this project. > > Regards, > Bob > > > "Michael Chan" <s354025@student.uq.edu.au> wrote in message > news:bh2scl$kop$1@bunyip.cc.uq.edu.au... > > Hi, > > > > I'm working on a University project that requires ddr-ram interfaced to
a
> > Vertex-EM device. I am basing my design off xapp200 from xilinx. The > > design uses DLLs to deskew the system clock and ddr-ram clock. The
signal
> > fed back to the DLLs (sys_clk_fb) is apparently the ddr clk. What I
don't
> > understand is where I take this signal from. Should I have tracks on my > PCB > > comming back from the ddr-ram chips to inputs on the fpga? Or can the > > feedback signal come from inside the fpga? > > > > I am a little lost as to how the DLLs manage to sychronise the two
clocks.
> > Any help would be appreciated. > > > > Thanks. > > > > Michael. > > > > > >
I highly recommend the section on Eliminating Clock Skew in XAPP462:  Using
Digital Clock Managers (DCMs) in Spartan-3 FPGAs.  The section begins on the
bottom of page 25.
http://www.xilinx.com/xapp/xapp462.pdf

Although the application note is written for Spartan-3 FPGAs, the DCM is
functionally very similar to Virtex-II and Virtex-II Pro.  The differences
are also described in the application note.
---------------------------------
Steven K. Knapp
Spartan-3/II/IIE FPGAs
http://www.xilinx.com/spartan3
---------------------------------
Spartan-3:  Make it Your ASIC

"Michael Chan" <s354025@student.uq.edu.au> wrote in message
news:bh2scl$kop$1@bunyip.cc.uq.edu.au...
> Hi, > > I'm working on a University project that requires ddr-ram interfaced to a > Vertex-EM device. I am basing my design off xapp200 from xilinx. The > design uses DLLs to deskew the system clock and ddr-ram clock. The signal > fed back to the DLLs (sys_clk_fb) is apparently the ddr clk. What I don't > understand is where I take this signal from. Should I have tracks on my
PCB
> comming back from the ddr-ram chips to inputs on the fpga? Or can the > feedback signal come from inside the fpga? > > I am a little lost as to how the DLLs manage to sychronise the two clocks. > Any help would be appreciated. > > Thanks. > > Michael. > >