# Video Display Controller

Een Video Display Controller (VDC) is een computerchip die als hoofdcomponent dient van een video display-signaalgenerator in een computer, en dat een tv-signaal opwekt. Sommige van deze chips wekten ook een geluidssignaal op, maar dat was dan bijzaak.
Video Display Controllers werden voornamelijk gebruikt in de homecomputers van de jaren tachtig, maar werden ook in vroege spelcomputers toegepast, en zelfs nu nog wel in simpele videospellen en dergelijke.
De Video Display Controller is altijd de kern van het systeem dat een video signaal opwekt, maar wordt daarin soms ondersteund door een aantal losse andere chips, voornamelijk RAM's voor het opslaan van de videodata, maar ook ROM's met karakterfonts, en andere losse TTL-chips zoals schuifregisters, die de parallelle data uit het videogeheugen moesten omzetten in een serieel signaal dat samen met (apart opgewekte) timing signalen tot een composietvideosignaal werd samengesteld. In elk geval is het de taak van de VDC om de diverse benodigde timing signalen op te wekken, en data uit het video geheugen op de een of andere manier om te zetten in een televisiebeeld.
Meestal is de VDC-chip volkomen in het computersysteem geïntegreerd, en deelt dus wat RAM met het hoofd systeem, maar soms werkt het ook als een co-processor, en heeft een eigen CPU en RAM, onafhankelijk van de hoofd-CPU.

## Video Display Controllers en Video Display Processors

Het verschil tussen een (ouderwetse) VDC, en de meer moderne GPU is niet dat een VDP geen hoge resolutie kleuren videobeelden kon opwekken, maar hij deed niet veel meer dan het video geheugen uitlezen en in een videobeeld omzetten. Het manipuleren van het videogeheugen (en dus het beeld) liet hij over aan de hoofd-CPU. Een GPU daarentegen heeft altijd speciale hardware om, onafhankelijk van de hoofd-CPU, het video-RAM te manipuleren, en daarmee het beeld op te bouwen. Daarentegen hebben de oudere VDC's soms speciale hardware voor het opwekken van computer sprites, terwijl een GPU het manipuleren van bewegende objecten in het beeld meestal overlaat aan een "blitter", een stukje hardware dat een deel van het videogeheugen kan verplaatsen of kopiëren.
Een voorbeeld van een typische VDC is de Advanced Graphics Architecture (AGA)-chip die werd toegepast in de latere generaties van Amiga-computers.
Eigenlijk is het vaak niet goed te zeggen of een chip nu in het VDC, of het GPU kamp thuishoort. De TMS9918A (van o.a. MSX computers) bijvoorbeeld wordt vaak beschouwd als een VDC, omdat het tamelijk bescheiden mogelijkheden had, maar soms ook als GPU, omdat het zelfstandig de inhoud van het videogeheugen kon manipuleren, en het niet alleen maar in een tv-beeld omzette. In het algemeen echter beschouwen we een videochip pas een GPU als het uitgebreide mogelijkheden heeft om de inhoud van het videogeheugen te manipuleren.

## Types Video Display Controllers

Video Display Controllers kun je in vier (feitelijk willekeurig gekozen) categorieën opdelen:
* Video-schuifregisters (in feite een vrij willekeurig gekozen naam, er bestaan maar een paar soorten van, en er is geen consistentie in de naamgeving ervan) zijn het allereenvoudigste soort chips die een videosignaal kunnen opwekken. Ze doen dit in feite niet zelfstandig, maar steunen geheel op de hoofd CPU voor bijna alles wat ze doen. Zo lezen ze in het algemeen niet zelf het video-RAM uit, maar laten de hoofd CPU (bijvoorbeeld een 6502), dat doen. In feite doen ze niet veel meer dan assisteren in het opwekken van de diverse benodigde timing signal, en het in een videosignaal omzetten van de videodata, waarvoor ze het "schuifregister" gebruiken waaraan ze hun naam te danken hebben. het beeld dat deze chips opwekken is altijd erg eenvoudig.
* Een CRTC of Cathode Ray Tube Controller genereert de videotimingsignalen nodig voor de opwekking van het videosignaal, en beheert bovendien de toegang tot het videogeheugen zodat zowel de videologica deze constant kan uitlezen om er het videobeeld mee op te wekken, en (zo nu en dan, als het kan) de hoofd-CPU toegang tot dit geheugen geeft zodat deze de inhoud ervan kan manipuleren. De CRTC heeft echter bijna altijd nog externe logica nodig om dit te doen. En als er speciale functies gewenst zijn zoals computer sprites, een "palette register", of zelfs een karaktergenerator, dan dienen deze als externe logica uitgevoerd te worden. Omdat deze externe logica dus op zeer veel manieren uitgevoerd kan worden, van eenvoudig tot complex, kan een op een CTRC-gebaseerd systeem dus een breed scala aan eigenschappen hebben, van het allereenvoudigste tekstgebaseerde systeem tot aan zeer complexe systemen met hoge-resolutie graphics.
* Een Video interface chip (VIC) is veel complexer dan een CRTC, en integreert in een enkele VLSI-chip de complete videogeneratorlogica, vaak inclusief sprites, kleurvertalingstabellen, en karaktergenerators, en ondersteund verschillende videomodes. Het videogeheugen wordt daarbij gedeeld met de hoofd CPU, en het manipuleren van het video-RAM wordt daaraan overgelaten.
* Een video coprocessor gaat nog een stukje verder dan een VIC. Hij heeft meestal al diens eigenschappen (sprites etc) maar bestuurt een eigen stukje videogeheugen met zijn eigen CPU, waar hij, en hij alleen, toegang tot heeft. De hoofd CPU kan normaal gesproken niet direct bij dit video geheugen maar moet dit doen via commando's die hij aan de videocoprocessor geeft. Daarbij zijn soms wel uitzonderingen, zo deelt de ANTIC van de Atari 800 zijn geheugen wel degelijk met de hoofdprocessor (een 6502), maar het beslissende punt waarom het toch een co-processor is, s dat deze videoprocessor een eigen interne processor heeft die alleen bedoeld is voor het manipuleren, uitlezen en interpreteren van het videosignaal.

