Sylvain Munaut wrote:
> Hello
>
> I'm planning to do a microblaze design using external DDR memory using
> the opb_ddr
> core. However I'd like to know if there is any constraints on how to
> connect
> (which banks/pins ...) the DDR chip. Here I only have 1 point to point
> connection
> of a 16 bits wide DDR.
>
> I was planning on using two banks for all the DQS/DQM/DQ then another
> bank for the
> control & address signals.
>
> I haven't seen much info about that in the opb_ddr doc. But on DDR
> interface appnotes,
> some have specific constrainst so I prefer to ask before making the
> board 
There's several things to consider: First, you can't put DQS signals and
DQ-signals in the same IO-tiles, because they use different clocks and
there can only be one clock per tile for the IO-registers. That's one
thing I stumbled upon in the past...
Second, the plb_ddr-controller from EDK3.2 (don't know if this applies
to the opb_ddr in EDK6.X) suggested a clock feedback path, i.e. a
separate trace feeding the clock sent to the DDR back into the
FPGA.
They use that to determine how to compensate for PCB routing delays. If
you don't have that, you'll probably have to waste a DCM and do some
fiddling around to figure out the correct phase shifts and such.
Third, remember that DDR-SDRAM has a MINIMAL clock rate at which it can
operate. With the myriad of different manufacturers, types and
speedgrades of SDRAM-chps available you should look out not to
accidentally get a chip that doesn't run as "slow" as your controller.
If you're planning to use high clock rates, Xilinx recommends you use
local clocks for the DQS signals, and then you'd have to use specific
pins for the corresponding data signals. In Xilinx' Memory Corner you
can download a "Memory Interface Generator" that can help with the pin
assignments.
Other than that, the DDR-chip probably uses SSTL2, which means you have
to hook up all the Vref-pins to 1,25V, so they are not available to use
as I/Os. Termination is an issue as well, so you should connect the
VRN/VRP-pins as well to be able to use the DCIs for termination.
Depending on the board layout it might be neccessary to use series
resistors and/or pullups at the DDR chip as well.
cu,
Sean