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.
DDR-ram interface (xapp200)
Started by ●August 9, 2003
Reply by ●August 11, 20032003-08-11
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 lackof> 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 atthe> 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 theDLL --> 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 globalclock> 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 tofirst> get a clock to the RAM that has the same phase as one of the FPGA'sinternal> 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 tofeed> 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 thedata> 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 validdata> 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 clocknet> 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 toa> > 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. Thesignal> > fed back to the DLLs (sys_clk_fb) is apparently the ddr clk. What Idon'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 twoclocks.> > Any help would be appreciated. > > > > Thanks. > > > > Michael. > > > > > >
Reply by ●August 11, 20032003-08-11
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 myPCB> 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. > >