## Voorbeelden van VDC's

Hier volgt een korte lijst van voorbeelden van elk van de bovengenoemde vier categorieën.
Video shifters
* De RCA CDP1861 was een heel simpele chip, uitgevoerd in CMOS technologie, wat uitzonderlijk was voor die tijd. Hij was ontworpen als "metgezel" van de (eveneens erg eenvoudige) RCA 1802 Microprocessor, eveneens in CMOS uitgevoerd. Deze chip was niet erg succesvol, en werd eigenlijk alleen in de COSMAC VIP toegepast. Vooral omdat hij alleen zwart-wit grafische beelden kon opwekken in een heel erg lage resolutie. Ook de RCA 1802 werd niet erg succesvol, en we zien hem dan ook bijna alleen (veel later) in de obscure Comx-35 homecomputer toegepast. Wel grappig is dat de 1802 veel in de ruimtevaart toegepast werd omdat hij door zijn CMOS techniek bijna onkwetsbaar was voor straling uit de ruimte.
* De "Television Interface Adaptor (TIA) is de speciaal ontworpen chip die aan het hart lag van de vroege, maar erg succesvolle Atari 2600-spelcomputer. Deze erg primitieve chip, die bovendien ook het geluid moest opwekken, moest dan ook bijn al het werk door de 6502 microprocessor laten doen.
* De Signetics 2637 (van Philips) is een relatief onbekende videocontrollerchip die nog het meest bekend is door zijn gebruik in de Emerson Arcadia 2001.
CRT Controllers
* De Intel 8275 CRT controller is een vroege poging van Intel om een videochip op de markt te brengen, echter deze chip was enkel ontworpen om een tekstbeeld op te wekken, en het gebrek aan mogelijkheden om een grafisch beeld op te wekken betekende dat hij in geen enkele gangbare computer werd gebruikt. Alleen in enkele op de S100-bus gebaseerde CP/M systemen, die toch al bijna geen grafische mogelijkheden ondersteunden.
* De Motorola 6845 is daarentegen ongetwijfeld een van de meest succesvolle CRT controller chips ooit. Ontworpen door Motorola werd deze chip al snel door andere fabrikanten nagemaakt. Hij lag aan de basis van de videohardware van veel homecomputers zoals de Amstrad CPC, en de BBC computer, en werd later gebruikt voor praktisch alle videokaarten voor de PC, zoals de IBM Monochrome Display Adapter (MDA), de Color Graphics Adapter (CGA) en IBM Enhanced Graphics Adapter (EGA) adapters. En ook alle videokaarten, vanaf de VGA tot aan de videokaarten van vandaag toe, bootsen intern in hun chip nog steeds een 6845 na.
Video Interface Controllers
* De MC6847 is een voortzetting van de 6845 van Motorola, en vormde de basis voor de TRS-80 Color Computer en diens kopie, de Dragon 32/64. Maar ook veel andere homecomputers uit die tijd zoals de Laser 200 en de Acorn Atom waren gebaseerd op deze chip, en zijn eenvoudig te herkennen aan het feit dat ze (nogal hoekig uitziende) zwarte hoofdletters op een groen scherm lieten zien.
* De MOS Technology 5060 (NTSC) en 5061 (PAL) is de oervader, en naamgever van alle latere "VIC" chips, (want hij werd beschreven als de "Video Interface Controller") en de computer die er op gebaseerd was heette dan ook VIC, om precies te zijn, de Commodore VIC-20.
* De MOS Technologie 6567/8562/8564 (NTSC versies) en 6569/8565/8566 (PAL versies) zijn de opvolger van de VIC, en zijn bekend als "VIC II" chips, ze zijn beroemd door het gebruik ervan in de Commodore 64.
* De MOS Technology 8563 werd, samen met de VIC II gebruikt in de Commodore 128, en was nodig voor het maken van het 80 kolommen tekst beeld.
* De MOS Technology 7360 oftewel TED (Text Editing Device) werd gebruikt voor de Commodore Plus/4 and Commodore 16 computers. Het is typisch dat men zelf voor deze naam koos, want deze chip blonk inderdaad niet uit in grafische mogelijkheden! De VIC II was vele malen beter, en het was ook niet ze gek dat de op deze chip gebaseerde systemen flopten. De markt vroeg nu eenmaal om betere grafische mogelijkheden, niet om slechtere.
Video Coprocessors
* De ANTIC (Alpha-Numeric Television Interface Circuit) was de chip toegepast in de 8-bit Atari homecomputers zoals de Atari-400 en 800. Deze chip was zijn tijd ver vooruit, en bezat een eigen grafische co-processor! En dat in dezelfde tijd dat andere systemen de relatief primitieve 6847 gebruikten. De ANTIC was daarom zo bijzonder omdat hij een eigen CPU bezat die een zogenaamde "display list" kon "lezen" en de informatie daarin kon interpreteren, en gebruiken om een zeer complex veelzijdig videobeeld mee op te wekken.
* De Texas Instruments TMS9918A is de opvolger van de slechts kort op de markt geweest zijnde en onbekende TMS9918 (dus zonder de 'A'), en werd ontworpen voor de TI-99/4A homecomputer (de oudere, bijna onbekende TI-99/4 gebruikte dus de oudere TMS9918 videochip). De TI-99/4A werd geen groot succes, maar veel computer fabrikanten zagen de uitzonderlijke kwaliteiten van de TS9918A in, en gebruikten deze chip, en de PAL/SECAM variant de TMS9928A, voor hun eigen systeem. Voorbeelden zijn de MSX-1, de Coleco Vision en Coleco Adam, de Memotech MTX500/MTX512 en RS128 systemen en vele anderen. Maar ook sommige spelcomputers, zoals de Sega SG-1000 and SC-3000 gebruikten deze chip. Hij was dermate succesvol dat hij verscheidene opvolgers kreeg.
* De Yamaha V9938 is de verbeterde versie van de TMS9918A, en was verantwoordelijk voor de sterk verbeterde grafische eigenschappen van het MSX2 system.
* De Yamaha V9958 is dan een nog verder verbeterde versie, en werd gebruikt in de MSX 2+ en MSX turbo R computers.

