Automatenbeschreibung in VHDL
Um die Automatenbeschreibung in VHDL kennenzulernen gibt es ein Spiel im Projektverzeichnis. Dieses Spiel sollen Sie analysieren.
Im Kapitel Reichardt, Digitaltechnik und digitale Systeme, Entwurf von Zustandsautomaten wird die Beschreibung von Zustandsautomaten in VHDL beschreiben.
Analysieren Sie das Design “play_rtl.vhd” und “de1_play_structure.vhd”.
- Zeichnen Sie einen Schaltplan von de1_play_structure.vhd
- Beschreibt der Zustandsautomat in “play_rtl.vhd” einen Moore- oder einen Mealyautomaten? Warum?
- Welche Ein- und Ausgänge hat der Automat?
- Zeichnen Sie den Zustandsgraphen des Automaten anhand des VHDL Codes.
- Simulieren Sie den Automaten mit der vorbereiteten Testbench t_play im Verzeichnis sim/play
- Zeichnen Sie ein Timingdiagramm auf dem der Übergang vom Zustand “chance_s” in “hit0_s” zu sehen ist.
- Beschreiben Sie wie das Spiel funktioniert! Machen Sie eine Skizze um das Spiel zu erläutern.
- Synthetisieren Sie das Design im Verzeichnis pnr/de1_play.
- Analysieren Sie den Zustandsautomaten mit “Tools → Netlist Viewer → State Machine Viewer”. Schauen Sie im Tab “Encoding” nach.
- Wie viele Flipflops benötigt der Zustandsautomat?
- Ändern Sie die Einstellung Assignments → Settings → Analysis & Synthesis Settings → More Settings → State Machine Settings und vergleichen Sie die Syntheseergebnisse bei “one-hot” und “minimal-bits”.
Spiel erweitern
Im folgenden soll das Spiel modifiziert werden. Dazu sind hier einige Spielvarianten dargestellt. Zeichnen Sie für den modifizierten Entwurf den Zustandsgraphen auf Papier. Ändern Sie den VHDL Code für den Automaten und die Testbench des Automaten. Verifizieren Sie den Automaten im Simulator und auf dem FPGA.
Variante 1 - Wartesekunde
Modifizieren Sie das Spiel derart, dass bei einem Tastendruck nicht sofort mit der alternativen Blinkfolge begonnen wird, sondern erst nach Ablauf der Wartesekunde.
Variante 2 - Doppelklick
Um in die alternative Blinksequenz zu kommen soll man nicht einmal, sondern zweimal innerhalb von einer Sekunde den Taster drücken.
Variante 3 - Langer Ausgang
Nach Erreichen der alternativen Blinksequenz soll man nicht sofort bei einem Tastendruck wieder in die Standardblinkfolge zurückkehren. Stattdessen soll nach dem Tastendruck erst noch bis zum Ablauf der Wartesekunde die aktuelle LED wetterleuchten. Danach soll die andere LED aus der alternativen Blinksequenz für eine Sekunde leuchten und erst dann soll wieder die Standardblinkfolge leuchten.
Variante 4 - Ausgang alle LEDs
Nach Erreichen der alternativen Blinksequenz durch einen Tastendruck soll die alternative Blinkfolge dann verlassen werden, wenn während der Leuchtdauer jeder LED aus der alternativen Blinksequenz mindestens einmal die Taste gedrückt wurde.
Variante 5 - Klick bei Eins blockt
Wenn während der Standardblinkfolge während der Leuchtdauer der ersten LED eine Taste gedrückt wird, dann soll bei der nächsten möglichen Gelegenheit um mit einem Tastendruck die alternative Blinkfolge zu aktivieren, der Tastendruck wirkungslos bleiben. Durch Drücken der Taste während der Leuchtdauer der ersten LED wird also das Verlassen der Standardblinkfolge für einen Durchgang blockiert und erst beim darauf folgenden Durchgang kann man wieder durch einen Tastendruck zum richtigen Zeitpunkt in die alternative Blinkfolge gelangen.
Variante 6 - Eins / Zwei / Drei
Man kommt in die alternative Blinkfolge, wenn man während der Leuchtdauer der ersten LED die Taste drückt, dann bei der zweiten LED die Taste drückt und dann bei der dritten LED die Taste drückt. Wenn man das Drücken bei einer LED verpasst, muss man wieder mit dem Drücken bei der ersten LED anfangen.
Variante 7 - Zweimal vorher
Man kann die alternative Blinkfolge durch Tastendruck während der Leuchtdauer der mittleren LED nur dann erreichen, wenn man während der Leuchtdauer der zweiten LED genau zweimal die Taste gedrückt hat.
Variante 8 - Spring drüber
Wenn man während der Leuchtdauer der zweiten LED den Taster drückt, dann wird nach Ablauf der Wartesekunde das Aufleuchten der mittleren LED übersprungen.