|
Teil | Aufgabe |
1 | Eine Finite State Machine zum Verschieben einer Zahl auf einer 4 stelligen
7-Segment-Anzeige wird realisiert. Simulation und Implementierung der Schaltung. |
2 | Die Tastenabfrage wird durch Änderung des Zählervergleichs verbessert. |
Aktion | |
1 | Starten Sie Xilinx ISE Design Suite.
Click auf "Start/Xilinx Design Tools/ISE Design Suite xx.y/ISE Design tools/xx-bit Project
Navigator". xx = 64 bei 64-bit OS, xx = 32 bei 32-bit OS. Wenn ein Projekt offen ist, bitte mit File-> Close Project schließen. |
2 | Kopieren Sie ihr Projektverzeichnis vom letzten Versuch in einen neuen Ordner: SS Laden Sie Ihr kopiertes Project des vorigen Versuches "File" -> "Open Project". |
3 |
Mit dem Bus 'an' wird ausgewählt, welche Stelle der 7-Segmentanzeige aktiv ist. an <= "1101" aktiviert durch die eine '0' die 3. Stelle der Anzeige. Mit Hilfe der Taster "btn(2)" und "btn(3)" soll 'an' so verändert werden, dass die angezeigte Zahl nach rechts oder links wandert. Die '0' soll nach rechts oder links geschoben werden. Als Ausgangsbasis für die Zustandsmaschine kopieren Sie den Abschnitt des letzten Versuchs.
Statt einem Signal "dp" und "dpi", wollen Sie den Bus "an" und "ani" benutzen.Ergänzen und modifizieren Sie den Quelltext entsprechend. Was müssen Sie tun um "ani" verwenden zu können? Die Taster "btn(2)" und "btn(3)" sollen abgefragt werden. Dazu können Sie eine weitere "if" Abfrage verwenden. Überlegen Sie wo dieser "if"-Block eingefügt werden muss. Da die Zustände von an abzählbar sind: an="1110","1101","1011","0111" können Sie für jeden Taster jeweils ein "case"-Konstrukt verwenden. Überlegen Sie, wo dieser "case"-Block eingefügt werden muss.
Modifizieren Sie Ihren Code und dokumentieren Sie Ihn hier: |
4 | Simulieren Sie Ihren Code.
Sie müssen dazu die Testvektoren auch für btn(2) und (3) erstellen. In welche Datei, an welcher Stelle fügen Sie die Testvektoren für btn(2) und (3) ein? Wie lange soll btn(2) aktiv sein. Wann soll btn(3) aktiv sein? |
5 | Simulieren Sie, genauso wie im letzten und vorletzten Versuch (Schritt 10), die Funktion. Stellen Sie sicher, dass alle Testvektoren sichtbar sind. Dokumentieren Sie ihr Ergebnis und fügen Sie hier den Screenshot ein: Remove Verhält sich die Simulation wie erwartet? |
6 | Implementieren Sie die Funktion auf dem Basys 2 Board.
Transferieren Sie die Bitdatei mit Adept auf das Board und testen Sie die Schaltung. Dokumentieren Sie hier Probleme und Ergebnisse: |
7 | Für die Tastenabfrage wird ein modulo m Zähler benötigt.
Um mathematische Operationen zu relaisieren wird erst eine
Bibliothek am Anfang der VHDL Datei eingefügt.
Die Signale 'en' und 'count' werden zwischen COMPONENT und BEGIN eingefügt:
Dann kann ein modulo m Zähler realisiert werden:
Der Zähler generiert ein enable 'en' Signal.
Verwenden Sie nun dieses Signal zur Tasterabfrage.
Ein Taktzyklus ist bei 50Mhz 20ns lang. Der Vergleich mit der Dualzahl m := "10000000000000000000000" (Dezimal: \( 2^{23} = 8 \cdot 10^6 \) ) bewirkt, das das en Signal alle \( 20 ns \cdot 8 \cdot 10^6 = 160 ms \) erzeugt wird und die Taster abgefragt werden. Ändern Sie den Wert der Dualzahl m so, dass die Taste optimal abgefragt wird. Erläutern Sie hier das Vorgehen, Probleme und Ergebnisse (Optimale Dualzahl): |