Hlavní navigace

Grafické karty a grafické akcelerátory (30)

5. 10. 2005
Doba čtení: 12 minut

Sdílet

V dnešním dílu si podrobněji popíšeme dva základní způsoby řízení vektorových displejů. První, historicky starší způsob používá analogové řadiče, druhý způsob už řadiče digitální. Posléze si ukážeme připojení osciloskopu a běžné televizní obrazovky k řadičům vektorových displejů. Nakonec si ukážeme velmi zajímavě pojaté řízení vektorového displeje pomocí běžných grafických karet typu VGA, SVGA apod.

Obsah

1. Jednoduchý řadič vektorového displeje
2. Analogové řízení vektorového displeje
3. Digitální řízení vektorového displeje
4. Použití osciloskopu jako vektorového displeje
5. Použití televizní obrazovky jako vektorového displeje
6. Řízení vektorového displeje pomocí grafické karty
7. Obsah dalšího pokračování tohoto seriálu

1. Jednoduchý řadič vektorového displeje

Jak již víme z předchozích částí tohoto seriálu (XXVIII, XXIX), je ovládání vektorových displejů do značné míry odlišné od ovládání displejů rastrových. Zatímco u rastrových displejů probíhá vykreslování obrazu (snímku) pravidelně po jednotlivých řádcích, u vektorových displejů je řízen přímo elektronový paprsek (jinou technologii než CRT, tj. „elektronkové“ obrazovky, nebudeme v dalším textu uvažovat). Rastrově orientované displeje prakticky vždy obsahují obvody, které řízení elektronového paprsku autonomně zařídí, jediné údaje, které k tomu potřebují, jsou horizontální a vertikální synchronizační signály/impulsy H-sync a V-sync. Pomocí těchto impulsů se synchronizují generátory signálů pro vychylovací destičky či vychylovací cívky CRT obrazovky. Oba vychylovací signály mají vždycky pilovitý průběh, náběžná hrana pily s malou směrnicí způsobuje pravidelný pohyb elektronového paprsku po ploše stínítka, sestupná hrana (která trvá mnohem kratší dobu) slouží k návratu elektronového paprsku na začátek dalšího řádku (signál H-sync) nebo na horní okraj obrazovky (signál V-sync). U vektorových displejů nám nezbývá nic jiného než si generovat signály přiváděné na vychylovací cívky či destičky sami.

Nejprve si stručně (a proto dosti nepřesně) vysvětlíme princip vychylování elektronového paprsku v obrazovkách typu CRT (Cathode Ray Tube). CRT obrazovka je ve své podstatě elektronka se zvětšenou hlavní anodou, která tvoří boční stěny obrazovky. Elektronový paprsek je tvořen proudem elektronů, které jsou emitovány z rozžhavené katody, prochází řídicí mřížkou a jsou urychlovány pomocí takzvané urychlovací anody směrem k stínítku obrazovky s naneseným luminoforem. Po dopadu elektronu na luminofor dojde k vyzáření fotonu a elektron poté (s už mnohem menší rychlostí) dolétne k anodě umístěné na stěně obrazovky – tím se zamezí hromadění náboje na stínítku obrazovky. Pokud by nebyly elektrony při své cestě obrazovkou ničím ovlivňovány (samozřejmě kromě dvou výše zmíněných anod), vytvořily by jakousi kulatou a pravděpodobně i poměrně velkou skvrnu umístěnou ve středu stínítka. To nám však zcela jistě nestačí, proto jsou elektrony ovlivňovány minimálně dvěma dalšími prvky. Jeden prvek se stará o zaostření paprsku elektronů tak, aby se po dopadu rozsvítila co nejmenší plocha (ostření, zaostřovací anoda), druhý ovládací prvek slouží k vychylování již zaostřeného paprsku. Vychylování se provádí buď pomocí dvou párů vychylovacích cívek (viz první obrázek pod odstavcem), nebo pomocí dvou párů vychylovacích destiček (druhý obrázek). Vychylovací cívky jsou umístěny vně obrazovky (a změnou jejich polohy se dá obraz posouvat, otáčet a zvětšovat :-), vychylovací destičky, které tvoří vlastně dvojici kondenzátorů, jsou umístěny uvnitř trubice.

GFX 30 - 1

Obrázek 1: CRT obrazovka s vychylovacími cívkami

Zbývá dodat, že vychylovací destičky, které svým nábojem ovlivňují dráhu záporně nabitých elektronů, se používají například u analogových osciloskopů, protože maximální vychylovací úhel je pro rozumné rozsahy napětí poměrně malý, a obrazovky tak mají velký poměr délka/plocha stínítka (proto jsou tyto osciloskopy poměrně „hluboké“). Výhodou elektrostatického vychylování je menší cena obrazovky, a tím i celého přístroje. Naproti tomu je systém vychylovacích cívek použit téměř u všech větších obrazovek, tj. jak u televizorů, tak i u počítačových monitorů.

