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!