Ram im FPGA (BlockRam, FlipFlops, etc )

#633566
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
Admin Persönliche Seite #633661
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.
#633667
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
#633733
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren