Hi,
I have a Xess board with a Xil It is not possible to use one DLL to provide both the FPGA and SDRAM clocks since the SDRAM clock goes through an OBUF delay creating skew between the two clocks. Using two DLLs with the same clock input and separate feedback signals achieves zero-delay between the input clock, the FPGA clock, and the SDRAM clock.
I have only used one DCM for my SDRAM controller, and it seems to work just fine (i.e., I can use the SDRAM as the framebuffer for a 1024x768 VGA display), but I am of course worried that this is only by accident.
The "Two DLL" setup looks like this:
: OSC --:--> IBUFG -+--> DLL0 ---> BUFG -+---> main clock : | ^ | | +--------------+ ext clock ->| | : +--> DLL1 ---> OBUF -----:--+ ^ : | SDRAM | : | +------ IBUFG DLL0 ---> BUFG -+--> main clock ^ | +--------------+
DLL0 will produce a zero phase difference between "main clock" and "buf clock", which is not exactly the "sdram clock" because of the IBUFG. Will that be a problem? My reasoning is that the data signals go thru a IBUF as well, and thus it is OK to synchronize relative to the buffered clock. Assuming that a IBUFG and an IBUF produce the same amount of delay, it might even be 'more correct' than synchronizing to the unbuffered clock "sdram clock", since it is "buf data" which must have the correct setup/hold times.
I fully expect my reasoning to be wrong. But where?
Thanks!