Forum: FPGA, VHDL & Co. Welche Resource braucht "read only memory"


von Martin O. (ossi-2)


Lesenswert?

1
sCcodeMemAddressWidth=12
2
sCdataMemAddressWidth=10
3
4
reg [40-1:0] sCcodeMem [0:(1 << sCcodeMemAddressWidth)-1] ;
5
reg [32-1:0] sCdataMem [0:(1 << sCdataMemAddressWidth)-1] ;
6
reg [32-1:0] sCdataMem2 [0:(1 << sCdataMemAddressWidth)-1] ;
7
8
$readmemh("CodeMem.txt",sCcodeMem) ;
9
$readmemh("DataMem.txt",sCdataMem2) ;

Ich habe in einem Verilog design 3 Speicher wie oben angegeben.
Speicher sCcodeMem und sCdataMem2 werden nur gelesen und per readmemh 
initialisiert.

Wenn ich das Design synthetisiere werden nur 32768 Bits an RAM benötigt.
Die beiden "read only" Speicher tauchen scheinbar nicht auf. Wie wird 
das synthetisiert?

von user (Gast)


Lesenswert?

das wir auf ein RAM gemappt, das vorinitializiert wird und nicht 
schreibbar ist, also somit ein ROM wird.

von Martin O. (ossi-2)


Lesenswert?

Wenn das auf ein Ram gemapped wird, sollte ich das eigentlich an den 
verbrauchten Resourcen sehen können oder?

von Andy (Gast)


Lesenswert?

Martin O. schrieb:
> Wenn das auf ein Ram gemapped wird, sollte ich das eigentlich an den
> verbrauchten Resourcen sehen können oder?

Ja, aber nur wenn du das ROM in deinem Design auch verwendest. Nur das 
Deklarieren des Speichers reicht da nicht, die Synthese optimiert das 
einfach weg wenn du Adresseingang und Datenausgang nicht sinnvoll 
angeschlossen hast. Oder das ROM wird automatisch verkleinert wenn du 
nur einen Teil des Adressbereiches oder z.B.nur 8 Bits der 32 Datenbits 
verbunden hast.

von Martin O. (ossi-2)


Lesenswert?

Ich verwende das ROM tatsächlich, es liefert auch die richtigen Werte.
Trotzdem find ichs bei den gebrauchten Resourcen nicht.

von Achim S. (Gast)


Lesenswert?

Martin O. schrieb:
> Ich verwende das ROM tatsächlich, es liefert auch die richtigen Werte.
> Trotzdem find ichs bei den gebrauchten Resourcen nicht.

Die Daten müssen nicht unbedingt in einem Block-RAM abgelegt sein, sie 
können auch per distributed RAM (d.h. in der LUTs) gespeichert sein. 
Dort fallen sie dir als "Extra" Ressource vielleicht einfach nicht auf.

von Martin O. (ossi-2)


Lesenswert?

Ist tatsächlich so, dasss Quartus die Tabelle in LUTs gepackt hat.
Danke für den Hinweis. Problem gelöst. Jetzt muss ich nur noch 
rauskriegen,
wie ich Quartus dazu bringe, blockRam zu verwenden.

von Markus F. (mfro)


Lesenswert?

Martin O. schrieb:
> Jetzt muss ich nur noch
> rauskriegen,
> wie ich Quartus dazu bringe, blockRam zu verwenden.

Das steht im Kapitel 12.4 des Quartus-Manuals.

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.