Electronic – Using multiple DDR3 controllers on FPGA

ddr3fpgamemory

We are designing an image processing pipeline on an FPGA which will need the use of memory interfaces at various pipeline stages. Because of the size of the memory required we decided to go with a DDR3 design.

It would be really useful if the pipeline stages can access there own memory in an independent manner so that I can minimize arbitration. I was thus hoping to implement multiple "narrow" DDR3 modules (16 bit wide for instance) each with it's own controller on the FPGA so that the stages' memory interfaces can be completely separate.

My other option is using multiple DDR3 modules in a single rank with one controller.

Does anybody have any experience in using multiple controllers on an FPGA? Or would the single controller be the safer bet?

We will be using a mid range Kintex for the implementation.

Best Answer

Does anybody have any experience in using multiple controllers on an FPGA?

Yes, I've helped out on a design for an HD video pipeline that used two DDR memory controllers, but I don't know whether they were DDR3 specifically. One 32-bit wide memory held the main frame buffer, and the other 16-bit wide memory held overlay information. Worked quite well.

Or would the single controller be the safer bet?

That's really a separate question altogether. Depending on the bandwidth requirements of the different "users" of this memory, the overall recurring system cost can be lower if you can funnel everything through a single memory controller and a single set of memory chips. But the design time and risks (NRE costs) will be higher. I have also taken this approach on a different (SD) project.