## Alternatieve methoden om een videosignaalgenerator te bouwen

Voordat er zelfs CRT controllers op de markt waren kon men niet anders dan de complete videosignaalgenerator met discrete logica (TTL chips) te bouwen. De oer-homecomputer Apple I deed dit bijvoorbeeld (vreemd genoeg is diens videodisplaygenerator te classificeren als een videocoprocessor omdat hij geheel buiten de hoofd CPU om werkte, en daarvan alleen "commando's" ontving). Maar ook de VDC's van andere systemen, zoals de Apple II, de PET, en de TRS-80 waren geheel uit losse logicachips opgebouwd.
Andere, iets latere ontwerpen, gebruikten soms vroege vormen van programmeerbare logica zoals PAL's en CPLD's en ULA's om de benodigde hoeveelheid onderdelen omlaag te brengen.
Voorbeelden zijn de slimme ontwerpen van de ZX-81 (maar niet de ZX-80) en de ZX Spectrum. Echter, ook andere systemen gebruikten vaak programmeerbare logica. Omdat deze techniek echter nog in de kinderschoenen stond waren er geen erg complexe systemen mee te bouwen, waardoor veel fabrikanten een ULA of CPLD in combinatie met een CRTC gebruikten. Een voorbeeld is de Amstrad CPC. Zulke VDC systemen waren echter nog steeds simpel vergeleken met systemen gebaseerd op VHLSI chips.

## Latere oplossingen

De Wet van Moore stond niet stil, en dus werden ook latere Video Display Controllers steeds ingewikkelder. Ze kregen al gauw extra hardware om het creëren van Driedimensionale beelden te vergemakkelijken. Eerst kregen de "blitter" chips speciale mogelijkheden toegevoegd om het tekenen van simpele driedimensionale objecten te vereenvoudigen en te versnellen, zoals het tekenen van "ingekleurde driehoeken", en nog iets later kregen ze ondersteuning voor "z-buffering". Maar dat was nog maar het begin. Tegenwoordig zijn bijna alle Video Display Controller-chips op de markt in feite "Graphical processing units", en echte "VDC"'s zie je alleen nog toegepast worden in zeer simpele systemen.