Verwendung mehrerer DDR3-Controller auf FPGA

Wir entwerfen eine Bildverarbeitungs-Pipeline auf einem FPGA, das die Verwendung von Speicherschnittstellen in verschiedenen Pipeline-Stufen erfordert. Aufgrund der Größe des benötigten Speichers haben wir uns für ein DDR3-Design entschieden.

Es wäre wirklich nützlich, wenn die Pipeline-Stufen auf unabhängige Weise auf ihren eigenen Speicher zugreifen könnten, damit ich die Arbitrierung minimieren kann. Ich hatte daher gehofft, mehrere "schmale" DDR3-Module (z. B. 16 Bit breit) mit jeweils eigenem Controller auf dem FPGA zu implementieren, damit die Speicherschnittstellen der Stufen vollständig getrennt werden können.

Meine andere Option ist die Verwendung mehrerer DDR3-Module in einem einzigen Rang mit einem Controller.

Hat jemand Erfahrung mit der Verwendung mehrerer Controller auf einem FPGA? Oder wäre der einzelne Controller die sicherere Wahl?

Wir werden für die Implementierung ein Midrange-Kintex verwenden.

Fragen Sie Ihren Xilinx-FAE.
Ich habe keine Erfahrung mit dieser speziellen Implementierung, aber ich gehe davon aus, dass Sie, solange Sie verfügbare Zellen und verfügbare Verbindungen und verfügbare Pins haben, mehrere parallele Controller haben können, und das wäre aus den Gründen tatsächlich vorzuziehen Sie vorschlagen (weniger Arbitrierung, klar definierter Durchsatz in jeder Phase.)
Ich möchte eine verwandte Frage stellen. Das FPGA der Kintex-Serie hat einen dedizierten Pin-Satz für nur einen DDR-3-Speichercontroller. Bedeutet das also, dass ich nur einen DDR-3-Speicher (One Chip Select) an den Kintex anschließen kann?

Antworten (2)

Hat jemand Erfahrung mit der Verwendung mehrerer Controller auf einem FPGA?

Ja, ich habe an einem Design für eine HD-Video-Pipeline mit zwei DDR-Speichercontrollern mitgeholfen, aber ich weiß nicht, ob es sich speziell um DDR3 handelte. Ein 32 Bit breiter Speicher enthielt den Hauptrahmenpuffer, und der andere 16 Bit breite Speicher enthielt Overlay-Informationen. Hat ganz gut funktioniert.

Oder wäre der einzelne Controller die sicherere Wahl?

Das ist wirklich eine ganz andere Frage. Abhängig von den Bandbreitenanforderungen der verschiedenen "Benutzer" dieses Speichers können die wiederkehrenden Gesamtsystemkosten niedriger sein, wenn Sie alles durch einen einzigen Speichercontroller und einen einzigen Satz von Speicherchips leiten können. Aber die Designzeit und die Risiken (NRE-Kosten) werden höher sein. Ich habe diesen Ansatz auch bei einem anderen (SD-)Projekt gewählt.

DDR-RAMs benötigen viele Pins. Mehrere Speichercontroller zu haben, bedeutet, dass alle RAMs unabhängig voneinander arbeiten, richtig? Da FPGAs Pins haben, die für die Verwendung mit externen Speicherschnittstellen bestimmt sind, frage ich mich, wie wir dort mehr als einen Speichercontroller unterbringen können.
@Quantum0xE7: Nein, im Allgemeinen sind die Pins nicht dediziert. Alle Pins können mit einem externen Speicher verbunden werden. Einige FPGAs haben möglicherweise einen "harten" Speichercontroller eingebaut, in diesem Fall kann dieser Controller bestimmte Pins haben, aber "weiche" Speichercontroller (in Fabric implementiert) können jeden der Pins verwenden.
Tatsächlich, wenn wir uns die Pinbelegung des FPGA in Quartus ansehen, gibt es Pins, die mit DQ/DQS gekennzeichnet sind. Dies impliziert für mich, dass nur bestimmte Pins verwendet werden müssen. Es gibt fast diese Komplikation, dass die Bankspannung mit der Speichervorrichtung übereinstimmen muss.
@Quantum0xE7: Von welchem ​​FPGA sprichst du? Intel/Altera stellt viele verschiedene Typen her.
Ich spreche von Intel FPGAs

Solange Sie genügend Logikzellen und IO-Pins haben, können Sie so viele Speicherschnittstellen haben, wie Sie möchten.

Auf der anderen Seite bedeutet schmaler Speicher, dass Chips gelötet werden müssen, anstatt DIMMs (oder andere Module) zu verwenden, was einen erheblichen Kostenaufschlag bedeutet – es sei denn, Sie kaufen große Mengen an Chips.