This is an old revision of the document!
Versuch 3
Dieser Versuch f眉hrt sequentielle Schaltungen, d.h. Schaltungen mit Flipflops ein.
窜盲丑濒别谤
Die erste sequentielle Schaltung ist ein Modulo 256 窜盲丑濒别谤, d.h. ein 窜盲丑濒别谤, der von 0 bis 255 z盲hlt und dann wieder von vorn mit 0 beginnt. Der 窜盲丑濒别谤stand soll als hexadezimale Ausgabe auf der 7-Segment Anzeige ausgegeben werden. Gleichzeitig soll der 窜盲丑濒别谤stand bin盲r auf die roten LEDs ausgegeben werden.
Im ersten Schritt wird der 窜盲丑濒别谤 mit der Taste KEY0 getaktet und kann mit KEY1 zur眉ckgesetzt werden. Der Code f眉r den 窜盲丑濒别谤 ist hier:
Aufgaben Teil 1
- Erstellen Sie ein Verzeichnis p1
- Laden Sie den Code in dieses Verzeichnis.
- 脺bernehmen Sie bin2seg.vhd aus dem letzten Versuch. Erg盲nzen Sie die Ziffern a-f.
- Simulieren Sie den Code mit Modelsim und erl盲utern Sie die Funktion.
- 脛ndern Sie den Code in counter.vhd um die Funktion des 窜盲丑濒别谤s zu erhalten.
- Simulieren Sie die neue Schaltung und 眉berpr眉fen Sie die Funktion.
- Synthetisieren Sie die Schaltung mit Quartus und laden Sie die Schaltung auf das FPGA.
- Demonstrieren Sie die Funktion
- Modifizieren Sie die Schaltung und takten Sie die Schaltung mit SW0.
- 脺berpr眉fen Sie die Funktion auf dem Board
窜盲丑濒别谤 mit Enable Signal
Bislang wird der 窜盲丑濒别谤 direkt mit dem Taster KEY0 getaktet. Die Schaltung soll jetzt so umgebaut werden, dass als Systemtakt f眉r alle Flipflops ein 50 MHz Takt von einem Taktgenerator vom Board verwendet werden soll. Weiterhin soll die Schaltungaber jeweils um eins hochz盲hlen, wenn der Taster KEY0 gedr眉ckt wird.
Die Flankenerkennung
Das Problem ist, dass auch ein sehr kurzes Dr眉cken des Tasters KEY0 um Gr枚脽enordnungen langsamer als die Taktperiode des 50 MHz Taktes ist. Zur L枚sung des Problems m眉ssen Sie eine Schaltung entwerfen, die nur f眉r die Dauer eines Taktsignals ein Signal erzeugt, wenn sich der Zustand des Signals KEY0 von 0 nach 1 盲ndert.
Die Schaltungsidee ist die folgende:
- Speichern Sie den Zustand des Signals KEY0 in einem Flipflop, das mit dem Systemtakt von 50 MHz getaktet ist.
- Am Ausgang dieses Flipflops ist das Signal KEY0 um eine Taktperiode gegen眉ber dem Eingang des Flipflops verz枚gert.
- Wenn zwischen dem Ausgang des Flipflops und dem Signal KEY0 ein Unterschied besteht, dann hat sich das Signal KEY0 offensichtlich ver盲ndert.
- Werten Sie diesen Unterschied aus und erzeugen Sie ein Signal von der Dauer eines Taktes.
Das Enablesignal
Jetzt haben Sie ein Signal, dass einen Takt lang aktiv ist, wenn sich das Signal KEY0 von 0 auf 1 盲ndert. Nun muss der 窜盲丑濒别谤 noch so ver盲ndert werden, dass er nur dann z盲hlt, wenn ein 鈥渆nable鈥� signal aktiv ist.
Der noch nicht ganz fertige Code f眉r die Schaltung ist hier:
Aufgaben Teil 2
- Erstellen Sie ein neues Verzeichnis p2 und laden Sie die Dateien in dieses Verzeichnis
- 脺bernehmen Sie counter.vhd und bin2seg.vhd aus dem Verzeichnis p1.
- F眉gen Sie ein neues Signal 鈥渆nable_i鈥� in die Entity von counter ein.
- Erg盲nzen Sie die Funktionalit盲t von counter so, dass er nur noch z盲hlt, wenn dieses 鈥渆nable_i鈥� Signal 鈥�1鈥� ist.
- Erg盲nzen Sie das neue Modul edge so, dass die steigende Flanke von key_i erkannt werden.
- Verbinden Sie auf dem Toplevel das Module edge und den counter.
- Simulieren Sie die Schaltung
- Laden Sie die Schaltung auf das FPGA