Hallo Leute, ich brauche für ein Projekt einen kleinen FPGA mit RAM. Bin dabei auf ICE von Lattice gestoßen. Kann ich die RAM Anordnung so wählen, dass ich einen durchgehend adressierbaren Speicher habe? Habe mir paar Appnotes angeschaut. Dort werden Primitiven für die RAM-Ansteuerung benutzt. Was ich brauche ist z.B. 8000 x 16 Bit. Wird so was erfolgreich in die Hardware umgesetzt?
Prinzipiell geht das natürlich. Wie genau, steht im User Guide des entsprechenden Synthesizers, prinzipiell aber mit einem Array aus Vektoren. Bei Xilinx wird ein Block Ram inferriert, wenn die Lese-Adresse getaktet angelegt wird. Außerdem gibts dann immer noch ein paar Besonderheiten für die Read-First, Write-First, No-Change Operationen und noch etwas spezieller für True Dual Port RAMs. Bei Xilinx ist das der einzige mir bekannte Fall, wofür man shared Variablen braucht. Abe rwie gesagt, schau in den User Guide deines Synthesizers.
Christian R. schrieb: > Bei > > Xilinx ist das der einzige mir bekannte Fall, wofür man shared Variablen > > braucht. Wofür braucht man die? Ich habe die noch nie gebraucht, baue aber wöchtenlich Xilinx RAMs.(?) @TE: du instanziierst EIN einzige grosses RAM und kannt dieses dann auch so beteiben. Dazu instanziierst du mehrere weitere, für andere Applikations im FPGA, die du parallel betreibst. Sollte es Bereiche geben, die sich inhaltlich überschneiden, kann man die zusammenfassen (lassen): Die Synthes prüft dazu, ob es Phasen gibt, in denen die Zugriffe ausschliesslich, oder bei Adressüberschniedung identisch sind. Dann werden die RAMs zusammengefasst und ein weiterer Anschluss ausserhalb des RAMs drangehängt. Bei manchen Altera RAMs mit einseitem zugriff baut die Synthese einen weiteren RAM-Anschluss dran, der für den DP-Zugriff vorgesehen ist. Das alles geht automatisch.
Kinuflu schrieb: > Was > > ich brauche ist z.B. 8000 x 16 Bit. Wird so was erfolgreich in die > > Hardware umgesetzt? Die RAMs können in verschiedenen Konfigs erzeugt werden. Ein Extrem sind z.B. DP-RAMs mit einem Bit Eingang und 1024 Bits Ausgang. Damit hat man einen SER-PAR Wandler, der mit einem Schlag les- und löschbar ist.
Kinuflu schrieb: > Wird so was erfolgreich in die > Hardware umgesetzt? ja, wird es Und wenn du den nicht selber aus RAM-Blöcken zusammenbasteln willst, dann gibt es ein Tool in der Entwicklungsumgebung (IPExpress). Da kannsts du dir dann den RAM zusammenklicken, wie du ihn brauchst und das Tool spuckt dir ne HDL Datei aus, die genau diesen RAM beschreibt. Diese Component kannst du dann in deinem Dasign einfach verwenden.
Elektroniker schrieb: > Christian R. schrieb: >> Bei >> >> Xilinx ist das der einzige mir bekannte Fall, wofür man shared Variablen >> >> braucht. > > Wofür braucht man die? Für True Dual Port RAMs, wie supachris auch schrieb.
Elektroniker schrieb: > Wofür braucht man die? > > Ich habe die noch nie gebraucht, baue aber wöchtenlich Xilinx RAMs.(?) Wenn du einen True Dual Port RAM mit zwei beschreibbaren Ports in VHDL beschreiben willst, brauchst du (bei Xilinx zumindest) eine shared variable, denn du musst Seite A und Seite B jeweils aus einem getrennten Prozess heraus beschreiben. Für "normale" RAMs, die nur einen Schreib-Port haben, reicht das Array aus Vektoren als Signal.
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.