Forum: FPGA, VHDL & Co. Handling von mehreren BRAMs als ein Memory-Block


von Michi (Gast)


Lesenswert?

Ich möchte in einem Spartan II mehrere BRAMs mit jeweils 4096 Bit in 
einen zu adressierenden Speicherbereich zusammenfassen und darauf mit 
einem 16 Bit breitem Datenbus zugreifen.

Dabei verwende ich folgende Syntax:
TYPE ram_type IS ARRAY (5 * 256 - 1 downto 0) OF std_logic_vector (15 
downto 0);

Damit lassen sich mehrere BRAMs in einen zu adressierenden 
Speicherbereich zusammenfassen, allerdings nur 1, 2, 4 oder 8 BRAMs zu 
einem Speicherbereich.

In meiner Applikation möchte ich jedoch 5 BRAMs (mehr habe ich für diese 
Funktion nicht mehr zur Verfügung) in einen Speicherbereich 
zusammenfassen. Mit der oben angegebenen Syntax verwendet er hierfür 
jedoch 8 BRAMs anstatt den nur 5 benötigten BRAMs.

Kann mir jemand von Euch helfen, wie ich dies einfach handeln kann, dass 
die ISE nur so viele BRAMs verwendet wie sie für die geforderte 
Speichergröße benötigt (aufgerundet auf volle BRAMs)?

Freue mich auf Eure Rückmeldungen :-)

von Jan M. (mueschel)


Lesenswert?

ISE hat wohl ein Problem damit, dass bei 5 Bloecken der Adressvektor 
ungültige Werte annehmen könnte. (Vielleicht aber auch eine 
Hardware-Beschränkung beim Zusammenschalten mehrerer Blöcke?)


Nimm 5 einzelne kleine Arrays und steuere die read-Signale entsprechend 
der oberen Bits der Adresse.

von Michi (Gast)


Lesenswert?

Wie würdest Du diese BRAMs dann genau einbinden/instanzieren?
-> Datenausgabe über einen großen MUX mit 5 Eingängen (Ausgänge der 5 
BRAMs) und einem Ausgang?

von Jan M. (mueschel)


Lesenswert?

Genau, alle parallel mit 8bit Adressbus anschliessen. Je nach den oberen 
drei Bit deiner 11bit Adresse setzt du dann das jeweilige write Signal. 
Und am Ende einen 5:1-Multiplexer der auch aus den oberen 3bit den 
jeweiligen Eingang auswaehlt.
Und dann entsprechend 5 mal einen kleinen RAM-Block instanziieren, so 
wie du das wohl jetzt schon machst mit dem einen grossen.

von jm (Gast)


Lesenswert?

Kann der core generator nicht was entsprechendes erzeugen?

von A.K. (Gast)


Lesenswert?

Müsste gehen, Quartus macht das auch.

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.