Hardware fuer Eingebettete Systeme WS 17/18

(nach Prof. Dr. H. Geisse)

Sie wollten schon immer mal eine eigene CPU bauen? Sie wuenschten sich, Sie koennten Ihre eigenen Spezial-Befehle entwerfen? Sie traeumten schon einmal von einem eigenen Daddelspiel-Controller? Dann sind Sie hier richtig... ;-)

Achtung: Dies ist eine Veranstaltung des Masterstudiengangs. Rechnen Sie also mit erheblichem Stoffumfang in der Vorlesung und weit ueberdurchschnittlichem Zeitaufwand zum Bewaeltigen der Praktikumsaufgaben.

Motivation

Eingebette Systeme sind Rechner, die tief im Inneren von Maschinen aller Art ihren Dienst versehen, meistens ohne nach aussen als Rechner in Erscheinung zu treten. Sie ermoeglichen den so ausgestatteten Maschinen ein ausserordentlich flexibles Verhalten, sowie die Moeglichkeit, allein durch Austausch von Software das Verhalten anzupassen (u.a. auch Fehler zu berichtigen). Wegen der hohen heute moeglichen Integrationsdichte packt man haeufig einen Prozessor mitsamt der von der Maschine sonst noch benoetigten digitalen Hardware auf einen Chip und entwirft somit Hard- und Software in enger Abstimmung ("Hardware/Software-Codesign").

Literatur

1. John F. Wakerly: "Digital Design, Priciples & Practices", Prentice-Hall
2. David A. Patterson, John L. Hennessy: "Computer Organization & Design, The Hardware/Software Interface", Morgan Kaufmann
3. Peter J. Ashenden: "The Designer's Guide to VHDL", Morgan Kaufmann
4. Donald E. Thomas, Philip R. Moorby: "The Verilog Hardware Description Language", Kluwer Academic Publishers
(jeweils neueste Auflage)

Vorlesung

1. Hardware-Entwurf
Kombinatorische Digitalschaltungen ("Schaltnetze")
Sequentielle Digitalschaltungen ("Schaltwerke")
Moore- und Mealy-Automaten
Speicher und programmierbare Logikbausteine

2. Rechnerarchitektur
Performance-Messung
Instruction-Set-Architecture
Arithmetik
Datenpfad und Steuerung
Pipelining
Caches
Virtueller Speicher
Eingabe/Ausgabe

3. Eingebettete Systeme und ihre Umgebung
Messprinzipien
Sensoren
Wandler
Aktoren
Kommunikation

4. Werkzeuge (werden im Praktikum behandelt)
Hardware-Beschreibungssprachen
Simulatoren
Synthesewerkzeuge

Praktikum

Organisation: Zweiergruppen (auch einzeln moeglich)
Beratungen zwischen den Gruppen werden gerne gesehen
Kopieren von Code ist aber natuerlich verboten

Ziel: Aufbau des kleinen 32-Bit-Rechners ECO32e in einem FPGA
[in eckigen Klammern: geplantes Ende der Bearbeitung]

Alternativ kann jede Gruppe fuer sich entscheiden, ob lieber ein eigenes Projekt in Angriff genommen werden soll. In diesem Fall muessen Sie anstelle der Loesung zur Aufgabenstellung 4b ein Konzeptpapier abgeben, das das Ziel Ihres Projekts definiert und einen Weg aufzeigt, wie man in der verbleibenden Zeit zu diesem Ziel gelangen kann. Insbesondere muessen woechentliche (oder mindestens 14-taegige) Meilensteine definiert werden, damit eine Kontrolle ueber den Fortschritt des Projekts moeglich wird.
Anregungen fuer Themen gibt's hier: Experiences Teaching an FPGA-based Embedded Systems Class

Aufgabe 1 (Drucktaste und LED) [24.10.17]
Aufgabe 2 (7-Segment-Lauflicht) [24.10.17]
Aufgabe 3 (VGA-Testbild) [07.11.17]
Aufgabe 4a (Character-Display I) [14.11.17]
Aufgabe 4b (Character-Display II) [14.11.17]
Aufgabe 5 (Keyboard) [21.11.17]
Aufgabe 6 (Bus und Bus-Interface fuer Display und Keyboard) [28.11.17]
Aufgabe 7 (Externes Flash-ROM) [05.12.17]
Hier gibt's Loesungsvorschlaege zu den Aufgaben bis 7...:)
Aufgabe 8a (Simulation der CPU I: Instruction-Fetch, Register-Operationen) [12.12.17]
Aufgabe 8b (Simulation der CPU II: Bedingte und unbedingte Spruenge) [19.12.17]
Aufgabe 8c (Simulation der CPU III: Load- und Store-Operationen) [16.01.18]
Aufgabe 9 (Integration der CPU, Fertigstellung von ECO32e) [23.01.18]

Moegliche Zusatztermine in der ersten Januarwoche 2018

Deadline Projektabgabe und Demonstration: 23.01.18

Hier gibt's Musterloesungen - aber nur als Bitstrings... ;-)

Hier noch einmal alle wichtigen Links .

Leistungsnachweis

Klausur oder (bei wenigen Teilnehmern) muendliche Pruefung
Teilnahmevoraussetzung: anerkannte Hausuebung (d.h. Projekt laeuft)