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.

  • \$\begingroup\$ Ask your Xilinx FAE. \$\endgroup\$
    – user3624
    Aug 18, 2013 at 21:00
  • \$\begingroup\$ I don't have experience with that particular implementation, but my assumption would be that, as long as you have available cells, and available interconnect, and available pins, you can have multiple parallel controllers, and that would actually be preferrable for the reasons you suggest (less arbitration, well-defined throughput at each stage.) \$\endgroup\$
    – Jon Watte
    Aug 18, 2013 at 22:42
  • \$\begingroup\$ I want to ask one related question. Kintex series FPGA has a 1 dedicated pin set for only one ddr-3 memory controller. so does it mean I could connect only One set (one chip select) ddr-3 memory to the Kintex? \$\endgroup\$
    – user30831
    Oct 24, 2013 at 5:59

2 Answers 2


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.

  • \$\begingroup\$ DDR RAMs need a lot of pins, having multiple memory controller means that all the RAMs work independandly right? Since FPGAs have pins that dedicated for use with external memory interface, I wonder how we can fit more than 1 memory controller in there. \$\endgroup\$ Sep 10, 2020 at 22:57
  • \$\begingroup\$ @Quantum0xE7: No, in general, the pins are not dedicated. All pins can be connected to external memory. Some FPGAs might have a "hard" memory controller built in, in which case that controller might have specific pins, but "soft" memory controllers (implemented in fabric) can use any of the pins. \$\endgroup\$
    – Dave Tweed
    Sep 11, 2020 at 3:52
  • \$\begingroup\$ actually if we look at the pinout of FPGA inside Quartus, there are pins marked with DQ/DQS. This for me implies that only certain pins must be used. There is almost that complication of bank voltage having to match the memory device. \$\endgroup\$ Sep 11, 2020 at 20:52
  • \$\begingroup\$ @Quantum0xE7: Which FPGA are you talking about? Intel/Altera makes many different types. \$\endgroup\$
    – Dave Tweed
    Sep 11, 2020 at 22:55
  • \$\begingroup\$ I am talking about Intel FPGAs \$\endgroup\$ Sep 12, 2020 at 18:39

As long as you have sufficient logic cells and IO pins, you can have as many memory interfaces as you like.

On the downside, narrow memory implies soldering chips down rather than using DIMMs (or other modules) which means a significant cost premium - unless you are buying huge volumes of chips.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.