[[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 [2011/12/01 09:34]
beckmanf Erklärung vsync/hsync geändert
dtpr_versuch_7_hide [2018/05/28 16:33] (current)
anpf
Line 1: Line 1:
-===== Versuch 7 =====+====== Versuch 7 ====== 
 + 
 +===== Vorbereitung ​=====
  
 ==== Beschreibung der Zielarchitektur des Systems ==== ==== Beschreibung der Zielarchitektur des Systems ====
Line 41: Line 43:
 Die Ausgangssignale des Automaten sind nicht eingezeichnet. ​ Die Ausgangssignale des Automaten sind nicht eingezeichnet. ​
  
 +Beantworten Sie folgende Fragen: ​
 +
 +  - Welche Funktion hat der Eingang sel_cmp_i(1..0) am synccnt Modul? ​
 +  - Welche Funktion hat das Modul syncsm?
 +
 +==== Automatenbeschreibung in VHDL ====
 +
 +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 [[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"​. ​
 +
 +  - Zeichnen Sie einen Schaltplan von de1_play_structure.vhd
 +  - Beschreibt der Zustandsautomat in "​play_rtl.vhd"​ einen Moore- oder einen Mealyautomaten?​ Warum?
 +  - Welche Ein- und Ausgänge hat der Automat?
 +  - Zeichnen Sie den Zustandsgraphen des Automaten anhand des VHDL Codes. ​
 +  - Simulieren Sie den Automaten mit der vorbereiteten Testbench t_play im Verzeichnis sim/play
 +  - 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. ​
 +  - 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 ===== 
 +
 +Drucken Sie die {{:​public:​digilab_vga:​dtpr-checkliste-v7.pdf|Checkliste V7}} aus. 
 +
 +==== Spiel ausprobieren ====
 +
 +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 49: 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.+  * 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 61: Line 131:
 === Designphase === === Designphase ===
  
-  * Entwerfen Sie jetzt den Zähler in VHDL. Laden Sie dazu die vorbereiteten Designdaten {{:​dtpr-v7-counter.zip}} herunter.  +  * Entwerfen Sie jetzt den Zähler in VHDL. Dazu ist die Datei "​counter_rtl.vhd" vorbereitet.  
-  * Simulieren Sie den Zähler mit der vorbereiteten Testbench ​in Modelsim.  +  * Simulieren Sie den Zähler mit der vorbereiteten Testbench ​im Verzeichnis sim/counter
- +
-Wenn Sie mit Ihrem Design fertig sind und es überprüft haben, stellen Sie die grüne Karte auf und bieten Sie anderen Gruppen Ihre Hilfe an+
  
 === Verifikationsphase === === Verifikationsphase ===
Line 72: 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 Generator ​(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 steuerbaren ​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. +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 87: Line 156:
 === Designphase === === Designphase ===
  
-Setzen Sie jetzt das Design in VHDL um. Laden Sie dazu {{:dtpr-v7-synccnt.zip}} auf Ihren Rechner+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.1322728487.txt.gz
  • Last modified: 2011/12/01 09:34
  • by beckmanf