[[dtpr_versuch_7_hide]]

This is an old revision of the document!


Versuch 7

脺bersicht

Taktschema

Der genaue Pixeltakt des Systems bei einer Aufl枚sung von 640×480 Punkten betr盲gt 25,175 MHz. Dieser Takt ist ohne PLL nicht genau zu treffen. Deshalb wird ein Pixeltakt von 25 MHz gew盲hlt. Dazu werden alle Schaltungsteile mit 50 MHz getaktet und mit einem Enablesignal mit 25 MHz Frequenz jeweils f眉r jeden zweiten Takt aktiviert. Der resultierende Pixeltakt ist deshalb 25 MHz.

HSYNC Generator, VSYNC Generator und Bildgenerator

Sync Generator

Der HSYNC Generator z盲hlt die Pixel in einer Zeile im Pixeltakt hoch. Dazu wird das 25 MHz Enable verwendet. Der HSYNC Generator hat die Phasen

  • Active
  • Front porch
  • Sync
  • Back porch

Nach jeder Zeile z盲hlt der VSYNC Generator eine Zeile weiter. Der VSYNC und HSYNC Generator sind weitgehend identisch aufgebaut und unterscheiden sich nur durch die Z盲hlzeiten f眉r die einzelnen Phasen. Der VSYNC Generator erh盲lt nach jeder Zeile ein Enablesignal. Dieses Enablesignal wird vom HSYNC Generator erzeugt. Die Z盲hler vom HSYNC und VSYNC Generator liefern den aktuellen Pixel und die aktuelle Zeile. Deshalb k枚nnen diese Signale direkt vom Bildgenerator genutzt werden um die VGA Farbsignale zu erzeugen. Allerdings z盲hlen die Z盲hler auch in den nicht aktiven Phasen (Front Porch, Sync und Backporch). Deshalb erh盲lt der Bildgenerator zus盲tzlich die Information, dass sowohl HSYNC als auch VSYNC sich in der aktiven Phase befinden. Ansonsten wird an den Farbausg盲ngen Schwarz ausgegeben.

SYNC Generator Architektur

Sync Generator Architektur

Der Sync Generator besteht aus dem Z盲hler 鈥渟ynccnt鈥� und einem Automaten 鈥渟yncsm鈥�. Der Automat repr盲sentiert die Phasen des Generators. Der Z盲hler ist f眉r die Dauer der Phasen des Automaten verantwortlich. Dazu produziert der Z盲hler ein 鈥渄one鈥� Signal, wenn der Z盲hler einen bestimmten Z盲hlerstand erreicht hat. Bei welchem Z盲hlerstand ein 鈥渄one鈥� Signal kommt, kann 眉ber das 鈥渟el_cmp_i(1..0)鈥� Signal ausgew盲hlt werden. Es gibt vier Vergleichswerte, die 眉ber 鈥渟el_cmp_i(1..0)鈥� ausgew盲hlt werden k枚nnen. Wenn das 鈥渄one鈥� Signal aktiviert wird, wird gleichzeitig der Z盲hler auf 0 zur眉ckgesetzt. Der Automat erzeugt das sel_cmp_i Signal und benutzt das 鈥渄one鈥� Signal um in die n盲chste Phase zu welchseln.

Die folgende Darstellung zeigt den Signalverlauf des Z盲hlerstandes, des done Signals und des Zustands des Automaten:

Sync Generator Timing

In diesem Ausschnitt geht der Automat vom Zustand 鈥渁ctive鈥� in den Zustand 鈥渇p鈥� 眉ber. Das 鈥渄one鈥� Signal wird bei einem Z盲hlerstand von 639 aktiviert. Dieses Verhalten wird 眉ber die Wahl selcmp = 鈥�00鈥� gesteuert. Mit der folgenden Phase 鈥渇p鈥� wird das selcmp Signal auf 鈥�01鈥� gesetzt.

In der folgenden Abbildung ist das Zustandsdiagramm des Automaten dargestellt.

Sync Generator Zustandsautomat

Die Ausgangssignale des Automaten sind nicht eingezeichnet.

Beantworten Sie folgende Fragen:

  1. Welche Funktion hat der Eingang sel_cmp_i(1..0) am synccnt Modul?
  2. Welche Funktion hat das Modul syncsm?

Um die Automatenbeschreibung in VHDL kennenzulernen gibt es ein Spiel im Projektverzeichnis. Dieses Spiel sollen Sie analysieren.

Arbeiten Sie das Kapitel 6 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 91漫画 aus zugreifen, oder wenn Sie sich 眉ber das VPN von daheim mit dem Hochschulnetz verbinden .

