HES Praktikum, Aufgabe 2
VGA-Testbild-Generator
Aufgabenstellung
Schreiben und testen Sie ein Modul "vga", das nur den Takt
als Eingang hat und an seinen Ausgaengen hsync, vsync, r[2:0],
g[2:0] und b[2:0] ein normgerechtes VGA-Signal fuer ein Bild
mit 640x480 Bildpunkten erzeugt. Benutzen Sie den 50-MHz-Takt
des FPGAs (Teilen durch zwei ergibt den Pixeltakt - aber denken
Sie daran, eine synchrone (!) Schaltung zu bauen). Zum Erzeugen
eines Testbildes speisen Sie ausgewaehlte Bits des Horizontal-
und Vertikalzaehlers in die 9 Farbbits ein. Sie sollten das
entstehende Bild genau erklaeren koennen!
Hinweise
Das Bild auf alten Roehren-Monitoren wird sequentiell durch
einen Elektronenstrahl gezeichnet, Zeile fuer Zeile, von
links nach rechts, von oben nach unten (genauer sind es drei
Strahlen, jeweils einer fuer die roten, die gruenen und die
blauen Bildpunkte - sie werden aber alle mit der gleichen
Vorrichtung ausgelenkt). Auf modernen LCD-Monitoren ist die
Physik der Leuchtpunkterzeugung ganz anders - aber die Signale
zum Ansteuern der Schnittstelle gleich. Damit der Monitor "weiss",
wann eine neue Zeile beginnt, gibt's den Zeilen-Synchronimpuls
(fuer ein neues Bild den Bildsynchronimpuls). Vor und nach
dem Synchronimpuls darf fuer eine bestimmte Zeit keine andere
Farbinformation als "schwarz" uebertragen werden. Das nennt
man die vordere bzw. hintere "Schwarzschulter". Die zeitliche
Lage und die Dauer der verschiedenen Impulse wird durch zwei
Zaehler erzeugt. Der erste ist fuer das Timing innerhalb
einer Zeile zustaendig, der zweite fuer das Timing innerhalb
eines Bildes.
Hier ist eine
Tabelle der VGA-Timing-Parameter ;
der von uns benutzte Modus heisst "VGA3". Zeichnen Sie
zwei Diagramme (eines fuer eine Zeile und eines fuer ein Bild),
in dem Sie den Zaehlerstand, den Synchronimpuls und den
Austastimpuls einzeichnen. Der Austastimpuls umfasst den
Synchronimpuls und die Schwarzschultern. Fuer die spaeteren
Aufgaben ist es guenstig, die Zuordnung
"Zaehlerstand <--> Wo befinde ich mich in der Zeile/im Bild?"
so zu waehlen, dass die sichtbaren Pixel ab Zaehlerstand 0
beginnen: dann lassen sich die Zaehler auch zum
Adressieren der Speicher fuer den Bildinhalt benutzen.
Ein Vorschlag zur Erzeugung der Farbinformation: benutzen Sie
jeweils drei aufeinanderfolgende Bits des Horizontal- bzw.
Vertikalzaehlers fuer die drei Bits einer Farbkomponente, z.B.
rot[2:0] = horizontal[4:2], gruen[2:0] = vertikal[4:2],
blau[2:0] = horizontal[7:5].
ACHTUNG, WICHTIG!
Sie MUESSEN sich IMMER erst ENTLADEN, bevor Sie irgendein
Teil des FPGA-Bords beruehren! Am besten ist es, wenn Sie mit
Ihren Fingern (alle, nacheinander!) das Gehaeuse des PS/2-Steckers
anfassen und sich danach nicht mehr von der Stelle ruehren.
Nichtbeachtung kann zur Zerstoerung der Bauteile durch statische
Aufladung fuehren!