mikrocontroller.net

Forum: FPGA, VHDL & Co. Ram im FPGA (BlockRam, FlipFlops, etc )


Autor: Nik N. (neusser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: der andere (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
IdR erzeugst du mit einem Wizard deiner Entwicklungsumgebung eine 
entsprechende Komponente, die du dann in dein Design einbinden kannst.

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde dir das Datenblatt des Herstellers empfehlen.

Autor: Nik N. (neusser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: hhanff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Nik N. (neusser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Nik N. (neusser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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."

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.