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 :-)
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.
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?
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.
Kann der core generator nicht was entsprechendes erzeugen?
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.