mikrocontroller.net

Forum: FPGA, VHDL & Co. Hexadecimal File


Autor: HI (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe für meinen FPGA einen kleinen Microcontroller geschrieben. 
Jetzt wollte ich ein kleines Programm schreiben, welches für den Ablauf 
des Mikrocontrollers zuständig ist.
Es stehen 16 Maschinenbefehle zur Verfügung. Zum Beispiel JMP entspricht 
dem HEX Wert 7.
Mit welchem Programmiersoftware könnte ich ein Programm schreiben?
Wie kann ich sicherstellen dass die Programmiersoftware meine Befehle 
richtig umwandelt?

Danke für Eure Hilfe.


Autor: Rick Dangerus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du suchst also einen Assembler. Den solltest Du mit jeder gängigen 
Programmiersprache schreiben können. Es empfiehlt sich eine Sprache zu 
verwenden, wo schon diverse Parserbilbiotheken verfügbar sind, um das 
Rad nicht neu zu erfinden.

Um zu checken, ob alles richtig gemacht wird, gibt es das Konzept der 
Testbenches. (http://en.wikipedia.org/wiki/Test_bench)

Rick

Autor: HI (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

gibt es auch fertige Assembler bei denen ich angeben kann, wie der 
Assembler das Mnemonics in eine Hexadezimale Zahl umwandeln soll? (Z. B. 
Jmp => 7)
Wenn ja, wo finde ich die?

Danke

Autor: Rick Dangerus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich fürchte da mußt Du selber ran.

Eventuell findest Du an Universitäten etwas dokumentiertes/quelloffenes. 
Die Quellen zu avr-as oder sdcc dürften auch recht interessant sein, 
sind aber bestimmt nicht trivial. Etwas einfacher dürfte der 
picoblaze-Assembler sein (ftp://ftp.icarus.com/pub/eda/pbasm).

Rick

Autor: Alban (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei einem Compiler hast du einen Lexer und eine Parser der den Source 
Code bearbeitet. Für deinen kleinen Microcontroller könntest du eine 
Scriptsprache nehmen. Damit kannst du in der Regel schneller ein 
Ergebnis erreichen.

Python hat ein parsing module, dass recht elegant ist.

http://pyparsing.wikispaces.com/

Damit kannst du deinen Source Code parsen, Fehler behandeln und dann in 
hex code umsetzen.

Eine Scriptsprache ist auch sehr gut um die Ausgabe anzupassen. Eine 
Möglichkeit ist ja den Hexcode direkt in VHDL oder Verilog mit 
einzubinden.

Autor: HI (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@alban
Ja ich möchte dann diesen Hexcode direkt in vhdl einbinden.
Leider habe ich noch nie was mit einer Skriptsprache gemacht.
Ist das einfach?
Habe bisher nur ein bisschen C Programmierung gemacht.

Autor: Alban (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@HI

Die Syntax ist sehr ähnlich, teilweise einfacher. Auch muss das Program 
nicht immer erst Compiliert werden, sonder kann direkt gestartet werden.

Kleines Beispiel:
printf("Hello World\n");

In Python:
print "Hello World"

Großer Vorteil der Scriptsprache ist das es dynamische 
Speicherverwaltung bietet. Du musst also nicht erst mit malloc Speicher 
zur Verfügung stellen.

So kann z.B. ein String ganz einfach erweitert werden:
meinString = "Hello"
meinString += " World"
print meinString

>>Hello World

Der String kann natürlich auch ganz einfach in eine Datei geschrieben 
werden.

Das Problem hier ist die Art und Weise zu verstehen wie das Parsing 
funktioniert.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kann auch eine Scriptsprache direkt verwenden, ohne einen eigenen 
Parser zu schreiben. Dadurch bekommt man Funktionalität wie Makros, 
Berechnung von komplexen konstanten Ausdrücken usw. ohne Aufwand 
"kostenlos" dazu. Hier findest du ein Beispiel wie man einen Assembler 
in Ruby implementieren kann:
Beitrag "Re: 16-bit Mikroprozessor"

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du suchst einen "table driven assembler".

Autor: nop(); (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Diese kleinen Aufwaende lassen die Leute ueblicherweise fertige Cores 
verwenden. Dann weiss man, dass der ASM und allenfalls ein Compiler 
schon passt.

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.