Hallo, könnte mich bitte jemand auf gute Informationen leiten, wo die Ram Bausteine eines FPGAs erklärt werden? Was genau ist z.B. ein BlockRam? Wie kann ich die unterschiedlichen Ram Blöcke in einem FPGA in meinem VHDL Design ansprechen und verwenden? Danke für Eure Hilfe. Nik
IdR erzeugst du mit einem Wizard deiner Entwicklungsumgebung eine entsprechende Komponente, die du dann in dein Design einbinden kannst.
Hm, ok dass mit dem Datenblatt ist ein guter Tipp. Aber so ganz wirds mir dann doch nicht klar, was im praktischen Gebrauch die Unterschiede oder Gemeinsamkeiten sind. Verwende einen Spartan3 von Xilinx mit ISE.
BlockRAM ist ne gnaze Ecke schneller. Allerdings ist davon nur wenig verhältnismäßig wenig auf dem FPGA vorhanden, so dass mit dieser Resource oft sparsam umgegangen werden muss. /h
Eigentlich eher umgekehrt; wenn man Speicher mit LUTs realisiert (Distributed RAM) verschwendet man schnell viele Ressourcen, deshalb sollte man wann immer möglich Speicher so beschreiben dass er als Block-RAM realisiert werden kann. Der X3S1000 hat z.B. 432 KBit Block-RAM, aber nur maximal 120 kBit Distributed RAM. Wie man VHDL-Code so schreibt dass die Synthese daraus ein Block-RAM machen kann, das wird im XST User Guide erklärt. Den Core-Generator braucht man eigentlich nur wenn man sehr spezielle RAM-Typen realisieren möchte (Dual Port mit verschiedenen Wortbreiten), ansonsten macht er das Ganze nur unübersichtlicher.
Verstehe, und muss ich selber festlegen welche Variable oder welches Signal in einem BlockRam gespeichert wird, oder wird das bei der Synthese automatisch festgelegt? Führt z.B. eine Anweisung "signal mySignal : std_logic_vector (9 downto 0);" dazu, dass automatisch ein gewisser Speicher angesprochen wird? Ok, wie ihr habe ich den Unterschied zu den mir gut bekannten Mikroprozessoren noch nicht so wirklich verinnerlicht. Danke für jeden Kommentar, nik
ups, die letzte Zeile sollte natürlich folgendermaßen lauten: "Ok, wie ihr SEHT habe ich den Unterschied zu den mir gut bekannten Mikroprozessoren noch nicht so wirklich verinnerlicht."
Ein Signal ist kein Speicher, sondern nur eine Leitung. Einen Speicher musst du dir immer explizit mit FlipFlops erstellen. Die Blockrams kannst du dir ähnlich wie im µC vorstellen: Adress- & Dateneingang sowie ein paar Steuerleitungen, die du entpsrechend ansteuern musst. Häufig musst du dir aber keine Gedanken machen, wie das genau geht, sondern beschreibst einfach nur einen großen Speicher in vhdl. Die Synthese sollte dann erkennen, dass es möglich ist, das in einen Blockram zu packen. Nachteile des Blockrams sind: a) er ist immer nur in diskreten Häppchen verfügbar, bei spartan3 / virtex2 immer in 16kB-Blöcken und b)du kannst natürlich immer nur auf einen Speicherbereich dieses Speichers gleichzeitig zugreifen (bzw. auf zwei in der dualport-Variante). Vorteile: a) schnell, b) Logikzellen bleiben frei für andere Aufgaben Distributed RAM: flexibel aber bei größeren Speichern sehr ressourcenfressend
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.