HES Praktikum, Aufgabe 1a
Drucktaste und LED

Aufgabenstellung

Beim Druecken eines Tastschalters leuchtet eine LED auf, die beim Loslassen wieder ausgeht.

Vorschlag fuer eine Reihe von Teilzielen

1. Sie laden das Manual des Boards herunter und studieren die Eigenschaften des Boards. Es kann spaeter in Zweifelsfaellen nuetzlich sein, die konkrete Beschaltung von Bausteinen im Schaltplan nachzusehen.

2. Sie laden vom Hersteller des FPGAs (Intel) das Hardware-Design-Paket Quartus 20.1.1 herunter (waehlen Sie Edition Lite, Release 20.1.1, Betriebssystem nach Wahl) und installieren Sie es auf Ihrem Rechner.

3. Jetzt kommt eine heikle Angelegenheit: VHDL vs. Verilog... Wenn Sie Spass haben wollen, dann suchen Sie nach "verilog vs vhdl"; speziell der "Contest" und die Reaktionen darauf sind interessant... ;-)

Ich habe die ersten Praktikumsaufgaben sowohl mit VHDL als auch mit Verilog geloest und konstatiere: die Wahl der Sprache ist nebensaechlich. Die wesentliche Schwierigkeit (bei beiden) liegt im Begreifen der Tatsache, dass das KEINE Programmiersprachen sind, sondern Sprachen zum Beschreiben von PARALLEL ARBEITENDER Hardware. Allenfalls ist Verilog syntaktisch ein bisschen einfacher, weil es naeher bei C liegt als VHDL, das eher an ADA erinnert.

Nun haben Sie die Qual der Wahl. Mein Rat waere: Nehmen Sie Verilog. Aber ich kann auch mit VHDL leben, wobei Sie dann bei Problemen eher auf sich allein gestellt sind. Vielleicht noch eine kleine Entscheidungshilfe: Fuer Verilog gibt's den guten freien Simulator Icarus , mit GHDL fuer VHDL habe ich keine Erfahrung.

Hier ist eine Verilog-Einfuehrung , und hier eine andere . Sehr nuetzlich sind auch diese Codierungsrichtlinien fuer blockierende und nichtblockierende Zuweisungen, sowie diese Hinweise zur Codierung von FSMs.

4. Es folgt das eigentliche Loesen der Praktikumsaufgabe:
a) Einrichten eines Projektes
- Benutzen Sie den "New Project Wizard"
- Family: Cyclone IV E
- Specific device selected in list
- Device: EP4CE115F29C7
b) Anlegen und Hinzufuegen eines Verilog-Moduls
- Pushbutton (Input) steuert ueber einen Inverter eine LED (Output) an
- Warum muss dort ein Inverter (und keine einfache Verbindung) hinein?
- Fuegen Sie die Datei zum Projekt hinzu (Project/Add Files)
c) Anpassen und Hinzufuegen des "Pin Assignment File"
- Waehlen Sie einen Druckknopf und eine LED aus
- Aktivieren Sie die entsprechenden Zeilen im Assignment File
- Tragen Sie die Namen der Signale aus b) in den Assignment File ein
- Lesen Sie die Datei ein (Assignments/Import Assignments)
d) Hinzufuegen des "Clock Constraint File"
- Enthaelt im Moment nur auskommentierte Zeilen (keine Clock vorhanden)
- Fuegen Sie die Datei zum Projekt hinzu (Project/Add Files)
e) Generieren des Bitstrings fuer den FPGA
- Start Compilation (erzeugt einen .sof-File - den eigentlichen Bitstring)
- Im "Programmer" konvertieren Sie den .sof-File in einen .svf-File
f) Uebertragen des .svf-Files zum FPGA-Board
- Genaueres im Praktikum
g) Ausprobieren, ob Ihre Schaltung das macht, was sie soll
- Genaueres im Praktikum

HES Praktikum, Aufgabe 1b
7-Segment-Lauflicht

Aufgabenstellung

Konstruieren Sie ein "Lauflicht", das auf einer 7-Segment-Anzeige wie beim Schreiben einer "8" umlaeuft. Die Umlaufrichtung soll durch einen Tastschalter steuerbar sein.

Hinweise

1. Drei Bits steuern einen Decoder fuer die 7-Segment-Anzeige "reihum" an:
- 0: oberer Querbalken
- 1: linker oberer Laengsbalken
- 2: mittlerer Querbalken
- 3: rechter unterer Laengsbalken
- 4: unterer Querbalken
- 5: linker unterer Laengsbalken
- 6: mittlerer Querbalken
- 7: rechter oberer Laengsbalken

2. Die Schaltung aus 1. wird mit einem Zaehler angesteuert, der einen "Umlauf" des Lauflichtes in etwa 1.34 sec durchfuehrt. Wie viele Zaehlerstufen sind also notwendig? Wo muessen die drei Bits fuer den Decoder abgegriffen werden? Was muss man aendern, wenn sich beim Druecken des Pushbuttons die Laufrichtung umkehren (und beim Loslassen wieder normalisieren) soll?

3. Verwenden Sie in dieser Aufgabe (wie in allen folgenden Aufgaben) eine nicht-auskommentierte Version des "Clock Constraint File", so dass eine korrekte Analyse des zeitlichen Verhaltens Ihrer Schaltung von der Synthese-Software durchgefuehrt werden kann.

ACHTUNG, WICHTIG!

Sie MUESSEN sich IMMER erst ENTLADEN, bevor Sie irgendeinen Teil des FPGA-Bords beruehren! Nichtbeachtung kann zur Zerstoerung der Bauteile durch statische Aufladung fuehren!