# Video Display Controller

Als Video Display Controller (VDC) bezeichnet man eine integrierte Schaltung, welche die unmittelbare Schnittstelle zwischen Datenverarbeitungsanlage (Heimcomputer, Spielkonsole etc.) und grafischer Ausgabe/Bildgeber, also z. B. Monitor oder Fernsehgerät, realisiert. Seine Aufgabe ist es, den Bildgeber anzusteuern.

## Unterfunktionseinheiten
### Bildpuffer

Der Bildpuffer ist die Hauptschnittstelle zwischen dem Video Display Controller und dem Bildgeber, also der CPU oder GPU. Er ist eine beliebige Art von Direktzugriffsspeicher zum Schreiben und Lesen. Seine Größe bestimmt die maximale Bild- und Farbauflösung.
Bei sehr frühen Grafikkarten hatte der verlötete Direktzugriffsspeicher lediglich den Zweck, als Bildschirmpuffer zu dienen. Man konnte also schon allein anhand seiner Größe die maximale mögliche Bild- und Farbauflösung ausrechnen. Ein Rasterbild
* mit 320×240 Bildpunkten bei 8 bit Farbauflösung benötigt 76.800 Bytes an Speicher
* mit 640×480 Bildpunkten bei 24 bit benötigt 921.600 Bytes
* mit 1024×768 Bildpunkte bei 24 bit benötigt 2.359.296 Bytes.
Wenn double- oder triple-buffering eingesetzt wird, so wird jeweils doppelt bzw. dreifach so viel Speicher benötigt.
Moderne Grafikprozessoren können weit mehr, große Speichermengen werden für Zwischenberechnungen oder Texturen benötigt. Ein Teil dieses riesigen Grafikspeichers wird als Bildpuffer genutzt; es ist nicht vorteilhaft dafür einen extra Speicher anzubinden.
Schon anhand der Farbauflösung von z. B. 8 bit kann man erahnen, dass der Bildschirm ebenfalls eine Schnittstelle benötigt, nämlich die Schnittstelle zum Eingabegerät. 8 bit Farbtiefe bedeutet 2$^8$ = 256 mögliche Farben pro Bildpunkt. Der Monitor hat aber überhaupt keine Bildpunkte, sondern jeder Bildpunkt setzt sich zusammen aus 3 Unterbildpunkten (Sub-Pixels) für die Farben Rot, Grün und Blau; d. h. etwas im oder vor dem Monitor muss aus den 8 bit Farbinformation pro Bildpunkt Farbwerte für die Unterbildpunkte errechnen oder einer Tabelle entnehmen.

### Logik-Einheit

Die Logik-Einheit liest die Bilddaten, die von der CPU oder dem GCA in den Bildpuffer geschrieben wurden, wieder aus und schickt sie an den PHY (s. u.).
Diese Daten benötigen Metainformationen: Bildauflösung und Farbtiefe. Außerdem muss klar sein, in welchem Format (z. B. RGBA8888, ARGB8888 etc.) die einzelnen Pixel kodiert sind.
Die Logik-Einheit kann den Bildgeber u. U. auch ansteuern und z. B. die gewünschte Bildschirmauflösung, Farbtiefe und Bildwiederholrate einstellen. Dies ist bei sämtlich modernen Monitoren vorgesehen.
Falls ein Bild gleichzeitig auf mehreren Monitoren ausgegeben werden kann und soll, wird die gewünschte Konfiguration von der Logik-Einheit gewährleistet.

### Pre-PHY

Je nachdem, gemäß welcher Spezifikation mit dem Bildgeber kommuniziert wird, müssen die Daten entsprechend aufbereitet werden. So muss u. U. das vorliegende Farbformat, etwa RGBA8888, in ein anderes Farbformat, z. B. in YC$_B$C$_R$ 4:4:4, umgewandelt werden. Übliche Schnittstellen sind VGA, DVI, HDMI oder DisplayPort.
Falls eine analoge elektronische Schnittstelle unterstützt wird, muss der RAMDAC das digitale Signal in ein analoges umwandeln. Die Frequenz des RAMDACs kann die maximal mögliche Bildauflösung und Bildwiederholungsrate begrenzen.

### PHY

Dieser Funktionsblock erzeugt aus den bei ihm ankommenden Daten ein Signal, welches z. B. nach Low Voltage Differential Signaling oder Transition-Minimized Differential Signaling spezifiziert ist. Dieses Signal wird über ein Kabel zum Bildgeber geschickt.

### Extended Display Identification Data-Leser (EDID-Leser)

Pollt Daten vom Monitor.

## Geschichte

Alte Grafikkarten beinhalteten einen Chip, welcher nur einen Video Display Controller implementierte. Ein moderner Grafikprozessor (GPU) beinhaltet auch einen Display Controller, auch Display Engine genannt, der jedoch nur einen verschwindend geringen Anteil der gesamten Die-Fläche belegt.
Der VDC war der Hauptbestandteil der Logik zur Generierung des Videosignals, aber manchmal gibt es auch andere unterstützende Chips wie RAM, um die Pixeldaten zu halten, oder ROM, um Schriftarten zu speichern.
In reinen Textsystemen übernimmt der VDC die Aufgabe, aus den Zeichenwerten im Hauptspeicher und der Schriftart die Buchstaben zu erzeugen.
Einige VDCs konnten bereits einige Aufgaben mittels Schieberegistern und Paletten selbständig erledigen; so war z. B. der Grafikprozessor des Nintendo Entertainment System für die Darstellung der Sprites auf dem Bildschirm verantwortlich.
Wenn kein zusätzlicher RAMDAC vorhanden ist, erzeugt der VDC die Timingsignale des Videosignals, also die Taktsignale für den Kathodenstrahl des Bildschirms.