Wenn Sie mit Mikrocontrollern und Video in VGA-Qualität für Retro-Gaming oder eine andere Anwendung experimentieren, benötigen Sie einen Digital-Analog-Wandler (DAC). Mit diesem flexiblen Design können Sie alle möglichen Videoformate ausprobieren, bevor Sie die endgültige Auflösung festlegen.

A Einfacher DAC

In der nicht allzu fernen Vergangenheit brauchte man spezielle Video-ICs, wenn man seinem Computersystem einen Videoausgang spendieren wollte. Heutzutage jedoch kann fast jeder Mikrocontroller ein VGA-Videosignal erzeugen. Die Auflösung und die Farbtiefe hängen von der Größe des verfügbaren Arbeitsspeichers und der Geschwindigkeit der MCU ab. Ein einfacher Digital-Analog-Wandler (DAC) ist alles, was benötigt wird, um die digitalen Bitströme in analoge Spannungen für die drei Kanäle rot, grün und blau des VGA-Monitors umzuwandeln.

Bild 1. Nur ein Farbkanal ist dargestellt; die beiden anderen sind identisch.

Die erforderliche Wortbreite des DACs wird durch die Auflösung und die Farbtiefe des erwünschten Videosignals bestimmt. Diese beiden Parameter hängen wiederum von den verfügbaren Rechenressourcen in der MCU ab, die das Videosignal erzeugt. Zu Beginn eines Projekts ist möglicherweise nicht klar, was Ihr System leisten kann, so dass Sie vielleicht lieber mit einem DAC mit geringer Wortbreite beginnen. Andererseits kann es sein, dass Sie, wenn ein Projekt fast fertig ist, feststellen, dass noch Spielraum zur Verbesserung der Videoqualität besteht. Und in diesem Fall würden Sie einen DAC mit einer größeren Wortbreite benötigen.

Abonnieren
Tag-Benachrichtigung zu DAC jetzt abonnieren!


Die hier vorgestellte Schaltung eignet sich für beide Situationen und für alles, was dazwischen liegt. Es handelt sich um einen 3-Kanal-Video-DAC mit programmierbarer Wortbreite, bei dem jeder Kanal unabhängig von den anderen eingestellt werden kann. Daher kann er für alles von RGB111 bis zu RGB888 (8-Bit-Auflösung für alle Farben) verwendet werden; es sind also solche Videofarbformate wie RGB535 und RGB221 möglich.

Bild 2. Der Prototyp im RGB332-Modus, angesteuert von einem Raspberry Pi Pico.

Die Schaltung

Die Schaltung ist in Bild 1 dargestellt. Sie zeigt nur einen Farbkanal (rot), da die Schaltungsteile für die beiden anderen Farben gleich sind. Das digitale Video wird an K1 mit bis zu acht Bits pro Kanal eingegeben. Die Bits werden von IC1 gepuffert, der einen R2R-Widerstandsleiter-DAC ansteuert. Am DAC-Ausgang liegt dann ein Videosignal im Bereich von 0◦V bis 0,7◦V. Pull-down-Widerstände an den Eingängen des Puffer-ICs sorgen dafür, dass nicht angeschlossene Bits als Nullen wahrgenommen werden.

Die Anzahl der Bits pro Farbe wird mit den DIP-Schaltern SW3 eingestellt. Für ein 8-Bit-Signal sollten alle Schalter geöffnet sein. Um die Wortbreite zu verringern, schließen Sie die Schalter, von unten beginnend mit dem, der mit R1 und R0 beschriftet ist. Beispiel: Für eine Wortbreite von 4◦Bit schließen Sie die vier unteren Schalter. Schließen Sie die Bits dabei von oben nach unten an, also das höchstwertige Bit an R7, G7 beziehungsweise B7 an und arbeiten Sie sich dann nach unten vor. Auf diese Weise kann der Videoausgang immer seinen Höchstwert (0,7 V) erreichen und wird nicht schwächer.

IC4 puffert die horizontalen und vertikalen Synchronisationssignale. Die übrigen sechs Puffer können für etwas anderes verwendet werden. Sie stehen an K5 zur Verfügung.

Tabelle 1: Raspberry Pi Pico Pin Map für die RGB332 Video Demos von hier.

Um den Video-DAC schnell und ohne stundenlangen Programmieraufwand auszuprobieren, schließen Sie ihn an ein Raspberry Pi Pico board und einen VGA-Monitor an (siehe Bild 2 und Tabelle 1). Verwenden Sie HSYNC als Synchronisationssignal. Laden Sie eine Demo von herunter, programmieren Sie sie auf dem Pico und genießen Sie die Grafik (Bild 3).

Bild 3. Schauen Sie zu, wie der Pico Tetris spielt!

Die Demos auf sind im RGB332-Format. Daher müssen Sie die unteren fünf Schalter für Rot und Grün und die unteren sechs Schalter für Blau schließen:

Anzahl der zu schließenden Schalter = 8 - Wortbreite der Farbe

Einige der Demos geben an GPIO19 des Pico ein Audiosignal aus. Wenn Sie es hören möchten, schalten Sie einen 1,5-kΩ-Widerstand in Reihe mit dem Ausgang und fügen Sie einen 10-nF-Kondensator gegen Masse als einfaches Tiefpassfilter für das Audiosignal hinzu.

Die Designdateien des Projekts sind unter verfügbar.

Abonnieren
Tag-Benachrichtigung zu Video jetzt abonnieren!


Haben Sie Fragen und Kommentare?

Haben Sie technische Fragen oder Kommentare zu diesem Artikel? Bitte kontaktieren Sie Elektor unter redaktion@elektor.de


Anmerkung der Redaktion: Mathias Claussen hat an diesem Entwurf mitgearbeitet, und Clemens Valens hat den Text für diesen Artikel verfasst (220674-02). Der vollständige Artikel erscheint in der Elektor Circuit Special 2023