Forum: FPGA, VHDL & Co. Anzahl Blockrams sind begrenzt was tun ?


von FPGA-Fragender (Gast)


Lesenswert?

Hallo zusammen,

in meinem VHDL Entwurf benötige ich insgesammt mehr als 16 Blockrams.

In der Synthese wird jedoch angezeigt, dass mein Spartan 3 S 400 nur 16 
Blockrams besitzt.

Nun sind es eigentlich lauter "kleine" Blockrams z.B.
4 Stk ( 64 * 16 Bit) ;
6 Stk ( 128 * 32 Bit) ;  usw.

Nun meine Frage nur so zum Verständnis:

Wenn ich z.B. definieren würde:

16 Blockrams mit z.B. ( 16 * 8 Bit ) was ja insgesamt nur einen kleinen 
Teil des theoretisch verfügbaren Gesamt-Blockram Speicher darstellt,
kann ich dann tatsächlich kein weiteres Blockram mehr anlegen ?

Sind also im Bezug auf meinen Baustein tatsächlich nur 16 Blockram 
Definitionen möglich, egal wieviel gesamt Speicherplatz diese belegen ?

Als Lösung müßte ich dann wohl von den kleinsten Blockram Definitionen 
anfangend diese in Distri-Ram Definition umwandeln, was ich eigentlich 
vermeiden wollte, weil ich zwar Blockram übrig hab aber die Logik Zellen 
knapp sind.

Der Distri Ram verbraucht aber Logik Zellen.

Dann müßte ich meinen ganzen Enwurf umbauen. Habt Ihr einen guten Tipp 
für mich ?

Die Blockrams hab ich mit dem CoreGen angelegt.

Gruß vom FPGA-Fragenden

von Falk B. (falk)


Lesenswert?

@ FPGA-Fragender

>in meinem VHDL Entwurf benötige ich insgesammt mehr als 16 Blockrams.

Es scheint eher, dass du mehr als 16 RAMs brauchst, was nicht 
notwendigerweise ein BRAM sein muss.

>In der Synthese wird jedoch angezeigt, dass mein Spartan 3 S 400 nur 16
>Blockrams besitzt.

Das ist auch so. ;-)

>16 Blockrams mit z.B. ( 16 * 8 Bit ) was ja insgesamt nur einen kleinen
>Teil des theoretisch verfügbaren Gesamt-Blockram Speicher darstellt,
>kann ich dann tatsächlich kein weiteres Blockram mehr anlegen ?

Ja.

>Sind also im Bezug auf meinen Baustein tatsächlich nur 16 Blockram
>Definitionen möglich, egal wieviel gesamt Speicherplatz diese belegen ?

Ja.

>Der Distri Ram verbraucht aber Logik Zellen.

Ja.

>Dann müßte ich meinen ganzen Enwurf umbauen. Habt Ihr einen guten Tipp
>für mich ?

Man kann ein BRAM als Dual Port konfigurieren und beide Ports getrennt 
nutzen. Dabei legt man beispielsweise das oberste Adressbit des einen 
Ports auf 0, das des anderen auf 1. Somit benutzt der eine Port die 
untere Hälfte un der andere die obere Hälfte.

>Die Blockrams hab ich mit dem CoreGen angelegt.

Für solche kleinen RAMs nimmt man meist eher Distributed RAM.

MfG
Falk

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.