Hallo. Kann mir jemand sagen, wie ich den im Cyclone IV integrierten "Embedded Block RAM" ansprechen kann? Ich möchte z.B. einen Wert auf einen Speicherblock schreiben und ihn später wieder auslesen. Wie geht das? Beste Grüße
> Ich möchte z.B. einen Wert auf einen Speicherblock schreiben
Sicher das DU den Beschreiben möchtest ? Was hast du denn für
Spannungspegel LVTTL ?
Ne mal ernst von wo aus möchtest du den BRAM ansprechen. Man kann einen
BRAM explizit Instantiieren. Man kann aber auch einfach die Option
einschalten das BRAM benutzt werden sollen (die ist aber glaube ich
standardmäßig an).
Wenn die Synthesetools "denken" das passt ganz gut in ein BRAM dann
machen sie das auch da rein.
ALso von wo willst du das BRAM ansprechen von einer FSM oder von
außerhalb oder von innen und aussen als Dual Ported RAM. Viele viele
Fragen ...
Die Antwort kann auch ganz kurz ausfallen : So wie du es willst !
Hallo Uwe, ich habe eine bzw. mehrere state machines in vhdl. In einem Zustand soll ein Wert bzw. eine Bitfolge in dem RAM-Speicher abgelegt werden und in einer x-beliebigen anderen state machine in ingendeinem zustand wieder ausgelesen oder/und ggf überschrieben werden.
:
Bearbeitet durch User
Warum soll es ein BRAM sein wenn es nur EIN Wert ist. Wenn du mehrere Werte speichern willst könnte es sinn machen, dann braucht deine Statemachine aber einen Adressbus um zu entscheiden wohin der Wert soll, bzw. von wo der Wert gelesen werden soll (von welcher Adresse). Wenn man da so macht sollte Quartus das von alleine erkennen und dort ein BRAM benutzen. Ansonsten kann man es auch per Hand Instantiieren oder den Wizard benutzen : http://www.altera.com/literature/ug/ug_ram_rom.pdf
naja es soll ja nicht nur um einen wert gehen, sondern um mehrere. aber wenn ich das grundprinzip weiß, wie man einen wert oder eine Bitfolge mit zb 12 bits im ram ablegt, dann kann ich es bestimmt auch auf mehrere werte/Bitfolgen anwenden. kann mir jemand ein paar zeilen vhdl code schreiben, wie ich etwas in den ram speichere (auf eine bestimmte Adresse?) und ich es wieder lese. wenn zb "bitfolge12" ein Signal ist mache ich das ja normal so: bitfolge12 <= "001110100011"; diese Bitfolge ist jetzt ja aber nur lokal in dem jeweilen vhdl-block gespeichert. wenn ich genau diese folge jetzt in einem anderen block in irgendeinem state verwerden möchte, so muss ich Verbindungen ziehen und immer mit in und out arbeiten. ist es da nicht einfacher die Bitfolge in einen gewissen speicher zu klatschen und ihn irgendwann wieder rauszuholen??
Hi Ben Schau dir doch mal das Dokument "RAM Megafunction User Guide" von Altera an. Da findest du alle Informationen, die du brauchst. Das RAM kannst du im Quartus mittels MegaWizard generieren. Die Ansteuerung ist dann ganz einfach. Gruss Walt
Falls du keinen Altera-spezifischen Speicher haben möchtest, dann kann du auch eins der Templates verwenden (über File -> New -> Insert Template). Alternativ kannst du auch ins Handbuch schauen. Dort gibt es ein Kapitel "Inferring RAM functions from HDL Code". Wenn du den Speicher so wie dort beschrieben definierst, dann übersetzt Quartus das automatisch in eine passende Anzahl Blockrams. Den Speicher zu benutzen ist eigentlich recht einfach: Adresse anlegen und einen Takt später sind die Daten am Ausgang. Schreiben fast genauso: Adresse+Daten+Write enable anlegen...
Mike schrieb: > Falls du keinen Altera-spezifischen Speicher haben möchtest, dann kann > du auch eins der Templates verwenden (über File -> New -> Insert > Template). Das würde ich machen, denn dann ist die Beschreibung universell einsetzbar und portabel. Wegen eines schnöden RAMs gleich einen Core zu instantiieren, das ist, wie wenn du zum Auf- und Zudrehen des Wasserhahns den Installateur holst... > ein Kapitel "Inferring RAM functions from HDL Code". Und das ist auch ganz ineressant: https://www.google.de/search?q=quartus+synthesis+guide Beitrag "Re: Quartusrichtlinien für Procedure" Wenn dann noch ein Blick über den Tellerrand hinaus gemacht wird, dann ist die gefundene Lösung problemlos portierbar: http://www.lothar-miller.de/s9y/archives/20-RAM.html
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.