by alex008 » Fri Mar 21, 2008 12:00 am
VGA heißt nicht anderes als Video Graphic Array was es auch definitiv ist. Man benötigt dazu minimal einen dual ported Ram bei dem das Lesen und Schreiben unterschiedlicher Adressen gleichzeitig unabhängig geschieht.
Auf der Leseseite sitzt ein Zähler für die X-Achse und einer für die Y-Achse. Diese Zähler laufen immer und werden gleichzeitig auch für den Frontproche, Sync, und Backporch verwendet. Die Internetseite für die genormte Werte ist:
http://info.electronicwerkstatt.de/bereiche/monitortechnik/vga/Standard-Timing/
Während Frontporch, Sync und Backporch wird das Monitornuzsignal unterdrückt. Danach kommt die Ausgabe der sichtbaren Spalte bzw. Zeile (Daten vom Ram liegen direkt an den Ausgangwiderständen an).
Während der Sync Zeit setzt man noch den V-Sync bzw. den H-Sync Ausgang, Fertig!
http://www.epanorama.net/documents/pc/vga_timing.html
beschreibt das gleiche ausführlicher!
Auf der Schreibseite des dual ported Rams würde ich einen ordinären Adress-Datenbuss für einen Microcontroller empfehlen. => Sehr einfaches Design im FPGA, Darstellung von Bildern möglich, ...
Die Schwierigkeit liegt also nicht am VGA selbst, sondern in den grunsätzlichen Eigenschaften von synchronen Hardware Schaltungen. Korrekte Daten ohne Setup- oder Hold-Zeit Verletzungen vom Mircrocontroller bekommen, keine Rückgekoppelten Signale ohne Zwischenregister, erreichte Maximalfrequenz des Designs, ...
Nur den VHDL Syntax zu kennen reicht da nicht, man sollte auch in der Lage sein, das ganze Design im Kopf sich als Hardware mit Flipflops, Addierer, logische Gatter ... vorstellen oder "synthetisieren" zu können.