Forum: FPGA, VHDL & Co. Hexadecimal File


von HI (Gast)


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.


von Rick Dangerus (Gast)


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

von HI (Gast)


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

von Rick Dangerus (Gast)


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

von Alban (Gast)


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.

von HI (Gast)


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.

von Alban (Gast)


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:
1
printf("Hello World\n");

In Python:
1
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:
1
meinString = "Hello"
2
meinString += " World"
3
print meinString
4
5
>>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.

von Andreas S. (andreas) (Admin) Benutzerseite


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"

von Mike (Gast)


Lesenswert?

Du suchst einen "table driven assembler".

von nop(); (Gast)


Lesenswert?

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

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.