Forum: FPGA, VHDL & Co. Rams mit untersch. Breit+Tiefe am gleichen Adress+Datenbus


von Martina M. (xaiven-be)


Lesenswert?

Hallo,

ich habe 32 Blockrams (Xilinx, Simple Dual Port) mit den gleichen 
Speicherbreiten und -tiefen. Kann ich die alle an den gleichen Lese 
Daten- und Adressbus hängen und jeweils nur mit dem Readenable Signal 
steuern? Es wird auch immer nur von einem RAM gelesen und das 
Beschreiben kann auch sequentiell erfolgen. Will damit Leitungen, Signal 
und VHDL Code sparen.
Kann ich auch andere Blockrams an den gleichen Bus hängen, die total 
andere Speicherbreiten und -tiefen besitzen? Diese haben mehr oder auch 
weniger Leitungen für die Adresse/Daten.

Vielen Dank für eure Hilfe
Martina

von Klaus F. (kfalser)


Lesenswert?

Nein, kannst Du nicht.
Das ergibt einen internen Bus, der aber im FPGA nicht implementiert 
werden kann. Außerdem werden die Ausgänge des Blockrams nicht hochohmig.

Du musst einen Multiplexer nachschalten.

von Martina M. (xaiven-be)


Lesenswert?

Ok, danke. Die Rams haben keinen Tristate-Ausgang... Schade. Aber mit 
einem Multiplexer spare ich ja nicht wirklich Signal und damit 
VHDL-Code. Jedes RAM muss ja mittels Signal an den Mux angeschlossen 
werden. Also würde ich "nur" Leitungslänge auf dem FPGA sparen?

von Klaus F. (kfalser)


Lesenswert?

Die Leitungslänge im FPGA interessiert niemanden, das hängt sowieso vom 
Placement ab. Letztentlich ist nur entscheidend ob Du deine 
Geschwindigkeit erreichts, und das hängt auch von anderen Faktoren ab.
Kannst Du nicht die Blockrams zu einem zusammenfassen, wenn eh nur immer 
von einem gelesen/geschrieben wird?

von Martina M. (xaiven-be)


Lesenswert?

ja, ich werde jetzt wohl die Rams mit den gleichen Breiten und Tiefen 
zusammenpacken. Dann gibts halt ein großes. Bei denen mit verschieden 
Wort- und Adresslängen bleibt mir dann nichts anderes übrig, als viele 
Signal zu deklarieren. Kann man denn Signale in einer extra Datei extern 
deklarieren? sonst wird mein Hauptfile so unübersichtlich.

von Duke Scarring (Gast)


Lesenswert?

@ Martina M.:
> Kann man denn Signale in einer extra Datei extern deklarieren?

Ja. Dafür kann man in VHDL elegant packages und records verwenden.

Duke

von Joko (Gast)


Lesenswert?

Für die 'Optimierung' viel entscheidender als die Anzahl der
VHDL-Zeilen wäre die richtige 'Partitionierung' der BRAMs..

Beispiel:
 falls 2k Daten a 16 Bit zu speichern sind, ist es günstiger,
 2 BRAMs a 8Bit "parallel" zu schalten, als den Adressbereich
  aufzusplitten (2 BRAMs a 16 Bit):

 Letzteres benötigt noch (besagte) Multiplexer, während diese
 im 1. Ansatz bereits 'in den BRAMs' enthalten sind..

Gruß
Jochen

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
Noch kein Account? Hier anmelden.