mikrocontroller.net

Forum: FPGA, VHDL & Co. Hexfile für Raminitialisierung


Autor: martin (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte gern unter Quartus meinen Ram Inhalt initialisieren, dafür 
bietet die Software mir die möglichkeit, ein HEX File anzugeben. Nun 
habe ich leider Probleme bei der Erstellung eben dieser Datei. Mein 
bisheriges vorgehen:
-Quartus projekt erstellen, Ram mit 256 Worten a 16 Bit erstellen und 
einbinden
-ein binary erstellen, welches 512 byte enthält.
-Konvertieren dieser datei mit bin2hex (unter windows)
-dateipfad im Ram angeben und kompilieren.

Dabei kamen folgende Warnings bei raus:

Warning: Byte addressed memory initialization file "...256Words.hex" was 
read in the word-addressed format

Warning: Memory depth value (256) in design file differs from memory 
depth value (496) in Memory Initialization File -- truncated remaining 
initial content value to fit RAM

Warning: Width of data items in ...Count256Words.hex is greater than the 
memory width. Wrapping data items to subsequent addresses. Found 16 
warnings, reporting 10
  Warning: Data at line (1,2,3,4,5,6,7,8,9,10) of memory initialization 
file "...Count256Words.hex" is too wide to fit in one memory word. 
Wrapping data to subsequent addresses.


Zusammengefasst: ich habe ein hexfile, in dem Bytes Adressiert werden, 
möcht aber eines haben, in dem Words (á 2 Byte) adressiert werden, 
zumindest interpretiere ich die Warnings so.

Die fehlerhafte Initialisierung des rams äußert sich wie Folgt bei mir: 
die Adressbereiche von xxx10000-xxx11111 werden mit 0x0000 initialisiert 
bzw nicht initialisiert, davor und dahinter geht werden die Werte aus 
dem binary genommen. Wenn ich also ein binary nehme, indem ich 16 bit 
werte hochzähle, dann sollte ja unter jeder Speicheradresse die 
Speicheradresse hinterlegt sein. Beim AUslesen erhalte ich jedoch:
speicheradresse -> wert
0x0f -> 0x000f
0x10 -> 0x0000
[...]
0x1f -> 0x0000
0x20 -> 0x0010
...

Hat jemand für mich einen guten Tip, wie ich korrekte Hex files 
erstellen kann? Ich hänge mein Hexfile noch einmal mit an.
Vielen Dank,
Martin

Autor: martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe gerade herausgefunden, dass Quartus entsprechende Dateien 
erstellen kann, das geht mit file -> new -> other files -> Memory 
Initialization File

vielleicht hilft es ja der Nachwelt.
Viele Grüße

Autor: Rolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Quartus kann sogar noch mehr! Es kann sogar HEx<->MIF wandeln. Du 
solltest Dir mal ein maximales MIF von Quartus erstellen lassen und im 
MIF Editor bearbeiten. Schalte dabei mal zwsichen den Qort / Byte 
Darstellungen um und exportiere es mal jeweils.

Dann änderst du mal von Hand mit einem HEX Editor ein paar Sachen ab - 
nutzt das Ganze für die Synthese und für s Modelsim.

Nach etwas Probieren findest Du raus, daß Modelsim bei MIFs einen 
Riesescheiss macht und Quartus auch mit den selbsterstellten MIFs nicht 
klarkommt.

Ausserdem gibt es ein Größenlimit von 16k. D.h. man kann RAMs grpßer 16 
k nicht so ohne Weiteres initialisieren. Siehe dazu meinen 
Servicerequest bei Altera!

Autor: martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielen Dank für den Hinweis. mit meinem 2K Init File klappten erste 
Tests, wobei ich mich noch nicht an Modelsim versucht habe...
Wirklich zuverlässig scheint das simulieren offensichtlich nicht zu 
funktionieren. Wie schaut es denn mti dem Raminitialisierung in Realität 
aus? Klappt das soweit oder sind da starke Abweichungen gegenüber der 
Simulation wahrzunehmen? Du sprichst von 'nem Größenlimit von 16k, 
meckert da der Compiler oder stellt man das irgendwann beim testen fest?
LG,
Martin

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.