Forum: FPGA, VHDL & Co. Initialisierung von Xilinx BlockRAMs


von Jörg (Gast)


Lesenswert?

Hallo zusammen,

ich möchte meine BlockRAMs mit Werten aus einer Datei initialisieren.
der CoreGenerator in Xilinx ISE erlaubt für ein BlockRAM optional ein
COE-File für die Initialisierung. Der CoreGenerator erzeugt damit ein
VHDL-File und ein MIF-File (MIF-File wird im Instance Template der
VHDL Datei angegeben).
Jetzt möchte ich aber aus bestimmten Gründen nicht den CoreGenerator
verwenden sondern die BRAMs per Attribute selbst initialisieren. Im
Xilinx VHDL-Libraries  Manual finde ich aber zu BRAMs nur Attribute
wie Init_00,..Init_3F usw. Kann mir einer von euch erklären, wie die
Daten aus z.B. einem MIF-File in meine BRAM-Entity einlesen bzw. deren 
Attribute füllen kann?


Gruss

Jörg

von Jan M. (mueschel)


Lesenswert?

Ich kann dir nicht genau helfen, aber ich glaube du suchst an der 
falschen Stelle: Die Informationen aus dem MIF werden erst ganz zum 
Schluss während des erstellen des Programmier-Files in den Datenstrom 
für den FPGA eingebaut, die Synthese und auch das Place&Route sieht 
davon nichts.

von Jörg (Gast)


Lesenswert?

Eine einfäche Möglichkeit wäre (oder ist) ja, per Place&Route ein
konkretes BRAM zuzuordnen und an der entsprechenden Stelle im BIT-File
den Inhalt aus dem MIF-File zu kopieren.

Ich suche aber eigentlich einen Mechanismus bzw. VHDL-Funktionalität
um aus eigenen Dateien Daten in die Attribute zu füllen statt in meinem
VHDL-Code lauter init_00 <= X"..."; .. init_3F <= X"..."; bzw. ein
COE-File zu verwenden.

Gibt es vieleicht eine TextIO-Schnittstelle, die das Einlesen in
Attribute ermöglicht.

Gruss

Jörg

von Xenu (Gast)


Lesenswert?

Den "Mechanismus" den ich verwende heisst "selbstgeschriebenes 
C-Programm, das mir eine passende VHDL-Datei generiert".

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Schreib ein Skript das dir ein VHDL-Array generiert (bzw. den 
entsprechenden proprietaeren Krampf, falls gewuenscht), oder ersetze die 
Initialisierungsdaten nachtraeglich im Bitstream (siehe T51-Core).

von Jörg (Gast)


Lesenswert?

So (oder so ähnlich) funktioniert ja der CoreGenerator. Du
spezifizierst alle Parameter und der Generator erzeugt daraus
alle notwendigen Files.
Jetzt habe ich zu einer Gruppe von VHDL-Files (inkl. Data-Files)
mehrere bis viele Projekte. Ich möchte aber nicht für jedes
Projekt den CoreGenerator bzw. einen eigenen Generator aufrufen
sondern nur die VHDL-Files kopieren. Und da sehe ich bis jetzt
die einfachste Lösung im direkten Einlesen in die Attribute.

Naja, einen eigenen Generator zu bauen ist ja nur eine
5-Minuten-Terine, wenn's dann sein soll..

Aber trotztem vielen Dank für die Hinweise bis jetzt.

Gruss

Jörg

von Jörg (Gast)


Lesenswert?

@Andreas Schwarz,

ich nehme mal an, du meinst mit Scriptgenerierung von VHDL-Arrays
die Erzeugung von VHDL-Files bzw. von Fragmenten, die dann in den
VHDL-Code reinkopiert werden?

Das Einfügen in Bitstreams möchte ich weniger gerne machen, weil
ich mehrere Architekturen habe (Spartan3 und Virtex5 bis jetzt).
Werde mir den Bitstream-Ansatz aber trotztdem mal anschauen.

Gruss

Jörg

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.