Länge: 35:20 |
0:0:40 Aufgabenbeschreibung 0:1:20 Anweisungen an 0:2:50 Kopieren des process 0:4:10 btn(2), btn(3) 0:5:0 Case Anweisung btn(2) 0:6:30 Case Anweisung btn(3) 0:8:0 Dokumentation 0:9:45 Simulation 0:10:20 btn(2) setzen 0:11:30 btn(3) 0:12:0 Simulationsergebnis weiter/länger simulieren 0:14:30 Diskussion des Ergebnisses 0:16:0 Implementierung 0:17:25 Program device 0:17:50 Test der Buttons 0:19:40 Submit |
|
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 Vivado.
Click auf "Vivado 2019.1". |
2 | Laden Sie Ihr Project des vorigen Versuches "File" -> "Open Project". Editieren Sie die Hauptdatei: "Versuch3.vhd" |
3 |
Suchen Sie die Zuweisung für den Bus 'an' im Quelltext. 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, 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 3 Board. Flow navigator, Program and Debug, Generate bitstream Open hardware manager, open target, program device. 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): |