Analysieren Sie das Design 鈥減lay_rtl.vhd鈥� und 鈥渄e1_play_structure.vhd鈥�.

  1. Zeichnen Sie einen Schaltplan von de1_play_structure.vhd
  2. Beschreibt der Zustandsautomat in 鈥減lay_rtl.vhd鈥� einen Moore- oder einen Mealyautomaten? Warum?
  3. Welche Ein- und Ausg盲nge hat der Automat?
  4. Zeichnen Sie den Zustandsgraphen des Automaten anhand des VHDL Codes.
  5. Simulieren Sie den Automaten mit der vorbereiteten Testbench t_play im Verzeichnis sim/play
  6. Zeichnen Sie ein Timingdiagramm auf dem der 脺bergang vom Zustand 鈥渃hance_s鈥� in 鈥渉it0_s鈥� zu sehen ist.
  7. Beschreiben Sie wie das Spiel funktioniert! Machen Sie eine Skizze um das Spiel zu erl盲utern.
  8. Synthetisieren Sie das Design im Verzeichnis pnr/de1_play.
  9. Analysieren Sie den Zustandsautomaten mit 鈥淭ools 鈫� Netlist Viewer 鈫� State Machine Viewer鈥�. Schauen Sie im Tab 鈥淓ncoding鈥� nach.
  10. Wie viele Flipflops ben枚tigt der Zustandsautomat?
  11. 脛ndern Sie die Einstellung Assignments 鈫� Settings 鈫� Analysis & Synthesis Settings 鈫� More Settings 鈫� State Machine Settings und vergleichen Sie die Syntheseergebnisse bei 鈥渙ne-hot鈥� und 鈥渕inimal-bits鈥�.

Drucken Sie die Checkliste V7 aus.

Synthetisieren Sie die play Schaltung im Verzeichnis pnr/de1_play. Laden Sie das Spiel auf das FPGA und probieren Sie das Spiel aus.

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.

F眉r den Z盲hler 鈥渟ynccnt鈥� 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.

Z盲hler mit synchronen Reset und Enable

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.
  • Skizzieren Sie ein Timingdiagramm mit dem Synchronen Reset und dem Enablesignal.

贰谤办濒盲谤辫丑补蝉别

Jeweils vier Gruppen bilden ein Plenum.

  • Stellen Sie im Plenum Ihren Entwurf vor. Erl盲utern Sie Ihr Timingdiagramm.
  • Diskutieren Sie den Entwurf im Plenum.

Designphase

  • Entwerfen Sie jetzt den Z盲hler in VHDL. Dazu ist die Datei 鈥渃ounter_rtl.vhd鈥� vorbereitet.
  • Simulieren Sie den Z盲hler mit der vorbereiteten Testbench im Verzeichnis sim/counter.

Verifikationsphase

In dieser Phase stellt jede Gruppe einen 鈥淧r眉fer鈥�. Dieser Pr眉fer verifiziert das Design in einer anderen Gruppe. Jede Gruppe muss in der Lage sein dem Pr眉fer das eigene Design mit Designdaten, RTL Viewer und Simulationsergebnissen zu erl盲utern.

  • W盲hlen Sie einen Pr眉fer in Ihrer Gruppe.
  • Der 鈥淧r眉fer鈥� geht in eine andere Gruppe und pr眉ft dort das Design. Der Pr眉fer zeichnet das Design auf dem Papierentwurf ab.

Sie haben jetzt den synchron r眉cksetzbaren Z盲hler 鈥渃ounter鈥�. Dieser Z盲hler soll als Komponente f眉r den 鈥渟ynccnt鈥� Z盲hler verwendet werden, den Sie jetzt entwerfen und in VHDL umsetzen.

 synccnt

Entwurfsphase

Entwerfen Sie einen Z盲hler der bei einem w盲hlbaren Z盲hlerstand ein 鈥渄one鈥� Signal aktiviert und im darauffolgenden Takt wieder bei 0 startet. Es sollen insgesamt vier Vergleichswerte mit dem Signal 鈥渟el_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 鈥淐ounter鈥�.

贰谤办濒盲谤辫丑补蝉别

Erkl盲ren Sie einer anderen Gruppe Ihren Entwurf. Zeichnen Sie dazu Timingdiagramme.

Designphase

Setzen Sie jetzt das Design in VHDL um. Dazu gibt es die Vorlage 鈥渟ynccnt_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

W盲hlen Sie einen 鈥淧r眉fer鈥� und lassen Sie Ihr Design von einem Pr眉fer einer anderen Gruppe 眉berpr眉fen.

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 640×480 Punkten und eine Bildwiederholfrequenz von etwa 60 Hz haben. Auf dem FPGA Board soll das 50 MHz Taktsignal genutzt werden.

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

  1. 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)
  2. 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).
  3. W盲hlen Sie im Plenum einen Entwurf aus, der dem anderen Plenum vorgestellt werden soll
  4. Definieren Sie gegebenenfalls noch notwendige 脛nderungen, Erg盲nzungen und Verbesserungen, die in der Diskussion aufgefallen sind. (10 min)
  5. Dieser 眉berarbeitete Entwurf wird dann dem anderen Plenum vorgestellt (5 min) und diskutiert (5 min).
  • dtpr_versuch_7_hide.1415258860.txt.gz
  • Last modified: 2014/11/06 08:27
  • by lueder