28.02.2014 Aufrufe

Download/Link - Praktische Informatik - Universität Siegen

Download/Link - Praktische Informatik - Universität Siegen

Download/Link - Praktische Informatik - Universität Siegen

MEHR ANZEIGEN
WENIGER ANZEIGEN

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>)

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!