Hallo, ich hätte eine Frage zu BRAMs in Xilinx-FPGAs. Diese haben ja zwei Ports. Kann man gleichzeitig von beiden Ports aus dem Speicher lesen? Wenn ja, was muss man beim VHDL-Quelltext beachten, dass das Synthesetool nur einen BRAM verwendet? Schonmal Danke!
:
Verschoben durch Moderator
Ja, man kann problemlos auf beiden Ports gleichzeitig lesen, sogar von der gleichen Adresse. Dabei muss man nichts besonderes beachten. Allerdings ist das mit dem inferieren von Dual-Port-RAM immer so eine Sache. Wenn Du XST benutzt, solltest Du die Templates aus dem Manual kopieren, dann müsste es eigentlich klappen. Deutlich unproblematischer (aber nicht so flexibel) ist es, das RAM als Primitive zu instanziieren. Spätestens dann wenn Du das RAM mit Daten vorinitialisieren willst, geht es sowieso nur auf diesem Weg.
Dennis B. schrieb: > Spätestens dann wenn Du > das RAM mit Daten vorinitialisieren willst, geht es sowieso nur auf > diesem Weg. Diese Aussage stimmt aber seit mehreren Jahren schon nicht mehr. Im XST-User-Guide findet sich mindestens ein Beispiel, wie ein inferierter BRAM mit Werten vorbelegt werden kann. Der Vorteil des Inferieren (=das Tool findet selbst heraus, das ein BRAM gebraucht wird): Es ist architekturunabhängig. Damit sind Designportierungen einfacher. Viele Grüße, Jan
@Jan (Gast) >Diese Aussage stimmt aber seit mehreren Jahren schon nicht mehr. Im >XST-User-Guide findet sich mindestens ein Beispiel, wie ein inferierter >BRAM mit Werten vorbelegt werden kann. Mag sein, so toll ist das aber auch nicht wirklich. >Der Vorteil des Inferieren (=das Tool findet selbst heraus, das ein BRAM >gebraucht wird): Es ist architekturunabhängig. Damit sind >Designportierungen einfacher. Das sehe ich anders. Beitrag "Re: Inferred True Dual Port RAM für Xilinx und Altera"
Danke für die Antworten! Hab nun herausgefunden warum immer 2 BRAMs verwendet wurden. Mir fiel auf, dass XST ab einer bestimmten Speichergröße (ab der halben) immer zwei BRAMS synthetisiert hat (hier wurde scheinbar einfach alles doppelt abgespeichert). Man muss den ROM als "shared variable" deklarieren, dass er einen "echten" Dual-Port-RAM daraus macht, auch wenn man darauf nur lesend zugreift.
Dennis B. schrieb: > Allerdings ist das mit dem > inferieren von Dual-Port-RAM immer so eine Sache. Wenn Du XST benutzt, > solltest Du die Templates aus dem Manual kopieren, Wieso? Was spricht gegen die Verwendung des Coregen?
mh schrieb: > Man muss den ROM als "shared variable" deklarieren, dass er einen > "echten" Dual-Port-RAM daraus macht, Hast Du das Ram inferiert oder instanziiert?
Jürgen S. schrieb: > Hast Du das Ram inferiert oder instanziiert? Wenn er sich mit "shared variable" rumschlägt würde ich sagen, er hat es inferiert...
Kommt dann etwas auf die Beschreibung an, ob die Synthese das dann sieht. Ich plädiere, immer Instanzen zu nehmen und ausdrücklich zu verdrahten. Wer kompatibel bleiben möchte, baut einen Wrapper für das RAM, in dem er zwischen Distri, Block-RAM und gfs einem anderen Hersteller umschaltet. Das ist vom handling das Einfachste.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.