GFX 30 - 2

Obrázek 2: CRT obrazovka s vychylovacími destičkami

2. Analogové řízení vektorového displeje

Analogové řízení vektorového displeje bylo historicky použito jako první. Princip zobrazení původně vychází z analogových počítačů a pro potřeby digitálních počítačů byl pouze zařazen digitálně-analogový převodník, který se stará o převod digitálních signálů na signály analogové. Přímé řízení vektorového displeje vypadá následovně: mikroprocesor ovládá přes řadič sběrnice a multiplexor trojici digitálně-analogových převodníků. Digitální multiplexor v tomto případě funguje i jako záchytný registr, který na svých výstupech podrží hodnotu zapsanou na vstupu (pokud to daný multiplexor nedokázal, tak se před integrační články zařazoval obvod typu sample & hold, který si „pamatuje“ hodnotu přivedenou na jeho vstup). Digitálně-analogové převodníky provádí převod číslicových signálů na napěťovou úroveň, která se přivádí na integrační obvody, jež mohou být vytvořeny jednoduchým integračním článkem (například s operačním zesilovačem a kondenzátorem ve zpětné vazbě). Výstupy z integračních článků jsou po náležitém zesílení přivedeny na vychylovací cívky či vychylovací destičky CRT obrazovky. Třetí signál je zaveden na mřížku umístěnou před katodou. Pomocí náboje na této mřížce se ovlivňuje intenzita elektronového paprsku a tím i intenzita vyzářeného světla v místě dopadu paprsku. Blokové schéma takto vytvořeného řadiče displeje je patrné ze třetího obrázku.

GFX 30 - 3

Obrázek 3: Analogové řízení vektorového displeje pomocí trojice D/A převodníků

Předností analogového řadiče je, že mikroprocesor nemusí přímo řídit celý běh elektronového paprsku. Jinými slovy – nemusí sám provádět interpolaci bodů ležících na úsečce mezi počátečním a koncovým bodem vykreslovaného vektoru. Na vstup D/A převodníku se přivede pouze taková hodnota, která odpovídá x-ové či y-ové souřadnici koncového bodu vektoru a interpolace se automaticky provede v integračním článku. Situace je jiná pouze u řízení světlosti vykreslované stopy, tam je nutné nastavit hodnotu okamžitě a pro daný vektor trvale (případně při přechodu paprsku do jiného místa je nutné paprsek vypnout).

V minulosti se výše uvedený diagram u některých počítačů modifikoval tak, že se místo trojice D/A převodníků použil převodník jediný, za němž byl zapojen analogový přepínač. Tím se ušetřily dva integrované obvody s D/A převodníky. Podobně jako u předchozího zapojení musel i zde být před každým integračním článkem zařazen obvod pro zapamatování na něj přivedeného napětí (sample & hold). Toto řešení, které je zobrazeno na čtvrtém obrázku, bylo použito například v herní konzoli Vectrex, kde vystupují integrované obvody MC1408 (převodník) a CD4062 (multiplexor).

GFX 30 - 4

Obrázek 4: Analogové řízení vektorového displeje pomocí jednoho D/A převodníku

3. Digitální řízení vektorového displeje

Analogové řízení vektorového displeje po dlouhou dobu vyhovovalo, a to jak svou jednoduchostí, tak i malými nároky na použitý mikroprocesor, který musel pouze nastavovat jas stopy kreslené elektronovým paprskem a koncové body vektorů. S dalšími aplikacemi, zejména s těmi, jež byly provozovány na větších a přesnějších displejích, se ukazovaly nevýhody analogového řízení. Jednou z nevýhod je kolísání intenzity stopy podle sklonu vykreslovaného vektoru (mění se rychlost pohybu paprsku), druhou nevýhodou je nelinearita integračních článků a potřeba neustálé kalibrace displeje – integrační články byly složené z diskrétních součástek, jejichž vlastnosti se v čase (ale i s teplotou) měnily. Proto se postupně přecházelo na digitální řízení vektorových displejů, ve kterých je množství „analogových“ součástek minimalizováno. Schéma digitálně řízeného vektorového displeje je zobrazeno na pátém obrázku. Z tohoto schématu je patrné, že se vše oproti analogovému řízení zjednodušilo. Na sběrnici je napojena trojice digitálně-analogových převodníků, které obstarávají převod číselných hodnot přivedených na jejich vstupy na analogové signály, s nimiž se pracuje stejným způsobem, jako tomu bylo u předchozích schémat. Před D/A převodníky jsou zařazeny latche nebo skupiny klopných obvodů typu D. To z toho důvodu, aby se na vstupech D/A převodníků udržela požadovaná hodnota i ve chvíli, kdy procesor obsluhuje operační paměť nebo provádí další činnosti.

