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 unseres Boards herunter und studieren die Eigenschaften dieses Boards. Sie sollten wissen, welche Bausteine auf dem Board welche Funktion erfuellen. Beachten Sie bitte auch das Manual der USB-Schnittstelle (da wir den FPGA-Konfigurationsstring mittels USB zum Board herunterladen).

2. Sie studieren die Anleitung von XESS zum Werkzeugpaket ISE WebPack , das vom FPGA-Chip-Hersteller XILINX zur Verfuegung gestellt wird und das Sie auch kostenlos von dort auf Ihrem privaten Rechner installieren sollten, um die Praktikumsaufgaben vernuenftig vorbereiten zu koennen. ACHTUNG: Laden Sie NICHT die neueste Version dieser Tools ("Vivado") herunter, sondern gehen Sie auf http://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/design-tools.html und waehlen Sie dort die ISE-Version 14.7, in der auch die etwas aelteren FPGAs noch unterstuetzt werden.

3. Jetzt kommt eine heikle Angelegenheit: VHDL vs. Verilog... Wenn Sie Spass haben wollen, dann werfen Sie Google an und suchen 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:
- Einrichten eines Projektes
- Anlegen eines Verilog-Moduls
- Generieren des Bitstrings fuer den FPGA
- Uebertragen des Bitstrings zum FPGA-Board
- Ausprobieren, ob Ihre Schaltung das macht, was sie soll

5. Bitte beachten Sie:
- unser FPGA ist ein xc3s1000-4ft256
- in den "Configuration Options" I/O-Pins auf "float" stellen
- in den "Startup Options" Startup-Clock auf "JTAG Clock" stellen

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 jetzt 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 soll?

ACHTUNG, WICHTIG!

Sie MUESSEN sich IMMER erst ENTLADEN, bevor Sie irgendein Teil des FPGA-Bords beruehren! Am besten ist es, wenn Sie mit Ihren Fingern (alle, nacheinander!) das Gehaeuse des PS/2-Steckers anfassen und sich danach nicht mehr von der Stelle ruehren. Nichtbeachtung kann zur Zerstoerung der Bauteile durch statische Aufladung fuehren!