Wanneer je experimenteert met microcontrollers en video in VGA-kwaliteit voor retro-gaming of een andere toepassing, heb je een  (DAC).  Met dit flexibele ontwerp kun je allerlei videoformaten uitproberen voordat je de uiteindelijke resolutie vastlegt.

Een eenvoudige DAC

In een niet zo grijs verleden had je speciale video-IC’s nodig om een video-uitgang aan je computersysteem toe te voegen. Maar tegenwoordig kan bijna elke microcontroller een VGA-videosignaal ‘on the fly’ produceren. De resolutie en kleurdiepte hangen af van de hoeveelheid beschikbaar RAM en de snelheid van de MCU. Een eenvoudige digitaal/analoog-converter (DAC) is alles wat nodig is om digitale bitstromen om te zetten in analoge spanningen voor de rode, groene en blauwe kanalen van de VGA-monitor.

DAC schematic
Figuur 1. Hier is maar één kleurkanaal weergegeven; de beide andere zijn identiek.

De vereiste woordbreedte van de DAC wordt bepaald door de resolutie en kleurdiepte van het gewenste videosignaal. Deze twee parameters zijn op hun beurt weer afhankelijk van de beschikbare rekenkracht in de MCU die het videosignaal genereert. Het is mogelijk dat aan het begin van het project nog niet duidelijk is waartoe je systeem in staat is, zodat je misschien liever begint met een DAC met geringe woordbreedte. Aan de andere kant is het mogelijk dat je, als een project bijna klaar is, merkt dat er nog ruimte is om de kwaliteit van het videosignaal te verbeteren. In dat geval zou je een DAC met een grotere woordbreedte willen.

Inschrijven
Schrijf u in voor tag alert e-mails over DAC!


De hier gepresenteerde schakeling kan in beide situaties worden gebruikt, en in alle andere situaties daartussen. Het is een driekanaals video DAC met programmeerbare woordbreedte, waarbij elk kanaal onafhankelijk van de andere kan worden ingesteld. Daarom kan hij worden gebruikt voor alles van RGB111 tot RGB888 (8bit-resolutie voor alle kleuren). Elk cijfer kan elke waarde hebben in een bereik van 1 tot 8; zo zijn RGB535 en RGB221 bijvoorbeeld mogelijke video-kleurformaten.

The video DAC prototype in RGB332 mode
Figuur 2. Het prototype in RGB332-modus, aangestuurd door een Raspberry Pi Pico.

Schakeling

De schakeling is getekend in figuur 1. We zien hier slechts één kleurkanaal (rood), omdat de kanalen voor elke kleur hetzelfde zijn. De digitale video komt binnen op K1 met maximaal acht bit per kanaal. De bits worden gebufferd door IC1, die een R2R ladder-DAC aanstuurt. De DAC-uitgang is een videosignaal in het bereik van 0 V tot 0,7 V. Pull-down weerstanden aan de ingangen zorgen ervoor dat niet-aangesloten bits als nul worden gezien.

Het aantal bits per kleur wordt ingesteld met de DIP-schakelaars van SW3. Voor een 8bit-signaal moeten alle schakelaars uit staan. Om de woordbreedte te verkleinen, sluit je de schakelaars die onderaan beginnen met R1 en R0. Voor een woordbreedte van 4 bit sluit je bijvoorbeeld de vier onderste schakelaars. Sluit de bits van boven naar beneden aan, dat wil zeggen het meest significante bit aan respectievelijk R7, G7 of B7 en werk dan omlaagn. Op die manier kan de video-output altijd zijn maximale waarde (0,7 V) bereiken in plaats van zwakker te worden.

IC4 buffert de horizontale en verticale synchronisatiesignalen. De overige zes buffers kunnen voor iets anders gebruikt worden. Ze zijn beschikbaar op K5.

Raspberry Pi Pico pin map for the RGB332 video demos
Tabel 1. Raspberry Pi Pico pin map voor de RGB332 videodemo’s hier.

Om de video-DAC snel uit te proberen zonder uren te hoeven programmeren, sluit je hem aan op een Raspberry Pi Pico board en een VGA-monitor (zie figuur 2 en tabel 1). Gebruik HSYNC als synchronisatiesignaal. Download een demo  hier, programmeer deze in de Pico en geniet van de graphics (figuur 3).

DAC project - Pico playing Tetris
Figuur 3. Pico speelt Tetris!

De demo’s op zijn in RGB332-formaat. Daarom moet je de onderste vijf schakelaars voor rood en groen en de onderste zes schakelaars voor blauw sluiten:

aantal te sluiten schakelaars = 8 – woordbreedte voor de kleur

Sommige demo’s voeren audio uit op GPIO19 van de Pico. Zet een weerstand van 1,5 kΩ in serie met de uitgang en voeg een condensator van 10 nF naar massa toe om een eenvoudig laagdoorlaatfilter voor het audiosignaal te maken.

De ontwerpbestanden van het project zijn beschikbaar hier.

Inschrijven
Schrijf u in voor tag alert e-mails over Video!


Vragen of opmerkingen?

Hebt u technische vragen of opmerkingen naar aanleiding van dit artikel? Stuur een e-mail naar de redactie van Elektor via redactie@elektor.com.


Nota van de redactie: Mathias Claussen heeft aan dit ontwerp gewerkt en Clemens Valens heeft de tekst voor dit artikel verzorgd (220674-03). Het volledige artikel verschijnt in de Elektor Circuit Special 2023