Download/Link - Praktische Informatik - Universität Siegen
Download/Link - Praktische Informatik - Universität Siegen
Download/Link - Praktische Informatik - Universität Siegen
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
1 / 50<br />
Hardwarepraktikum 2.0<br />
Entwurf eines Speicher- und IO-Interfaces auf einem FPGA<br />
sowie<br />
eines Assembler-Compilers/-Debuggers und Memory-Viewers<br />
Bachelorarbeiten<br />
Dennis Reuling und Simon Hardt<br />
Fachgruppe für Mikrosystementwurf<br />
Fakultät IV, Department Elektrotechnik und <strong>Informatik</strong><br />
<strong>Universität</strong> <strong>Siegen</strong><br />
17. Mai 2011
Gliederung<br />
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
2 / 50<br />
1 Einleitung<br />
2 Entwurfsüberblick<br />
3 Speicher- und IO-Interface für einen FPGA<br />
Modulübersichten<br />
FPGA-Testboard<br />
4 Assembler-Compiler/-Debugger und Memory-Viewer<br />
Compiler/Debugger<br />
Benutzeroberfläche<br />
5 Zusammenfassung und Ausblick<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Gliederung<br />
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Einleitung 3 / 50<br />
1 Einleitung<br />
2 Entwurfsüberblick<br />
3 Speicher- und IO-Interface für einen FPGA<br />
Modulübersichten<br />
FPGA-Testboard<br />
4 Assembler-Compiler/-Debugger und Memory-Viewer<br />
Compiler/Debugger<br />
Benutzeroberfläche<br />
5 Zusammenfassung und Ausblick<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Einleitung 4 / 50<br />
Hardwarepraktikum<br />
Das Hardwarepraktikum wird von der Fachgruppe Mikrosystementwurf<br />
jedes Sommersemester angeboten<br />
Zielgruppe: Studenten der <strong>Informatik</strong><br />
Zielsetzung: <strong>Praktische</strong> Erfahrungen in hardwarenaher Entwicklung und<br />
dem Zusammenspiel zwischen Hardware und Software sammeln<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Einleitung 4 / 50<br />
Hardwarepraktikum<br />
Das Hardwarepraktikum wird von der Fachgruppe Mikrosystementwurf<br />
jedes Sommersemester angeboten<br />
Zielgruppe: Studenten der <strong>Informatik</strong><br />
Zielsetzung: <strong>Praktische</strong> Erfahrungen in hardwarenaher Entwicklung und<br />
dem Zusammenspiel zwischen Hardware und Software sammeln<br />
Das Praktikum besteht aus zwei wichtigen Abschnitten:<br />
Entwicklung eines Prozessors auf einem FPGA<br />
Assemblerprogrammierung und anschließende Ausführung auf dem<br />
zuvor entwickelten Prozessor<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Gliederung<br />
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Entwurfsüberblick 5 / 50<br />
1 Einleitung<br />
2 Entwurfsüberblick<br />
3 Speicher- und IO-Interface für einen FPGA<br />
Modulübersichten<br />
FPGA-Testboard<br />
4 Assembler-Compiler/-Debugger und Memory-Viewer<br />
Compiler/Debugger<br />
Benutzeroberfläche<br />
5 Zusammenfassung und Ausblick<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Entwurfsüberblick 6 / 50<br />
Ausgangslage - Hardwareseite<br />
Kommunikation über die RS232-Schnittstelle zwischen dem FPGA und<br />
dem Computer<br />
- Speicher schreiben<br />
- Speicher lesen<br />
- Eingaben<br />
- Ausgaben<br />
- Baudrate von 9600<br />
Prozessor kann auf den Speicher zugreifen<br />
Assemblerprogramme können auf dem FPGA ausgeführt werden,<br />
welche über den Computer mit dem Benutzer interagieren<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Entwurfsüberblick 7 / 50<br />
Anforderungen - Hardwareseite<br />
Load / Store Befehle müssen möglich sein<br />
Die Kommunikation über RS232-Schnittstelle<br />
- Höhere Baudrate als 9600<br />
- FPGA Module zurücksetzten<br />
- Fehlererkennung bei der Übertragung<br />
Die Verwendung der möglichen Sensoren und Aktoren auf dem<br />
FPGA-Testboard<br />
Die Kompatibilität zu alten Prozessoren und alten<br />
Assemblerprogrammen<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Entwurfsüberblick 8 / 50<br />
Ausgangslage - Softwareseite<br />
Kompilieren und Debuggen von Assemblercode mit Hilfe einer<br />
Konsolenanwendung<br />
Verwendung des Assemblercompilers von Andre Hertwig:<br />
- Kompilieren von Assemblerprogrammen<br />
- Debuggen von Assemblerprogrammen<br />
Editieren und Übertragen von Assemblercode mit Hilfe einer grafischen<br />
Anwendung<br />
Der verwendete Assembler- und Memoryviewer von Carsten Giersbach<br />
bietet folgende Mglichkeiten:<br />
- Entwerfen, Laden und Speichern von Assemblerprogrammen<br />
- Kompilieren des Assemblercodes mit Hilfe des Assemblercompilers<br />
- Kommunikation mit einem angeschlossenen FPGA<br />
- Lesen, Schreiben sowie Visualisieren des Speichers vom FPGA<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Entwurfsüberblick 9 / 50<br />
Anforderungen - Softwareseite<br />
Durch praktische Erfahrungen besteht der Wunsch nach Erweiterungen:<br />
Reduzierung von zwei benötigten Programmen auf ein Programm, aber<br />
mit dem gesamten Funktionsumfang:<br />
- Editieren, kompilieren und debuggen von Assemblerprogrammen<br />
- Kommunikation mit einem FPGA<br />
- Lesen, schreiben sowie visualisieren des Speichers vom FPGA<br />
Alle Funktionen benutzbar in grafischer Oberfläche<br />
Unterstützung mehrerer Betriebssysteme<br />
Möglichkeiten zur Erweiterung bieten<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Entwurfsüberblick 10 / 50<br />
Verwendetes Schichtenmodell<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Gliederung<br />
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Speicher- und IO-Interface für einen FPGA 11 / 50<br />
1 Einleitung<br />
2 Entwurfsüberblick<br />
3 Speicher- und IO-Interface für einen FPGA<br />
Modulübersichten<br />
FPGA-Testboard<br />
4 Assembler-Compiler/-Debugger und Memory-Viewer<br />
Compiler/Debugger<br />
Benutzeroberfläche<br />
5 Zusammenfassung und Ausblick<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Einleitung<br />
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Speicher- und IO-Interface für einen FPGA 12 / 50<br />
Es entstanden viele neue Module<br />
- neue RS232-Übertragungsmodule<br />
- neue Aktor und Sensormodule<br />
Es entstanden viele neue Möglichkeiten durch neue Module<br />
- Reset der Module auf dem FPGA-Testboard über RS232-Port<br />
- Möglichkeit zur Interatkion über Switches<br />
- Möglichkeit zum Anzeigen von Daten über LEDS<br />
- Möglichkeit zum Anzeigen von Daten über 7-Segment-Anzeigen<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Übersicht<br />
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Speicher- und IO-Interface für einen FPGA ⊲ Modulübersichten 13 / 50<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Speicher- und IO-Interface für einen FPGA ⊲ Modulübersichten 14 / 50<br />
RS232rx<br />
Ermöglicht das Empfangen von Bits über den RS232-Port<br />
Mögliche Baudraten: 9600, 19200, 38400, 57600, 115200<br />
Momentan verwendete Baudrate: 115200<br />
Baudratenerzeugung aus 50Mhz Clock vom FPGA-Testboard<br />
Empfängt 1 Startbit, 8 Datenbits, 1 Stopbit<br />
Programmiert als Zustandsautomat<br />
Synchronisation mit ankommenden Startbit<br />
Angeschlossen am RS232-Modul<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Speicher- und IO-Interface für einen FPGA ⊲ Modulübersichten 15 / 50<br />
RS232rx Osszilloskopaufnahme<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Speicher- und IO-Interface für einen FPGA ⊲ Modulübersichten 16 / 50<br />
RS232tx<br />
Ermöglicht das Senden von Bits über den RS232-Port<br />
Mögliche Baudraten: 9600, 19200, 38400, 57600, 115200<br />
Momentan verwendete Baudrate: 115200<br />
Baudratenerzeugung aus 50Mhz Clock vom FPGA-Testboard<br />
Sendet 1 Startbit, 8 Datenbits, 1 Stopbit<br />
Programmiert als Ablaufdiagramm<br />
Synchronisiert sich mit dem Versenden eines Startbits<br />
Angeschlossen am RS232-Modul<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Speicher- und IO-Interface für einen FPGA ⊲ Modulübersichten 17 / 50<br />
RS232tx Osszilloskopaufnahme<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Speicher- und IO-Interface für einen FPGA ⊲ Modulübersichten 18 / 50<br />
CRC<br />
Berechnet CRC-Hash zu 8-Bit Datum<br />
CRC-Polynom: 0x2C<br />
Hamming-Distanz bei 16-Bit Datum: 3<br />
Angeschlossen am RS232-Modul<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
RS232<br />
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Speicher- und IO-Interface für einen FPGA ⊲ Modulübersichten 19 / 50<br />
Herzstück des RS232-Ports<br />
Verwaltet Anfragen an und vom RS232-Port<br />
Ist direkt mit dem IO-Controller verbunden<br />
Arbeitet auf Byte-Ebene, Bits werden vom RS232tx und RS232rx<br />
Modul verarbeitet<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
IO-Controller<br />
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Speicher- und IO-Interface für einen FPGA ⊲ Modulübersichten 20 / 50<br />
Zentrale BUS Verwaltungseinheit<br />
Verwaltet Kommunikation zwischen:<br />
- Prozessor - Speicher<br />
- Prozessor - RS232-Port<br />
- Prozessor - IO-Modulen<br />
- RS232-Port - Speicher<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Speicher- und IO-Interface für einen FPGA ⊲ Modulübersichten 21 / 50<br />
IO-Controller Blockschaltbild<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Speicher- und IO-Interface für einen FPGA ⊲ Modulübersichten 22 / 50<br />
IO-Bus<br />
Zwei Eingehende Leitungen<br />
io out, Datenbus vom Modul zum IO-Controller, 16 Bit breit<br />
io ready, Signalleitung vom Modul zum IO-Controller, 1 Bit breit<br />
Vier Ausgehende Leitungen<br />
io read, Signalleitung vom IO-Controller zum Modul, 1 Bit breit<br />
io write, Signalleitung vom IO-Controller zum Modul, 1 Bit breit<br />
io in, Datenbus vom IO-Controller zum Modul, 1 Bit breit<br />
io adr, Adressbus vom IO-Controller zum Modul, 1 Bit breit<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Möglichkeiten<br />
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Speicher- und IO-Interface für einen FPGA ⊲ FPGA-Testboard 23 / 50<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Speicher- und IO-Interface für einen FPGA ⊲ FPGA-Testboard 24 / 50<br />
LED-Modul<br />
Zeigt untere 7 Bits eines 16-Bit breiten Datums auf den LEDs an<br />
Speichert intern den angezeigten Wert<br />
Anzeige kann ausgelesen werden<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Speicher- und IO-Interface für einen FPGA ⊲ FPGA-Testboard 25 / 50<br />
7-Segment-Modul<br />
Zeigt Datum als Hexadezimalwert auf vier 7-Segment-Anzeigen an<br />
Speichert intern den angezeigten Wert<br />
Anzeige kann ausgelesen werden<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Speicher- und IO-Interface für einen FPGA ⊲ FPGA-Testboard 26 / 50<br />
Switches-Modul<br />
Liest Zustand von den acht Schaltern auf dem FPGA-Testboard aus<br />
Die Schalterzustände werden in den unteren acht Bit gespeichert<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Gliederung<br />
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Assembler-Compiler/-Debugger und Memory-Viewer 27 / 50<br />
1 Einleitung<br />
2 Entwurfsüberblick<br />
3 Speicher- und IO-Interface für einen FPGA<br />
Modulübersichten<br />
FPGA-Testboard<br />
4 Assembler-Compiler/-Debugger und Memory-Viewer<br />
Compiler/Debugger<br />
Benutzeroberfläche<br />
5 Zusammenfassung und Ausblick<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Assembler-Compiler/-Debugger und Memory-Viewer ⊲ Compiler/Debugger 28 / 50<br />
Einleitung - Assemblersprache<br />
Die Assemblersprache bietet:<br />
- Arithmetische Befehle<br />
- Bit Operationen<br />
- Sprünge<br />
- Tests auf ”0”<br />
- Labels<br />
- (Mehrzeilige)Kommentare<br />
- Breakpoints<br />
Beispiel:<br />
Multiplikation 3 * 4:<br />
1 l d r1 ,#0<br />
2 l d r2 ,#3<br />
3 l d r5 ,#1<br />
4 l d r6 ,#4<br />
5<br />
6 l o o p :<br />
7 !BREAK!<br />
8 add r1 , r2 , r 1<br />
9 sub r6 , r6 , r 5<br />
10 j n z #loop , r 6<br />
11 jmp #ende<br />
12 ende :<br />
13 h a l t<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Assembler-Compiler/-Debugger und Memory-Viewer ⊲ Compiler/Debugger 29 / 50<br />
Einleitung - Compiler<br />
Ein Compiler übersetzt Sprache A nach Sprache B, in diesem Fall:<br />
Assemblerprogramm ⇒ Maschinencode<br />
Er durchläuft dabei mehrere Schritte:<br />
1 Lexikalische Analyse (Überprüfung von Mustern)<br />
2 Syntaktische Analyse (Überprüfung der Grammatik)<br />
⊲ Muster und Grammatik definieren die gesamte Assemblersprache<br />
und deren Möglichkeiten<br />
Diese werden in der erweiterten Backus-Naur Form definiert (EBNF)<br />
Optional führt der Compiler zusätzlich zu den obigen Schritten<br />
Aktionen aus<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Assembler-Compiler/-Debugger und Memory-Viewer ⊲ Compiler/Debugger 30 / 50<br />
Muster der Assemblersprache<br />
1 MINUS : ’− ’ ;<br />
2 DIGIT : ( ’ 0 ’ . . ’ 9 ’ ) ;<br />
3 HEXDIGIT : ( ( ’A ’ . . ’ F ’ | ’ a ’ . . ’ f ’ ) | DIGIT ) ;<br />
4 LETTER : ( ’ a ’ . . ’ z ’ | ’A ’ . . ’Z ’ ) ;<br />
5 REGISTER : ( ’ r ’ | ’R ’ ) ( ’ 0 ’ . . ’ 7 ’ ) ;<br />
6 CHAR: ( ( LETTER) | ( DIGIT ) | ’ ’ | ’ $ ’ | ’#’ ) ;<br />
7 IDENT : ( ( LETTER) (CHAR) ∗) ;<br />
8 NUMBER: ( DIGIT ) +;<br />
9 HEXNUMBER: ( ’ 0 x ’ ( HEXDIGIT )+) ;<br />
10 LABEL : IDENT ’ : ’ ;<br />
11 WHITESPACE : ( ’ ’ | ’ \ t ’ | ’ \ f ’ )+ { $ c h a n n e l=HIDDEN ; } ;<br />
12 NEWLINE : ( ’ \n ’ | ’ \ r ’ )+ ;<br />
13 SLCOMMENT: ’ // ’ . ∗ NEWLINE ;<br />
14 MLCOMMENT: ’ /∗ ’ . ∗ ’ ∗/ ’ NEWLINE ;<br />
15 BREAKPOINT : ’ !BREAK! ’ ;<br />
Neu eingebaut im Zuge der Bachelorarbeit:<br />
MLCOMMENT - Mehrzeilige Kommentare<br />
BREAKPOINT - Abbruchpunkte für den Debugger<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Assembler-Compiler/-Debugger und Memory-Viewer ⊲ Compiler/Debugger 31 / 50<br />
Grammatik der Assemblersprache<br />
Ein Beispiel aus der Grammatik, der STORE Befehl:<br />
Dieser definiert alle Möglichkeiten, den STORE Befehl zu verwenden<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Assembler-Compiler/-Debugger und Memory-Viewer ⊲ Compiler/Debugger 32 / 50<br />
Grammatik der Assemblersprache<br />
So erkennt der Compiler den STORE Befehl st r1, r2:<br />
Dieser Befehl speichert den Inhalt des Registers 2 in Register 1<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Assembler-Compiler/-Debugger und Memory-Viewer ⊲ Compiler/Debugger 33 / 50<br />
Aktionen<br />
Je nach Muster oder Regel werden Aktionen ausgeführt:<br />
Werte aus Tabellen/Arrays lesen<br />
Werte in Tabellen/Arrays schreiben<br />
Berechnungen durchführen<br />
Ausgaben bzw Eingaben verarbeiten<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Assembler-Compiler/-Debugger und Memory-Viewer ⊲ Compiler/Debugger 33 / 50<br />
Aktionen<br />
Je nach Muster oder Regel werden Aktionen ausgeführt:<br />
Werte aus Tabellen/Arrays lesen<br />
Werte in Tabellen/Arrays schreiben<br />
Berechnungen durchführen<br />
Ausgaben bzw Eingaben verarbeiten<br />
Welche Aktion jeweils ausgeführt wird, hängt ab von:<br />
Erkannte Regeln<br />
Aktueller Schritt des Compilers<br />
Status des Debuggers<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Assembler-Compiler/-Debugger und Memory-Viewer ⊲ Compiler/Debugger 34 / 50<br />
Schritte des Compilers<br />
Der Compiler führt 3 Schritte durch, um ein Assemblerprogramm zu<br />
kompilieren:<br />
1 Die Label-Tabelle für die folgenden Schritte aufbauen<br />
2 Das Befehls-Array für den Debugger aufbauen<br />
3 Den Maschinencode in das Speicher-Array schreiben<br />
⊲ Nach Schritt 3 kann dann das Speicher Array in ein Memoryfile<br />
(*.mem) geschrieben und an den FPGA übertragen werden<br />
Optional kann der Debugger nach Schritt 3 aufgerufen werden<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Assembler-Compiler/-Debugger und Memory-Viewer ⊲ Compiler/Debugger 35 / 50<br />
Schritte des Compilers<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Assembler-Compiler/-Debugger und Memory-Viewer ⊲ Compiler/Debugger 36 / 50<br />
Aktionen des Compilers - Schritt 3<br />
Ein Ausschnitt des LOAD Befehls:<br />
1 l d :<br />
2 ( ’ l d ’ | ’LD ’ ) ( r d e s t=REGISTER ’ , ’ r s r c 1=REGISTER<br />
3 { I n s t r u c t i o n S e t . memory [ a d r e s s ] = I n s t r u c t i o n S e t . getOpCode ( ”<br />
LD” )<br />
4 + I n s t r u c t i o n S e t . getOpCode ( ”REG IMM” )<br />
5 + I n s t r u c t i o n S e t . getOpCode ( $ r d e s t . t e x t )<br />
6 + I n s t r u c t i o n S e t . getOpCode ( ”REG OFFSET” )<br />
7 + I n s t r u c t i o n S e t . getOpCode ( $ r s r c 1 . t e x t ) ;<br />
8 i f ( P r e f e r e n c e s . hexa == t r u e )<br />
9 I n s t r u c t i o n S e t . memory [ a d r e s s ] = I n s t r u c t i o n S e t .<br />
opCodeToHex ( I n s t r u c t i o n S e t . memory [ a d r e s s ] ) ; }<br />
10 |<br />
11 .<br />
12 .<br />
13 .<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Assembler-Compiler/-Debugger und Memory-Viewer ⊲ Compiler/Debugger 36 / 50<br />
Aktionen des Compilers - Schritt 3<br />
Ein Ausschnitt des LOAD Befehls:<br />
1 l d :<br />
2 ( ’ l d ’ | ’LD ’ ) ( r d e s t=REGISTER ’ , ’ r s r c 1=REGISTER<br />
3 { I n s t r u c t i o n S e t . memory [ a d r e s s ] = I n s t r u c t i o n S e t . getOpCode ( ”<br />
LD” )<br />
4 + I n s t r u c t i o n S e t . getOpCode ( ”REG IMM” )<br />
5 + I n s t r u c t i o n S e t . getOpCode ( $ r d e s t . t e x t )<br />
6 + I n s t r u c t i o n S e t . getOpCode ( ”REG OFFSET” )<br />
7 + I n s t r u c t i o n S e t . getOpCode ( $ r s r c 1 . t e x t ) ;<br />
8 i f ( P r e f e r e n c e s . hexa == t r u e )<br />
9 I n s t r u c t i o n S e t . memory [ a d r e s s ] = I n s t r u c t i o n S e t .<br />
opCodeToHex ( I n s t r u c t i o n S e t . memory [ a d r e s s ] ) ; }<br />
10 |<br />
11 .<br />
12 .<br />
13 .<br />
Durchführung:<br />
ld r1,r2 −−−−−→<br />
Compiler<br />
8842<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Assembler-Compiler/-Debugger und Memory-Viewer ⊲ Compiler/Debugger 37 / 50<br />
Debugger<br />
Erleichtert die Suche der Fehlerquelle (Prozessor oder<br />
Assemblerprogramm)<br />
Dient zur Fehlerüberprüfung des Assemblerprogramms<br />
Kann optional nach dem Kompilieren durchgeführt werden<br />
Simuliert den entworfenen Prozessor im Hardwarepraktikum<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Assembler-Compiler/-Debugger und Memory-Viewer ⊲ Compiler/Debugger 37 / 50<br />
Debugger<br />
Erleichtert die Suche der Fehlerquelle (Prozessor oder<br />
Assemblerprogramm)<br />
Dient zur Fehlerüberprüfung des Assemblerprogramms<br />
Kann optional nach dem Kompilieren durchgeführt werden<br />
Simuliert den entworfenen Prozessor im Hardwarepraktikum<br />
Neu im Zuge der Bachelorarbeit:<br />
Verarbeitet Ein- und Ausgaben<br />
Kann mit Breakpoints an gezielten Stellen angehalten werden<br />
Liefert Ausgabedateien für spätere Betrachtung<br />
Komplett in grafischer Oberfläche bedienbar<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Assembler-Compiler/-Debugger und Memory-Viewer ⊲ Compiler/Debugger 38 / 50<br />
Aktionen des Debuggers<br />
Erneut ein Ausschnitt des LOAD Befehls:<br />
1 l d :<br />
2 ( ’ l d ’ | ’LD ’ ) ( r d e s t=REGISTER ’ , ’ r s r c 1=REGISTER<br />
3 { I n s t r u c t i o n S e t . r e g i s t e r s [ I n t e g e r . p a r s e I n t ( I n s t r u c t i o n S e t . getOpCode<br />
( $ r d e s t . t e x t ) , 2 ) ] =<br />
4 I n s t r u c t i o n S e t . r e g i s t e r s [ I n t e g e r . p a r s e I n t ( I n s t r u c t i o n S e t . getOpCode (<br />
$ r s r c 1 . t e x t ) , 2 ) ] ; }<br />
5 |<br />
6 .<br />
7 .<br />
8 .<br />
Lädt den Inhalt eines Registers in ein anderes Register<br />
Wird erreicht durch Beschreiben des Register-Arrays<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Assembler-Compiler/-Debugger und Memory-Viewer ⊲ Benutzeroberfläche 39 / 50<br />
Einleitung - Benutzeroberfläche<br />
Bietet dem Anwender eine Schnittstelle zur Verwendung des<br />
Compilers/Debuggers<br />
Sollte Folgendes bieten:<br />
- Intuitiv<br />
- Übersichtlich<br />
- Einfach zu bedienen<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Assembler-Compiler/-Debugger und Memory-Viewer ⊲ Benutzeroberfläche 39 / 50<br />
Einleitung - Benutzeroberfläche<br />
Bietet dem Anwender eine Schnittstelle zur Verwendung des<br />
Compilers/Debuggers<br />
Sollte Folgendes bieten:<br />
- Intuitiv<br />
- Übersichtlich<br />
- Einfach zu bedienen<br />
⊲ Realisierbar durch Konsole oder grafische Oberfläche<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Assembler-Compiler/-Debugger und Memory-Viewer ⊲ Benutzeroberfläche 40 / 50<br />
Gegenüberstellung<br />
Konsole<br />
Vorteile:<br />
Schlank und ressourcenarm<br />
Wenig Abhängigkeiten<br />
Überall ausführbar<br />
Nachteile:<br />
Weniger Übersicht<br />
Kein integrierter Editor<br />
Nicht alle Funktionalitäten<br />
verfügbar<br />
Grafische Oberfläche<br />
Vorteile:<br />
Übersichtlich<br />
Einfach und intuitiv zu bedienen<br />
Bietet alle Funktionalitäten<br />
Nachteile:<br />
Benötigt grafische Abhängigkeiten<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Assembler-Compiler/-Debugger und Memory-Viewer ⊲ Benutzeroberfläche 40 / 50<br />
Gegenüberstellung<br />
Konsole<br />
Vorteile:<br />
Schlank und ressourcenarm<br />
Wenig Abhängigkeiten<br />
Überall ausführbar<br />
Nachteile:<br />
Weniger Übersicht<br />
Kein integrierter Editor<br />
Nicht alle Funktionalitäten<br />
verfügbar<br />
Grafische Oberfläche<br />
Vorteile:<br />
Übersichtlich<br />
Einfach und intuitiv zu bedienen<br />
Bietet alle Funktionalitäten<br />
Nachteile:<br />
Benötigt grafische Abhängigkeiten<br />
⊲ Beide Varianten realisiert<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Assembler-Compiler/-Debugger und Memory-Viewer ⊲ Benutzeroberfläche 41 / 50<br />
Grafische Oberfläche - Layout<br />
In 3 Registerkarten aufgeteilt:<br />
- Assembler Editor<br />
- Assembler Debugger<br />
- Memory-Viewer<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Assembler-Compiler/-Debugger und Memory-Viewer ⊲ Benutzeroberfläche 41 / 50<br />
Grafische Oberfläche - Layout<br />
In 3 Registerkarten aufgeteilt:<br />
- Assembler Editor<br />
- Assembler Debugger<br />
- Memory-Viewer<br />
⊲ Bedingt durch einen Arbeitsablauf im Hardwarepraktikum<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Assembler-Compiler/-Debugger und Memory-Viewer ⊲ Benutzeroberfläche 42 / 50<br />
Arbeitsablauf im Hardwarepraktikum<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Assembler Editor<br />
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Assembler-Compiler/-Debugger und Memory-Viewer ⊲ Benutzeroberfläche 43 / 50<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Assembler Debugger<br />
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Assembler-Compiler/-Debugger und Memory-Viewer ⊲ Benutzeroberfläche 44 / 50<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Memory-Viewer<br />
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Assembler-Compiler/-Debugger und Memory-Viewer ⊲ Benutzeroberfläche 45 / 50<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Assembler-Compiler/-Debugger und Memory-Viewer ⊲ Benutzeroberfläche 46 / 50<br />
<strong>Praktische</strong>s Beispiel - Rudimentärer Taschenrechner<br />
Es werden zwei Zahlen vom Computer eingelesen<br />
Fallentscheidung für Operation auf Zahlen<br />
- Switch 0: Addieren<br />
- Switch 1: Subtrahieren<br />
- Switch 2: Multiplizieren<br />
Ergebnis wird auf 7-Segment-Anzeige und zusätzlich am PC dargestellt<br />
Anzahl der Durchläufe wird auf den LEDs dargestellt<br />
Fallentscheidung für Programmende<br />
- Switch 7: Programmausführung beenden<br />
- Sonst: Zahlen vom Computer einlesen ...<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Assembler-Compiler/-Debugger und Memory-Viewer ⊲ Benutzeroberfläche 46 / 50<br />
<strong>Praktische</strong>s Beispiel - Rudimentärer Taschenrechner<br />
Es werden zwei Zahlen vom Computer eingelesen<br />
Fallentscheidung für Operation auf Zahlen<br />
- Switch 0: Addieren<br />
- Switch 1: Subtrahieren<br />
- Switch 2: Multiplizieren<br />
Ergebnis wird auf 7-Segment-Anzeige und zusätzlich am PC dargestellt<br />
Anzahl der Durchläufe wird auf den LEDs dargestellt<br />
Fallentscheidung für Programmende<br />
- Switch 7: Programmausführung beenden<br />
- Sonst: Zahlen vom Computer einlesen ...<br />
⊲ Vorführung<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Gliederung<br />
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Zusammenfassung und Ausblick 47 / 50<br />
1 Einleitung<br />
2 Entwurfsüberblick<br />
3 Speicher- und IO-Interface für einen FPGA<br />
Modulübersichten<br />
FPGA-Testboard<br />
4 Assembler-Compiler/-Debugger und Memory-Viewer<br />
Compiler/Debugger<br />
Benutzeroberfläche<br />
5 Zusammenfassung und Ausblick<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Zusammenfassung und Ausblick 48 / 50<br />
Was wurde erreicht<br />
Hardwareseite:<br />
Load / Store Befehle sind möglich<br />
Kommunikation über RS232-Schnittstelle<br />
Verwendung einiger Sensoren und Aktoren auf dem FPGA-Testboard<br />
Die Kompatibilität zu alten Prozessoren und alten<br />
Assembler-Programmen ist gegeben<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Zusammenfassung und Ausblick 48 / 50<br />
Was wurde erreicht<br />
Hardwareseite:<br />
Load / Store Befehle sind möglich<br />
Kommunikation über RS232-Schnittstelle<br />
Verwendung einiger Sensoren und Aktoren auf dem FPGA-Testboard<br />
Die Kompatibilität zu alten Prozessoren und alten<br />
Assembler-Programmen ist gegeben<br />
Softwareseite:<br />
Neuentwicklung der verwendeten Programme als Gesamtprogramm<br />
Neue Oberfläche, grafisch wie auf Konsole<br />
Funktionserweiterungen<br />
Unterstützung mehrerer Betriebssysteme<br />
Möglichkeiten zur Erweiterung<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Zusammenfassung und Ausblick 49 / 50<br />
Mögliche Erweiterungen<br />
Weitere IO-Module wie VGA-Modul<br />
Weitere Kommunikationsmodule für die Computer Schnittstelle<br />
(z.b. USB)<br />
Darstellung der Sensoren und Aktoren des FPGAs am PC<br />
(z.b. LEDs)<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Fragen<br />
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Zusammenfassung und Ausblick 50 / 50<br />
Irgendwelche Fragen ?<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)
Fragen<br />
Hardwarepraktikum 2.0 ⊲ Bachelorarbeiten<br />
⊲ Zusammenfassung und Ausblick 50 / 50<br />
Irgendwelche Fragen ?<br />
⊲ Vielen Dank für Ihre Aufmerksamkeit!<br />
Dennis Reuling und Simon Hardt (<strong>Universität</strong> <strong>Siegen</strong>)