Už zde padla řeč o mikroprocesoru. V tomto jednoduchém řadiči vektorového displeje opravdu obstarává veškerou činnost spojenou s vykreslováním mikroprocesor. Může se jednat buď o hlavní mikroprocesor v celém počítači, nebo (a to mnohem častěji) o mikroprocesor, který je určen jen a pouze pro vykreslování a případně i pro provádění výpočtů spojených s vykreslováním (zvětšování, rotace, posuv vektorových objektů apod.). Podprogramy běžící na mikroprocesoru provádí zejména interpolaci souřadnic bodů ležících mezi počátečním a koncovým bodem vektoru. K tomuto účelu je možné použít například známý Bresenhamův celočíselný algoritmus. Výsledné souřadnice jsou převedeny do předem stanoveného rozsahu (například šestnácti bitů) a přes sběrnici a latch registry přivedeny na vstupy D/A převodníků. Předností tohoto řešení je větší flexibilita, takže je například možné vykreslovat i složitější tvary – kružnice, kruhové oblouky, Bézierovy křivky atd. Nevýhodou jsou větší nároky na mikroprocesor, který sice nemusí být příliš rychlý, ale musí data na převodnících měnit s konstantní rychlostí – větší kolísání rychlosti se projeví ve změně jasu vykreslených vektorů. Prakticky všechny dnes vytvářené řadiče vektorových displejů jsou postaveny na principu řídicího mikroprocesoru a D/A převodníků (pro domácí použití je možné převodník vytvořit z řady sériově zapojených odporů, odrušovacího kondenzátoru a tranzistoru/o­peračního zesilovače – viz především v našich zemích velmi oblíbenou „zvukovou kartu“ Covox, která byla zapojena na paralelní port).

GFX 30 - 5

Obrázek 5: Digitální řízení vektorového displeje

4. Použití osciloskopu jako vektorového displeje

Osciloskop se jako vektorový displej přímo vybízí. Většina osciloskopů totiž umožňuje vyřadit časovou základnu a ovládat i vertikální vychylovací destičky pomocí druhého vstupu. To se v praxi často používá, například na citlivé měření fáze nebo frekvence. Pokud se na horizontální vychylovací destičky (tj. první kanál) přivede výstup signálu y a na vertikální vychylovací destičky (buď druhý kanál, nebo speciální konektor) výstup signálu x, zobrazí se na displeji osciloskopu požadovaný vektorový obrazec. Vše samozřejmě závisí na nastavení amplitud a celkové délce obrazce, aby se nepřekročila doba dosvitu luminoforu na osciloskopu (ta je však poměrně dlouhá). Celá věc však má jeden háček – všechny po sobě jdoucí koncové body vektorů jsou spojeny, nezávisle na tom, zda se jedná o skutečný vektor, nebo o dva nezávislé body. Poznámka: možná vás mate zdánlivé prohození pojmů vertikální a horizontální. Není tomu tak, protože vertikální vychylovací destičky vychylují paprsek horizontálně a naopak.

Vzhledem k tomu, že jen některé osciloskopy umožňují ovládat i intenzitu elektronového paprsku, je v těchto případech nutné zasáhnout do zapojení osciloskopu a ovládat i jas. Některé obrazovky v osciloskopech dokonce ani nemají před katodou mřížku a jas se tak ovládá přímo změnou napěťového potenciálu mezi anodou a katodou. Naštěstí nemusí být úprava obvodů osciloskopu příliš složitá, stačí (například přes mikrospínač) vyřadit potenciometr určený pro nastavení jasu a místo něj zařadit vhodný elektronický spínací prvek (mnohdy postačí jeden správně polarizovaný tranzistor). Řízením tohoto prvku ze třetího D/A převodníku (viz předchozí kapitola) se mění i jas zobrazovaných vektorů.

5. Použití televizní obrazovky jako vektorového displeje

I běžnou televizní obrazovku je možné použít místo plnohodnotného vektorového displeje. V tomto případě se musí jak na horizontální, tak i na vertikální vychylovací cívky napojit zesilovač, který je připojen k D/A převodníkům se signály x a y. Vzhledem k tomu, že při nulovém proudu protékajícím cívkami míří elektrony přímo do středu luminoforu, musí zesilovač produkovat kladné i záporné signály (je možné použít například dnes již klasické zapojení se čtyřmi tranzistory „do kříže“). Povolené amplitudy signálů na vstupech cívek jsou mnohdy velmi malé, řádově se jedná o desítky milivoltů (závisí na typu obrazovky). Podobné je to i s ovládáním mřížky za účelem změny intenzity vykreslovaných vektorů. Princip ovládání spočívá ve změně potenciálu mezi katodou a mřížkou, takže zesilovač (mnohdy spíš „zeslabovač“) může být jednodušší, a to i díky tomu, že proud tekoucí mezi katodou a mřížkou je zde velmi malý – ostatně mřížka v elektronkách odpovídá bázi u tranzistorů. Pro experimenty je vhodnější použít černobílou obrazovku (většinou je ve vhodných institucích dostupná zadarmo :-), u barevné obrazovky jsou k dispozici tři mřížky, a je tak možné experimentovat se zobrazením barvy (je však zapotřebí pěti latchů a D/A převodníků oproti původním třem).

