Im letzten Versuch haben Sie Flipflops, einen kleinen Automaten und einen Zähler entworfen. In diesem Versuch kombinieren Sie die Elemente und bauen ein System bestehend aus Zähler und Automat.
Das Ziel des Versuchs ist eine LED Blinkschaltung, bei der die Blinkphasen unterschiedlich lang sind. Weiterhin bauen Sie eine Suchmaschine, die in einem Datenstrom eine bestimmte Bitfolge sucht. Aktualisieren Sie Ihre Datenbasis vom gitserver mit
git pull
Bei der LED Blinkschaltung soll ein Blinkmuster auf den roten LEDS erzeugt werden. Die Blinkmuster haben eine unterschiedliche zeitliche Länge. Die Schaltung soll die Blinksequenz starten, wenn der Schalter SW(0) auf '1' geschaltet wird. Wenn die Blinksequenz beendet ist, muss der Schalter erst auf '0' zurückgeschaltet werden, bevor die Blinkfolge neu gestartet werden kann. Der Takt für die Schaltung kommt aus dem 50 MHz Oszillator, der sich auf dem DE1 Board befindet. Der asynchrone Reset soll vom Taster KEY(0) kommen. Die Blinksequenz soll so aussehen:
"1100000000" (0.5s) -> "0000110000" (2s) -> "0000000011" (0.5s)
Wenn keine Blinksequenz aktiv ist, dann sollen die LEDS “1010101010” anzeigen. Die unterschiedlich langen Zeiten sollen durch einen ladbaren Rückwärtszähler realisiert werden, der mit zwei unterschiedlichen Startwerten geladen werden kann. Der Zähler hat ein Ausgangssignal “done_o”. Wenn der Zählerstand 0 ist, dann ist das Ausgangssignal done_o '1'. Die Ladesignale für den Zähler sollen von einem Automaten erzeugt werden.
Im git Projekt sind schon einige Dateien vorbereitet.
Im Kapitel Reichardt, Digitaltechnik und digitale Systeme, Entwurf von Zustandsautomaten wird die Beschreibung von Zustandsautomaten in VHDL beschrieben. Die Datei play_rlt.vhd enthält die Beschreibung eines Mooreautomaten mit einem VHDL Designpattern für Automaten. Bauen Sie jetzt den LED Blinkautomaten!
Die Suchmaschine sucht in einem Datenstrom eine bestimmte Bitsequenz. Zu dem Projekt gehören die folgenden Dateien.
Weiterhin gibt es die Verzeichnisse “pnr/de1_seq” und “sim/de1_seq” für die Synthese und die Simulation. Der Bitgenerator basiert auf einem linearen rückgekoppelten Schieberegister.
Jetzt können Sie die Schaltung mit dem Bitgenerator synthetisieren und auf das FPGA laden. Das Taktsignal und der Bitstrom werden auf dem Expansionport ausgegeben
Als nächstes soll die Schaltung um den Sequenzdetektor erweitert werden.
Jetzt können Sie die Schaltung erneut synthetisieren und auf das FPGA laden.
Jetzt soll der Erkennungsautomat erweitert werden um eine lange Sequenz zu erkennen. Entwerfen Sie einen Automaten, der eine Sequenz “111” dann 21 Nullen und dann “101” erkennt!
Erweitern Sie die Schaltung um eine Zählschaltung, die zählt wie häufig die Bitfolge “0110100” von oben gefunden wird. Die Anzahl der gefundenen Sequenzen soll als Hexadezimalzahl auf den vier Siebensegmentanzeigen des Boards dargestellt werden.