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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Martin O. (ossi-2)


Bewertung
0 lesenswert
nicht lesenswert
sCcodeMemAddressWidth=12
sCdataMemAddressWidth=10

reg [40-1:0] sCcodeMem [0:(1 << sCcodeMemAddressWidth)-1] ;
reg [32-1:0] sCdataMem [0:(1 << sCdataMemAddressWidth)-1] ;
reg [32-1:0] sCdataMem2 [0:(1 << sCdataMemAddressWidth)-1] ;

$readmemh("CodeMem.txt",sCcodeMem) ;
$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)


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

von Martin O. (ossi-2)


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

von Andy (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.