6. Řízení vektorového displeje pomocí grafické karty

Velmi zajímavé řešení při řízení vektorového displeje kupodivu nabízí i běžné grafické karty typu VGA či SVGA s plnobarevným (true-color) výstupem. Klasicky se na pinech konektoru pro připojení monitoru objevují (mimo jiného) i signály pro červenou, zelenou a modrou barvovou složku. Jedná se o analogové signály s amplitudou buď 0,7 V nebo 1,0 V. Tyto signály sice nemohou být ovládány přímo, tj. zápisem na nějaké porty grafické karty, ale nepřímo je řídit lze a to poměrně jednoduchým způsobem. Myšlenka řízení je prostá – do framebufferu grafické karty je nutné zapsat údaje takovým způsobem, aby se při jejich čtení a výstupu na monitorový konektor objevovala na pinech informace o souřadnicích elektronového paprsku a o jeho intenzitě. Pokud se podíváme na šestý obrázek, vidíme, že signály red, green a blue řídí všechny tři důležité části obrazovky vektorového displeje. Signál red řídí destičky či cívky, které paprsek vychylují vertikálním směrem, signál blue řídí vychylování směrem horizontálním a konečně signál green řídí intenzitu elektronového paprsku. Další signály nejsou zapotřebí, protože vektorový displej není nutné synchronizovat.

Nyní si řekneme, jak je nutné organizovat framebuffer a jaké informace se do něj mají zapisovat. Framebuffer by měl být dostupný jako jediná paměťová oblast, což dnes umožňují všechny grafické karty typu SVGA. Dále by měl být nastaven grafický režim true-color, kde je jeden pixel uložen na třech nebo čtyřech bytech (čtvrtý byte můžeme ignorovat). Grafická karta by neměla provádět gamma korekci, protože by to vedlo k nelineární závislosti mezi hodnotou barevné složky pixelu a signálem na výstupu grafické karty. V případě korektního nastavení grafického režimu se do framebufferu přímo zapisují informace o bodech, které mají být na vektorovém displeji viditelné. Tyto informace se kódují do trojice bytů, jejichž vzájemné umístění (RGB, BGR atd.) závisí na typu grafické karty. V každé trojici je specifikována x-ová souřadnice paprsku (modrá barvová složka), y-ová souřadnice paprsku (červená barvová složka) a intenzita elektronového paprsku (zelená barvová složka). Vzhledem k tomu, že je rychlost pohybu elektronového paprsku po obrazovce omezena, musí se do framebufferu zapisovat větší množství bodů ležících na vektoru – to vede k tomu, že se při kontrolním pohledu na obrázek (s běžným monitorem) ve framebufferu vytváří jasně viditelné barevné přechody, kdy je zelená složka konstantní a postupně se mění pouze modrá a červená barvová složka.

Tento způsob řízení vektorového displeje přináší několik předností. Zejména není nutné k počítači připojovat další zařízení, postačí pouze trojice zesilovačů připojená ke grafické kartě. Dále je v bazarech prakticky zadarmo dostupné velké množství karet na odzkoušení funkcionality (ideální jsou grafické karty pro sběrnici PCI, protože se tak vytvoří dvoumonitorový systém, čímž se usnadňuje ladění). Nezanedbatelná výhoda tkví i v tom, že se místo vektorového displeje může připojit běžný monitor a programátor může z obsahu framebufferu vyčíst mnohdy zajímavé informace. Nevýhodou je menší přesnost zobrazení, protože grafické karty většinou pracují pouze s osmibitovým rozsahem jednotlivých barvových složek a mnohdy je platných pouze šest nejvyšších bitů (nezáleží na grafickém režimu).

V současnosti vzniká projekt, jehož cílem je vytvořit driver pro emulátor herních konzolí MAME, který by umožňovat připojení vektorových displejů právě pomocí běžných grafických karet.

GFX 30 - 6

Obrázek 6: Řízení vektorového displeje pomocí grafické karty

ict ve školství 24

7. Obsah dalšího pokračování tohoto seriálu

Náš seriál se již blíží ke svému konci. V další, předposlední části, si popíšeme některé méně často používané způsoby grafického zobrazení a také si popíšeme grafické možnosti některých počítačů, na které v předešlých částech tohoto seriálu nezbylo místo.

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.