This is an old revision of the document!
Versuch 7
Vorbereitung
Beschreibung der Zielarchitektur des Systems
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
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
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:
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.
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 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鈥�.
- Zeichnen Sie einen Schaltplan von de1_play_structure.vhd
- Beschreibt der Zustandsautomat in 鈥減lay_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 鈥渃hance_s鈥� in 鈥渉it0_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 鈥淭ools 鈫� Netlist Viewer 鈫� State Machine Viewer鈥�. Schauen Sie im Tab 鈥淓ncoding鈥� 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 鈥渙ne-hot鈥� und 鈥渕inimal-bits鈥�.
Laborarbeiten
Drucken Sie die 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
Modifizieren Sie das Spiel derart, dass bei einem Tastendruck nicht sofort ein neues Leuchtbild erscheint, sondern der neue Leuchtzustand erst nach Ablauf der Wartesekunde erscheint. 脛ndern Sie den VHDL Code gem盲脽 des Zustandsgraphen ab und probieren Sie das modifizierte Design auf dem FPGA aus.
Synchron r眉cksetzbarer Z盲hler
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.
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.
Z盲hler f眉r den Sync Z盲hler (synccnt)
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.
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.
Verifikationsphase
W盲hlen Sie einen 鈥淧r眉fer鈥� und lassen Sie Ihr Design von einem Pr眉fer einer anderen Gruppe 眉berpr眉fen.