Länge: 35:20 |
0:0:58 Start Vivado 0:1:37 HEX2LEDAX 0:2:17 Gleichungssuche 0:5:15 Fehleranzeige 0:6:3 Run Simulation 0:7:4 Screenshot/Foto 0:7:20 Program and Debug 0:8:30 Open Target: Programmierung Fpga 0:9:0 Verifikation der Funktion 0:10:26 IP catalog wählen 0:11:17 Suchen nach dem Counter (Zähler) 0:13:17 Instantion template zum Einbau der Schaltung 0:13:59 Component einbauen 0:14:40 Signal deklarieren 0:15:34 LED anschliessen 0:16:11 Pins aktivieren 0:16:45 Anpassen der Simulationsdatei 0:17:40 Buttons einführen 0:19:20 Zustandsmaschine 0:21:6 Test vektoren einführen 0:23:0 Simulation starten 0:23:45 Diskussion Simulation 0:25:40 Zweites Umschalten 0:27:0 Text eintragen 0:28:0 Synthesis starten 0:29:0 Programmierung des Boards 0:31:0 Submit |
|
Teil | Aufgabe |
1 | Einfügen einer logischen Gleichung für Segment E der Anzeige. Simulation und Implementierung der Schaltung. |
2 | Der Taster btn(0) soll die Schaltung initialisieren, den Punkt "dp" anschalten. Der Taster btn(1) soll die Anzeige dp sicher an und aussschalten. Der Takt (CLK) auf dem Basys 3 Board ist 100 MHz. Mit dieser Frequenz können Schaltwerke laufen. Um langsamere Abläufe zu realisieren, werden clock enable (CE) Signale benutzt. Mit einem Zähler kann man den Systemtakt herunter teilen. Es wird ein Zähler benutzt, um ein CE Signal zu erzeugen und einen Taster abzufragen. Das CE Signal soll ungefähr 4 mal in der Sekunde für einen Clockzyklus gesetzt werden. |
Aktion | |
1 | Starten Sie Xilinx Vivado.
Click auf "Vivado 2019.1". |
2 | Bei Bedarf kopieren Sie ihr Projektverzeichnis vom USB Stick in ein lokales Verzeichnis. Laden Sie Ihr Project des vorigen Versuches "File" -> "Open Project". |
3 | Durch einen Doppelklick auf "FUN0 - HEX2LEDAX" öffnen Sie die VHDL Datei HEX2LEDAX.vhd. Suchen Sie die Zeile für die LED(4). |
4 | Öffnen Sie den Internetbrowser Firefox und suchen Sie nach Segmentanzeige, Wikipedia. Suche Sie die logische Funktion für Segment E heraus und erstellen Sie den entsprechenden VHDL code. Dokumentieren Sie hier ihr Ergebnis: |
5 | Simulieren Sie genauso wie im letzten Versuch die Funktion. Linke Spalte: Simulation -> Run Simulation Stellen Sie sicher, dass alle Testvektoren sichtbar sind. Dokumentieren Sie ihr Ergebnis und fügen Sie hier den Screenshot ein: Remove Verhalten sich die Eingangssignale sw und die Ausgangssignale led und seg wie erwartet? Wie viele Zählschritte haben Sie simuliert? |
6 | Implementieren Sie die Funktion auf dem Basys 3 Board und
testen Sie die Schaltung. Linke Spalte: Synthesis -> Run Synthesis Linke Spalte: Implementation -> Run Implementation Linke Spalte: Program and Debug -> Generate Bitstream Verbinden Sie-falls noch nicht geschehen-, das BASYS 3 Board per USB mit dem Rechner. Linke Spalte: Program and Debug -> Open Hardware Manager Erstmalig: -> Open Target Danach: -> Program Device Dokumentieren Sie hier ihr Ergebnis: |
Erstellung eines Zählers mit dem IP CatalogDie 100 MHz Boardtakt werden mit einem Zähler auf eine niedrige Frequenz zur Tastenabfrage herunter geteilt. | |
7 | Linke Spalte: Project Manager ->IP Catalog Im Feld search geben sie "counter" ein, um nach einem Zähler zu suchen. Durch Doppelcklick auf binary counter erscheint das Fenster "Customize IP" Hier haben Sie die Möglichkeit den Zähler zu konfigurieren. Wählen Sie Output Width 32 Click "ok". Click "generate". |
VHDL code zum Einbau des Zählers in die Schaltung wird ausgewählt. | |
8 | Im Unterfenster Sources wähen Sie unten IP Sources und klappen dann den counter auf,
um die Instantiation Templates auswählen zu können. |
Bearbeitung von Versuch3.vhd zum Einbau des Zählers. | |
9 |
Um c_counter_binary_0 zu benutzen kopieren Sie nun den Abschnitt COMPONENT in den architecture Abschnitt von VERSUCH3
vor dem 'Begin'. Der Clockteiler wird in die Schaltung eingebaut in dem der Abschnitt UUT: nach dem 'Begin' hinein kopiert wird und die Eingänge und Ausgänge verbunden werden: CLK mit CLK, CE mit sw(7) und Q mit count. Dazu muss das signal count noch vor dem begin definiert werden.
Damit Sie sehen, wie langsam das oberste Bit des Zählers zählt, verbinden Sie led(10 downto 6) mit
count(26 downto 22).Erweitern Sie in der Datei Versuch3.vhd im Abschnitt entity den led-Bus (10 downto 0). Die led pins 10..6 müssen in der constraints Datei Basys3_Master.xdc aktiviert werden (Entfernen des '#' Kommentarzeichens).
|
11 |
Die btn Eingänge werden oben in der entity im Abschnitt port eingefügt:
|
Bearbeitung von Basys3_Master.xdc zum Einbau des Zählers. | |
12 | Außerdem werden die btn Eingänge in der Basys3_Master.xdc Datei durch löschen der Kommentarzeichen # aktiviert. |
Bearbeitung von Versuch3.vhd zur Implementierung einer Zustandsmaschine für die Taster (Buttons). | |
13 | Mit der Taste btn(1) soll nun dp ein und ausgeschaltet werden. Die Signalanweisung kommt vor das begin der architecture:
Der process für die Zustandsmaschine wird nach dem begin eingefügt.
Wir benötigen den process, um eine Zustandsmaschine zu bauen.Zeile 4: Die erste if Anweisung initialisiert dpi und ce asynchron, wenn btn(0) gedrückt wird. Zeile 7: "elsif" definiert die Aktionen bei einer steigenden clk Flanke. Zeile 8: Nur wenn der Zähler einen bestimmten Wert hat wird ce gesetzt (Zeile 9) und dpi invertiert (Zeile 10). Zeile 13-15: ce wird auf "0" zurück gesetzt und ist nur einen clk Zyklus aktiv. Die letzte Zeile ersetzt die Zeile "dp <= sw(7);". Zustandsmaschinen in VHDL sehen immer ähnlich aus. im nächsten Versuch wird ausgehend von diesem process ein weiterer für btn(2) und btn(3) eingefügt. |
Bearbeitung von Test_V3.vhd zum Test der Schaltung. | |
14 | Da die entity geändert wurde, muss auch die Simulationsdatei angepasst werden: Ansicht: Simulation, dann Auswahl der Testdatei Test_V3.vhd Im Abschnitt component VERSUCH 3 wird die Zeile für die Buttons eingefügt:
Die led wird auf die Anzahl (10 downto 0) erweitert.Entsprechend benötigt man ein Signal im --Inputs Bereich:
Auch drot wird der Bereich für led angepasst.Die Unit under test UUT: muss ergänzt werden:
Nun ergänzen Sie noch die Testvektoren am Anfang durch kurzzeitiges setzen des btn(0) auf '1',
um den Zähler zu initialisieren, und danach langes setzen des btn(1) auf '1' und btn(0) auf '0'.Simulieren Sie genauso wie im letzten Versuch die Funktion. Sie untersuchen, ob count richtig zählt, der Taster abgefragt wird und dp sich ändert. count finden Sie, wenn sie die Testschaltung durch Klick auf das Dreieck aufklappen. Remove Verhält sich die Simulation wie erwartet? Gibt es Schwierigkeiten? |
15 | Klicken Sie dafür auf Generate Bitstream und warten Sie bis die Datei erzeugt
wurde (drehendes grünes Rad oben rechts). Sollte dort kein grüner Haken erscheinen, dann haben Sie einen Fehler im Quellcode. Falls kein Fehler erscheint können Sie weitermachen, ansonsten bessern Sie den Fehler aus. Falls das Basys3 Board nicht am PC angesteckt und angeschaltet sein sollte, so machen Sie das. Drücken Sie auf Open Hardware Manager -> Open Target -> Auto Connect. Warten Sie bis sich das Fenster geschlossen hat. Anschließenend drücken Sie auf Program Device -> xc7a35t_0. Im neuen Fenster bestätigen Sie mit Program. |
17 | Testen Sie nun die Funktion.
Drücken Sie den Taster und beobachten Sie den Anzeigepunkt dp.
Passt alles? Gratuliere…! Kommentieren Sie hier das Ergebnis. |