[[dtpr_versuch_7_hide]]

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
dtpr_versuch_7_hide [2013/11/11 00:55]
beckmanf [Synchron rücksetzbarer Zähler] - zipfile entfernt
dtpr_versuch_7_hide [2018/05/28 16:33] (current)
anpf
Line 52: Line 52:
 Um die Automatenbeschreibung in VHDL kennenzulernen gibt es ein Spiel im Projektverzeichnis. Dieses Spiel sollen Sie analysieren. ​ Um die Automatenbeschreibung in VHDL kennenzulernen gibt es ein Spiel im Projektverzeichnis. Dieses Spiel sollen Sie analysieren. ​
  
-Arbeiten Sie das Kapitel 6 [[http://​dx.doi.org/​10.1524/​9783486710809.117|Reichardt,​ VHDL Synthese, Kapitel 6 - Entwurf von Zustandsautomaten]] durch. Dort ist beschrieben wie Zustandsautomaten in VHDL beschrieben werden. Sie können den Text als PDF laden, wenn Sie von einem Rechner in der Hochschule aus zugreifen, oder wenn Sie sich über das VPN von daheim mit dem Hochschulnetz verbinden [[http://​www.hs-augsburg.de/​einrichtung/rz/​dienste/​vpn-wlan/index.html|Siehe:​ Rechenzentrum/​VPN]]. ​+Arbeiten Sie das Kapitel 6 [[http://​dx.doi.org/​10.1524/​9783486710809.117|Reichardt,​ VHDL Synthese, Kapitel 6 - Entwurf von Zustandsautomaten]] durch. Dort ist beschrieben wie Zustandsautomaten in VHDL beschrieben werden. Sie können den Text als PDF laden, wenn Sie von einem Rechner in der Hochschule aus zugreifen, oder wenn Sie sich über das VPN von daheim mit dem Hochschulnetz verbinden [[https://​www.hs-augsburg.de/​Rechenzentrum/Datennetz-WLAN-VPN.html|Siehe:​ Rechenzentrum/​VPN]]. ​
  
 Analysieren Sie das Design "​play_rtl.vhd"​ und "​de1_play_structure.vhd"​. ​ Analysieren Sie das Design "​play_rtl.vhd"​ und "​de1_play_structure.vhd"​. ​
Line 63: Line 63:
   - Zeichnen Sie ein Timingdiagramm auf dem der Übergang vom Zustand "​chance_s"​ in "​hit0_s"​ zu sehen ist.   - Zeichnen Sie ein Timingdiagramm auf dem der Übergang vom Zustand "​chance_s"​ in "​hit0_s"​ zu sehen ist.
   - Beschreiben Sie wie das Spiel funktioniert! Machen Sie eine Skizze um das Spiel zu erläutern. ​   - Beschreiben Sie wie das Spiel funktioniert! Machen Sie eine Skizze um das Spiel zu erläutern. ​
 +  - Synthetisieren Sie das Design im Verzeichnis pnr/​de1_play. ​
 +  - Analysieren Sie den Zustandsautomaten mit "Tools -> Netlist Viewer -> State Machine Viewer"​. Schauen Sie im Tab "​Encoding"​ nach. 
 +  - Wie viele Flipflops benötigt der Zustandsautomat? ​
 +  - Ändern Sie die Einstellung Assignments -> Settings -> Analysis & Synthesis Settings -> More Settings -> State Machine Settings und vergleichen Sie die Syntheseergebnisse bei "​one-hot"​ und "​minimal-bits"​. ​
  
 ===== Laborarbeiten =====  ===== Laborarbeiten ===== 
 +
 +Drucken Sie die {{:​public:​digilab_vga:​dtpr-checkliste-v7.pdf|Checkliste V7}} aus. 
  
 ==== Spiel ausprobieren ==== ==== Spiel ausprobieren ====
Line 70: Line 76:
 Synthetisieren Sie die play Schaltung im Verzeichnis pnr/​de1_play. Laden Sie das Spiel auf das FPGA und probieren Sie das Spiel aus.  Synthetisieren Sie die play Schaltung im Verzeichnis pnr/​de1_play. Laden Sie das Spiel auf das FPGA und probieren Sie das Spiel aus. 
  
 +==== Spiel erweitern ====
 +
 +Im folgenden soll das Spiel modifiziert werden. Dazu sind hier einige Spielvarianten dargestellt. Welche Variante Sie mit ihrer Gruppe entwerfen sollen, wird im Praktikum festgelegt. Zeichnen Sie für den modifizierten Entwurf den Zustandsgraphen auf Papier. Ändern Sie den VHDL Code für den Automaten und die Testbench des Automaten. Verifizieren Sie den Automaten im Simulator und auf dem FPGA. 
 +
 +=== Variante 1 - Wartesekunde ===
 +
 +Modifizieren Sie das Spiel derart, dass bei einem Tastendruck nicht sofort mit der alternativen Blinkfolge begonnen wird, sondern erst nach Ablauf der Wartesekunde. ​
 +
 +=== Variante 2 - Doppelklick ===
 +
 +Um in die alternative Blinksequenz zu kommen soll man nicht einmal, sondern zweimal innerhalb von einer Sekunde den Taster drücken.  ​
 +
 +=== Variante 3 - Langer Ausgang ===
 +
 +Nach Erreichen der alternativen Blinksequenz soll man nicht sofort bei einem Tastendruck wieder in die Standardblinkfolge zurückkehren. Stattdessen soll nach dem Tastendruck erst noch bis zum Ablauf der Wartesekunde die aktuelle LED wetterleuchten. Danach soll die andere LED aus der alternativen Blinksequenz für eine Sekunde leuchten und erst dann soll wieder die Standardblinkfolge leuchten. ​
 +
 +=== Variante 4 - Ausgang alle LEDs ===
 +
 +Nach Erreichen der alternativen Blinksequenz durch einen Tastendruck soll die alternative Blinkfolge dann verlassen werden, wenn während der Leuchtdauer jeder LED aus der alternativen Blinksequenz mindestens einmal die Taste gedrückt wurde. ​
 +
 +=== Variante 5 - Klick bei Eins blockt ===
 +
 +Wenn während der Standardblinkfolge während der Leuchtdauer der ersten LED eine Taste gedrückt wird, dann soll bei der nächsten möglichen Gelegenheit um mit einem Tastendruck die alternative Blinkfolge zu aktivieren, der Tastendruck wirkungslos bleiben. Durch Drücken der Taste während der Leuchtdauer der ersten LED wird also das Verlassen der Standardblinkfolge für einen Durchgang blockiert und erst beim darauf folgenden Durchgang kann man wieder durch einen Tastendruck zum richtigen Zeitpunkt in die alternative Blinkfolge gelangen. ​
 +
 +=== Variante 6 - Eins / Zwei / Drei ===
 +
 +Man kommt in die alternative Blinkfolge, wenn man während der Leuchtdauer der ersten LED die Taste drückt, dann bei der zweiten LED die Taste drückt und dann bei der dritten LED die Taste drückt. Wenn man das Drücken bei einer LED verpasst, muss man wieder mit dem Drücken bei der ersten LED anfangen. ​
 +
 +=== Variante 7 - Zweimal vorher ===
 +
 +Man kann die alternative Blinkfolge durch Tastendruck während der Leuchtdauer der mittleren LED nur dann erreichen, wenn man während der Leuchtdauer der zweiten LED genau zweimal die Taste gedrückt hat. 
 +
 +=== Variante 8 - Spring drüber ===
 +
 +Wenn man während der Leuchtdauer der zweiten LED den Taster drückt, dann wird nach Ablauf der Wartesekunde das Aufleuchten der mittleren LED übersprungen. ​
 ==== Synchron rücksetzbarer Zähler ==== ==== Synchron rücksetzbarer Zähler ====
  
-Für den Zähler "​synccnt"​ benötigen Sie als eine Komponente einen synchron rücksetzbaren Zähler mit Enable Eingang. Das Enablesignal soll höher priorisiert sein, als das synchrone Resetsignal. ​+Für den Zähler "​synccnt"​ benötigen Sie als eine Komponente einen synchron rücksetzbaren Zähler mit Enable Eingang. Das Enablesignal soll höher priorisiert sein, als das synchrone Resetsignal. Das bedeutet, dass der synchrone Reset nur funktioniert und den Zähler zurücksetzt,​ wenn gleichzeitig das Enable aktiv ist
  
 {{:​dtpr-syncrescnt.jpg|Zähler mit synchronen Reset und Enable}} {{:​dtpr-syncrescnt.jpg|Zähler mit synchronen Reset und Enable}}
Line 78: Line 119:
 === Entwurfsphase === === Entwurfsphase ===
  
-  * Entwerfen Sie auf dem Papier mit Ihrer Gruppe einen synchron rücksetzbaren Zähler mit Enableeingang auf Basis der erlaubten Komponenten aus Versuch 6. +  * Entwerfen Sie auf dem Papier mit Ihrer Gruppe einen synchron rücksetzbaren Zähler mit Enableeingang auf Basis der [[dtpr_versuch_6#​Zulässige Komponenten für den Schaltungsentwurf|erlaubten Komponenten aus Versuch 6]]
   * Skizzieren Sie ein Timingdiagramm mit dem Synchronen Reset und dem Enablesignal.  ​   * Skizzieren Sie ein Timingdiagramm mit dem Synchronen Reset und dem Enablesignal.  ​
  
Line 99: Line 140:
   * Wählen Sie einen Prüfer in Ihrer Gruppe. ​   * Wählen Sie einen Prüfer in Ihrer Gruppe. ​
   * Der "​Prüfer"​ geht in eine andere Gruppe und prüft dort das Design. Der Prüfer zeichnet das Design auf dem Papierentwurf ab.    * Der "​Prüfer"​ geht in eine andere Gruppe und prüft dort das Design. Der Prüfer zeichnet das Design auf dem Papierentwurf ab. 
- 
 ==== Zähler für den Sync Zähler (synccnt) ==== ==== Zähler für den Sync Zähler (synccnt) ====
  
 Sie haben jetzt den synchron rücksetzbaren Zähler "​counter"​. Dieser Zähler soll als Komponente für den "​synccnt"​ Zähler verwendet werden, den Sie jetzt entwerfen und in VHDL umsetzen. ​ Sie haben jetzt den synchron rücksetzbaren Zähler "​counter"​. Dieser Zähler soll als Komponente für den "​synccnt"​ Zähler verwendet werden, den Sie jetzt entwerfen und in VHDL umsetzen. ​
 +
 +{{ :​public:​digilab_vga:​dtpr_v7_synccnt.jpg?​200 | synccnt}}
  
 === Entwurfsphase === === Entwurfsphase ===
  
-Entwerfen Sie einen Zähler der bei einem wählbaren Zählerstand ein "​done"​ Signal aktiviert und im darauffolgenden Takt wieder bei 0 startet. Es sollen insgesamt vier Vergleichswerte mit dem Signal "​sel_cmp_i(1..0)"​ wählbar sein. Zeichnen Sie Ihren Entwurf auf Papier. Verwenden Sie nur die aus Versuch 6 zugelassenen Komponenten sowie schon vorhandene Komponenten wie den "​Counter"​. ​+Entwerfen Sie einen Zähler der bei einem wählbaren Zählerstand ein "​done"​ Signal aktiviert und im darauffolgenden Takt wieder bei 0 startet. Es sollen insgesamt vier Vergleichswerte mit dem Signal "​sel_cmp_i(1..0)"​ wählbar sein. Zeichnen Sie Ihren Entwurf auf Papier. Verwenden Sie nur die aus Versuch 6 [[dtpr_versuch_6#​Zulässige Komponenten für den Schaltungsentwurf|zugelassenen Komponenten]] sowie schon vorhandene Komponenten wie den "​Counter"​. ​
  
 === Erklärphase === === Erklärphase ===
Line 114: Line 156:
 === Designphase === === Designphase ===
  
-Setzen Sie jetzt das Design in VHDL um. Dazu gibt es die Vorlage "​synccnt_rtl.vhd"​ Simulieren Sie das Design im Simulator im Verzeichnis sim/​synccnt. ​+Setzen Sie jetzt das Design in VHDL um. Dazu gibt es die Vorlage "​synccnt_rtl.vhd"​ Simulieren Sie das Design im Simulator im Verzeichnis sim/synccnt. Es kann hilfreich sein die Pfade der Komponenten,​ die in sim/​makefile.sources sind auf Vollständigkeit zu überprüfen
  
 === Verifikationsphase === === Verifikationsphase ===
  
 Wählen Sie einen "​Prüfer"​ und lassen Sie Ihr Design von einem Prüfer einer anderen Gruppe überprüfen. ​ Wählen Sie einen "​Prüfer"​ und lassen Sie Ihr Design von einem Prüfer einer anderen Gruppe überprüfen. ​
 +==== Entwurf einer Schaltung zur Erzeugung des horizontalen Synchronisationssignals (HSYNC) ​ ====
 +
 +Jetzt sollen Sie einen Entwurf für einen HSYNC Generator machen, der das VGA_HS Signal für den VGA Anschluss erzeugt. Das Bild soll eine Auflösung von 640x480 Punkten und eine Bildwiederholfrequenz von etwa 60 Hz haben. Auf dem FPGA Board soll das 50 MHz Taktsignal genutzt werden. ​
 +
 +{{:​dtpr-syncgen-arch.jpg|VGA Bildgenerator}}
 +
 +Der Entwurf soll zunächst komplett auf dem Papier erfolgen. Versuchen Sie bei Ihrem Entwurf einen Ausblick für die Erzeugung des VSYNC Signals und die RGB Signale zu geben. Für den Entwurf sollen ausschliesslich die folgenden Komponenten verwendet werden. Andere, komplexere Komponenten müssen Sie auf Basis der aufgeführten zulässigen Komponenten erstellen.  ​
 +
 +
 +=== Vorgehen ===
  
 +  - Arbeiten Sie in Ihrer Gruppe einen Entwurf aus. Im Entwurf müssen Schaltpläne und geeignete Timingdiagramme enthalten sein. Sie müssen in der Lage sein, anderen Gruppen den Entwurf zu erläutern. Einigen Sie sich auf einen Gruppensprecher,​ der den Entwurf vorstellt. Kontaktieren Sie in dieser Zeit nicht die anderen Gruppen. (45 min)
 +  - Jeweils vier Gruppen bilden ein Plenum und diskutieren die Entwürfe untereinander. Jede Gruppe stellt dazu Ihren Entwurf den anderen Gruppen vor (5 min). Danach wird der Entwurf diskutiert (5 min). 
 +  - Wählen Sie im Plenum einen Entwurf aus, der dem anderen Plenum vorgestellt werden soll 
 +  - Definieren Sie gegebenenfalls noch notwendige Änderungen,​ Ergänzungen und Verbesserungen,​ die in der Diskussion aufgefallen sind. (10 min) 
 +  - Dieser überarbeitete Entwurf wird dann dem anderen Plenum vorgestellt (5 min) und diskutiert (5 min).    ​
  
  
    
  • dtpr_versuch_7_hide.1384127735.txt.gz
  • Last modified: 2013/11/11 00:55
  • by beckmanf