Hlavní navigace

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

7. 9. 2005
Doba čtení: 13 minut

Sdílet

V předchozím pokračování tohoto seriálu jsme si ukázali, jakým způsobem je možné vytvořit jednoduchou grafickou kartu, která neumí nic jiného než zobrazení rastrového obrázku uloženého ve video paměti. Dnes návrh grafické karty dokončíme, protože se budeme věnovat způsobům zobrazení rastrových snímků na televizním monitoru i analogovém VGA či SVGA monitoru.

Obsah

1. Grafický výstup na televizní monitory
2. Výstup na televizi
3. Časování signálů platné pro normu PAL
4. Časování signálů platné pro normu NTSC
5. Výstup na VGA monitor
6. Časování v hi-res grafickém režimu VGA
7. Další formy grafického výstupu
8. Odkazy na dostupné zdroje na Internetu
9. Obsah dalšího pokračování tohoto seriálu

1. Grafický výstup na televizní monitory

Grafický výstup na televizní monitory, které odpovídají normě PAL či NTSC, je možné vytvořit například pomocí obvodu CXA 1645M od firmy Sony, který převádí barvové signály z formátu RGB (samozřejmě spolu se synchronizačními signály H-sync aV-sync) na formát Y-C. Při tomto způsobu přenosu je pomocí signálu Y na pinu YOUT kódována světlost pixelů spolu se synchronizací (tj. ke světlosti jsou přimodulovány signály H-sync a V-sync) a pomocí signálu C na pinu COUT barva pixelů. Propojení s televizním monitorem se provádí s využitím kabelu a konektorů určených pro připojení běžného S-videa nebo pomocí konektoru pro přenos kompozitního signálu. Amplituda signálu Y s přenášenou světlostí pixelů je rovna jednomu voltu, amplituda signálu C s jejich barvami je 286 mV. Výše zmíněný obvod CXA 1645M převody na tyto rozsahy hodnot provádí automaticky. Poznámka: v některých materiálech je signál Y označován jako luminance pixelů a signál C jako chrominance. Samotné označení pro pixel se potom zkracuje na pel – je vidět, že terminologie použitá v digitální video technice se od počítačové grafiky trošku odlišuje. V dalších kapitolách si ukážeme i řešení grafického výstupu, které není založené na obvodu CXA 1645M.

2. Výstup na televizi

Před uvedením časování signálů platných pro normy PAL a NTSC si zopakujme, jak vypadá časování pro jeden obrazový řádek i pro celý snímek. Na prvním obrázku je zobrazen průběh signálů pro jeden obrazový řádek, na obrázku druhém průběh signálů platných pro celý snímek.

GFX 27-1

Obrázek 1: Průběh signálů generovaných pro zobrazení jednoho obrazového řádku

GFX 27-2

Obrázek 2: Průběh signálů generovaných pro zobrazení jednoho obrazového snímku

Ve světě se v současné době používá poměrně velké množství standardů a pseudostandardů, které popisují, jakým způsobem je snímek přenášen od zdroje grafiky na televizní monitor či přímo na televizi. Nejpoužívanější jsou normy PAL, NTSC a SECAM (ta je postupně nahrazována normou PAL). Ve třetí kapitole stručně popíšu normu PAL, čtvrtá kapitola je věnována normě NTSC. Při čtení si však musíme uvědomit, že existuje mnoho variant těchto standardů, zvláště to platí pro standard PAL.

3. Časování signálů platné pro normu PAL

Standard PAL neboli Phase-Alternating Line, Phase Alternation by Line resp. Phase Alternation Line (po zkušenostech s NTSC aSECAMem mu mnozí říkají Perfect At Last :-) je používán zejména v západní a střední Evropě. Tento standard je charakteristický zejména snímkovou frekvencí 25 Hz a přenosem 625 řádků v jednom snímku. PAL vychází ze starších standardů, které sloužily k přenosu monochromatických (černobílých) snímků. Celý formát přenosu je navržen tak, aby byly zabezpečeny následující kombinace zdroje grafických signálů a televizí:

  1. monochromatický signál a černobílá televize
  2. monochromatický signál a barevná televize
  3. barevný signál a černobílá televize
  4. barevný signál a barevná televize

Aby bylo tohoto požadavku dosaženo, používá se zvláštní barvový prostor a k němu příslušné kódování barev – YUV. Složka Y odpovídá světlosti pixelu a je to jediná složka, která je rozpoznávána černobílými televizemi. K této složce jsou přidány dvě podsložky (jsou totiž přenášeny s menší frekvencí) U a V, které přenášejí, zjednodušeně řečeno, rozdíl mezi světlostí pixelů a jejich modrým a červeným odstínem – na některých televizorech se dodnes nachází potenciometr, pomocí něhož lze měnit poměr mezi složkou U a V. Vzorec pro přepočet mezi barvou specifikovanou v barvovém prostoru RGB (který generuje navrhovaná grafická karta i naprostá většina „obyčejných“ grafických karet) a barvou v prostoru YUV je následující:

Y = 0,299R + 0,587G + 0,114B
U = 0,492(B - Y)
  = - 0,147R - 0,289G + 0,436B
V = 0,877(R - Y)
  = 0,615R - 0,515G - 0,100B 

V některých materiálech lze najít odlišné multiplikativní konstanty, to však není příliš podstatné – při přenosu snímku stejně dochází k mnoha dalším „deformacím“, prakticky nikdy se nejedná o lineární převod.

Z časového hlediska má norma PAL následující charakteristiky:

Základní charakteristiky normy PAL
Počet (půl)snímků za sekundu 25
Celkový počet řádků 625
Počet viditelných řádků 576 (některé neviditelné řádky využívá teletext)
Počet pixelů na řádku cca 768

Vzhledem k tomu, že se v systému PAL data přenášejí analogově, není počet pixelů na řádku specifikován zcela přesně. Pokud bychom se měli držet Nyquistova teorému, je horizontální počet pixelů dokonce poloviční než výše uvedená hodnota – v daném frekvenčním rozsahu není možné, aby dva pixely ležící vedle sebe měly bílou a černou barvu. V praxi tyto rozpory příliš nevadí, protože synchronizace se provádí po celých řádcích a nikoli po jednotlivých pixelech. Délka trvání jednoho řádku je 64µs, z toho cca 4µs zabere horizontální synchronizační puls (0V), po němž následuje pauza – černá barva (cca 0,3V) v délce 8µs. Vertikální synchronizační puls má maximální amplitudu (1V) a sestává z několika krátkých impulsů.

Základem pro grafický výstup navrhované grafické karty je monitor typu VGA či SVGA, převod na PAL je však jednoduchý. Pro tento typ monitorů se používá konektor typu D-SUB 15, někdy také označovaný jakoSUB-D 15 – číslo v označení typu konektoru odpovídá počtu pinů. Na tento konektor jsou vyvedeny tři analogové barvonosné signály Red, Green a Blue spolu se synchronizačními pulsy. Amplituda barvonosných signálů je buď 0,7V, nebo 1V, mnoho starších profesionálních monitorů obsahovalo přepínač pro obě amplitudy signálů. Další piny se používají pro detekci typu monitoru (barevný/černobílý) a pro načtení podrobnějších informací o monitoru (podporovaná rozlišení, obrazové frekvence atd.) pomocí sériové linky. Nejjednodušší možností, jak provést výstup na televizní monitor, je použití konektoru typu SCART, který obsahuje signály velmi podobné signálům pro VGA monitor. Jednoduché zapojení převodníku je patrné ze třetího obrázku (obrázek byl získán z adresy www.qsl.net/dh1dm/t­v_50hz_svga). Všimněte si, že u barvonosných signálů je pouze upravena jejich impedanční charakteristika, zatímco horizontální a vertikální synchronizační signál je spojen do signálu jednoho – grafickou kartu je možné naprogramovat tak, že každý synchronizační signál bude mít opačnou polaritu. Zapojení pinů u obou typů konektorů je ukázáno v tabulkách pod obrázkem. Poznámka: všimněte si, že při použití konektoru SCART se barvy nepřevádějí do barvového prostoru YUV, což nám značným způsobem ulehčilo práci a zjednodušilo celé zapojení na minimum součástek.

GFX 27-3

Obrázek 3: Jednoduchý převodník mezi VGA výstupem a SCART

Zapojení pinů v konektoru D-SUB 15
Pin Význam
01 Red Video (červený barvonosný signál)
02 Green Video (zelený barvonosný signál)
03 Blue Video (modrý barvonosný signál)
04 NC nebo čtení informací z monitoru (monitor ID bit 2)
05 Ground (společná zem)
06 Red Return (zem pro červený barvonosný signál)
07 Green Return (zem pro zelený barvonosný signál)
08 Blue Return (zem pro modrý barvonosný signál)
09 tento pin někdy chybí – klíč
10 Sync Return (zem pro synchronizační pulsy)
11 NC nebo čtení informací z monitoru (monitor ID bit 0)
12 NC nebo čtení informací z monitoru (monitor ID bit 1)
13 Horizontal Sync (horizontální synchronizační puls)
14 Vertical Sync (vertikální synchronizační puls)
15 NC nebo čtení informací z monitoru (monitor ID bit 3)
Zapojení pinů v konektoru SCART
Pin Význam
01 Audio output, right
02 Audio input, right
03 Audio output, left
04 Audio ground
05 Blue ground (zem pro modrý barvonosný signál)
06 Audio input left
07 Blue (modrý barvonosný signál)
08 Function switching (no signal, internal bypass, widescreen, normal screen)
09 Green ground (zem pro zelený barvonosný signál)
10 D2B input
11 Green (zelený barvonosný signál)
12 D2B output
13 Red/Chroma © ground
14 D2B ground
15 Red/Chroma (červený barvonosný signál)
16 Vertical blank (VBL)
17 Composite video ground/Composite sync ground/Luminance (Y) ground
18 VBL ground
19 Composite video output/Composite sync output/Luminance (Y) output
20 Composite video input/Composite sync input/Luminance (Y) input
21 Common ground (metal shield)

4. Časování signálů platné pro normu NTSC

NTSC neboli National Television System(s) Committee je zkratka, kterou mnoho techniků překládá jako Never The Same Colors apod. Tato zkratka odpovídá skutečnosti, že kódování barev je u této normy opravdu komplikované a v mnoha případech, zejména při přenosech na delší vzdálenost, jsou na obrazu patrné nežádoucí barevné změny. Podobně jako u normy PAL, i zde se klade důraz na zpětnou kompatibilitu s černobílými televizemi. Proto je luminance pixelů přenášena zvlášť (Y) a chrominance (barevný odstín) pomocí fázové a amplitudové modulace nosných sinusových signálů I (In-phase) a Q (quadrature). Výsledkem je kódování barev nazvané YIQ. Pro převod mezi barvovým prostorem RGB a YIQ se používá následující přepočet:

Y = 0,299R + 0,587G + 0,114B
I = 0,735514(R - Y) - 0,267962(B - Y)
  = 0,595716R - 0,274453G - 0,321263B
Q = 0,477648(R - Y) + 0,412626(B - Y)
  = 0,211456R - 0,522591G + 0,311135B 

Všimněte si, že význam složek I a Q není tak zřejmý jako u normy PAL, kde jsme tyto složky mohli považovat za barvonosné signály barev R a B (samozřejmě se záporným významem, protože se odečítaly od intenzity pixelu).

Z časového hlediska má norma NTSC následující charakteristiky:

Základní charakteristiky normy NTSC
Počet (půl)snímků za sekundu 29,976
Celkový počet řádků 525
Počet viditelných řádků 480
Počet pixelů na řádku cca 768

Ve výše uvedené tabulce je nám jistě povědomé číslo 480, které dodnes patří mezi jednu ze základních konstant, od kterých se odvíjí rozlišení digitálního videa, digitálních fotoaparátů, grafických karet atd. Díky poměru obrazu 4:3 na počítačových monitorech se došlo ke standardnímu rozlišení 640×480 pixelů a od tohoto rozlišení jsou odvozeny další standardy, například CIF a QCIF. Celkový počet řádků u normy NTSC nebyl zvolen náhodně, protože se jedná o číslo, které vznikne vynásobením tří prvočísel: 3×5×5×7 – čítač řádků lze tedy vytvořit s využitím jednoduchých děliček, což bylo zvláště důležité v minulosti, kdy se v televizích používaly především „regulární“ součástky – elektronky, tranzistory či jednoduché integrované obvody. Dnes samozřejmě není problém čítač nastavit na prakticky libovolnou hodnotu, což ostatně dnes a denně předvádí všechny grafické karty a multifrekvenční monitory.

Zajímavý je také počet snímků zobrazených za sekundu. Původně se používal kmitočet přesně 30 Hz, což odpovídá polovině frekvence rozvodné sítě USA. Má to svůj význam (stejně jako 25 Hz v případě normy PAL) – nedochází k interferencím při zobrazování na televizi se žárovkami a zářivkami. S příchodem „barevného“ NTSC se frekvence zmenšila na 29,976 Hz. Toto na první pohled zajímavé číslo je k původním 30 Hz v poměru 1000:1001. A 1001 je možné složit z prvočísel 7, 11 a 13 – opět se dostáváme k použití děliček. Nevýhodou použité snímkové frekvence je složitý převod videa na film s 24 snímky za sekundu a naopak. Používají se k tomu takzvané pull-down a pull-up převodníky, které převádějí snímky v časovém poměru 3:2 nebo 2:3 – video je však typickým způsobem trhané. Norma PAL tímto neduhem netrpí, protože se při převodu využijí všechny snímky, a video je tak nepatrně urychleno v poměru 25:24 – na pohybu není tato změna prakticky znát, trošku horší je to se zvukem, protože i tóny jsou samozřejmě posunuty o 4 % výše (naštěstí nemám absolutní sluch).

Pro převod mezi VGA a NTSC se používá poněkud složitější zapojení, ve kterém je využit obvod AD 722 firmy Analog Devices. Zapojení je uvedeno na čtvrtém obrázku, bližší informace lze získat na stránce www.tydyt.cz/ka­bely/adaptery/ad722­.htm a www.epanorama­.net/circuits/vga2tv/vga­2palntsc.html. Vzhledem k charakteristikám obvodu AD 722 je možné toto zapojení použít i pro systém PAL, v obou případech je výstup proveden na S-video i kompozitní video a nikoli na SCART (SCART má teoreticky lepší signálové charakteristiky, ale jinak je to strašný gigant a vůbec se do dnešní doby miniaturizace nehodí). Všimněte si také použití slavné 555 – snad nejvíce používaného integrovaného obvodu v historii. Pět set padesát pětka je zde použita pro vyrovnání délky synchronizačních impulsů, které by měly trvat přibližně 4,6 µs.

Obrázek 4: Převodník mezi VGA výstupem a S-videem a kompozitním videem

5. Výstup na VGA monitor

Grafický výstup na VGA monitor je v některých ohledech jednodušší než výstup na televizní monitor. Je to z toho důvodu, že pro kódování barvových signálů se u VGA monitoru používá barvový prostor RGB, který odpovídá formátu pixelů uložených ve video paměti (framebufferu) navrhované grafické karty. Nejprve si zopakujme, jaké základní grafické režimy nabízejí grafické karty typu VGA. Všechny tyto režimy totiž musí VGA monitory umět zobrazit.

Nové grafické režimy karty VGA
Horizontální rozlišení Vertikální rozlišení Poznámka
640 200 existuje pro podporu některých LCD panelů
640 350 zpětná podpora pro grafické režimy karty EGA
640 400 použit u některých starších notebooků
640 480 časování odpovídá hi-res grafickému režimu
720 200 použito v textovém režimu s polovičním vertikálním rozlišením
720 350 použito v textovém režimu s 43 řádky textu (emulace režimů EGA)
720 400 standardní režim se snímkovou frekvencí 70 Hz
720 480 režim s třiceti zobrazenými řádky textu

Z těchto režimů nás zajímá pouze grafický režim 640×480 pixelů, který může být zobrazen i na televizním monitoru pracujícím v normě PAL nebo NTSC (u normy PAL se musí snížit snímková frekvence z 60 resp. 30 Hz na 25 Hz). Proto si v další kapitole uvedeme časování v tomto grafickém režimu. Navrhovaná grafická karta by měla tento režim podporovat, a to buď přímo, nebo s polovičním horizontálním a/nebo vertikálním rozlišením: 320×240, 640×240, 320×480 a 640×480.

6. Časování v hi-res grafickém režimu VGA

V grafickém režimu o rozlišení 640×480 pixelů se používá následující časování: hodinová frekvence je nastavena na 25,175 MHz (je použit první krystal s nižší rezonanční frekvencí), řádková frekvence je rovna 31469 Hz, což odpovídá dvojnásobku řádkové frekvence dle normy NTSC. Obrazová frekvence (tj. počet obnovení obrazu za sekundu) je rovna 59,94 Hz, což opět odpovídá normě NTSC – viz předchozí kapitoly. Vzhledem k takto nastavenému časování je možné poměrně jednoduchým způsobem převést video signál z karty VGA na video vstup televize pracující dle normy NTSC. Je samozřejmě nutné upravit barvovou paletu, protože NTSC nepoužívá RGB kódování barev – viz výše uvedené zapojení s obvodem AD 722.

Časování jednoho obrazového řádku v režimu 640×480 vypadá následovně:

  8 pixelů zpoždění mezi horizontální synchronizací a daty
 96 pixelů horizontální synchronizace
 40 pixelů zpoždění mezi daty a horizontální synchronizací
  8 pixelů levý okraj (přenáší se barva)
640 pixelů video signál (data)
  8 pixelů pravý okraj (přenáší se barva)
---------
800 pixelů celkem 

Jak je zvykem, jsou všechny časové údaje uvedeny v „pixelech“, délka trvání jednoho „pixelu“ se jednoduše vypočítá z hodinové frekvence 25,175 MHz. Vykreslení jednoho snímku přitom trvá 64 µs, což při přepočtu na pixely znamená, že synchronizační puls zde trvá o něco déle, než je podle PAL či NTSC nutné.

Časování jednoho snímku vypadá následovně:

  2 řádky zpoždění mezi vertikální synchronizací a daty
  2 řádky vertikální synchronizace
 25 řádků zpoždění mezi daty a vertikální synchronizací
  8 řádků horní okraj (přenáší se barva)
480 řádků video signál
  8 řádků dolní okraj (přenáší se barva)
---------
525 řádků celkem 

7. Další formy grafického výstupu

Kromě výše zmíněných možností grafického výstupu je možné použít i moderní DVI. Tento název není zcela přesný, protože kromě digitálně přenášeného obrazu se na jednom z typů konektorů DVI (konkrétně DVI-I) nachází i analogový výstup ve formě samostatně vyvedených signálů pro barvové složky i pro oba synchronizační signály (RGBHV). Samotné DVI není moc povedená technologie, protože (kromě nekompatibility s předchozími technologiemi) kvůli přenosovému pásmu 165 MHz jsou podporována rozlišení 1920×1080@60 resp. 1280×1024@85 – tj. jedná se o rozlišení pro dnešní zobrazovače. Kromě toho je možné použít i duální přenos (na jiném HW !), kde se přenosové pásmo zdvojnásobí, takže je možné použít rozlišení 2048×1536@60 resp. 1920×1080@85. To však v budoucnu bude málo. I samotný přenos barvových dat digitálně je diskutabilní, protože převod na analogový signál je stejně nutné provést. Přínosem DVI je tak hlavně lepší synchronizace jednotlivých pixelů, to by ovšem zajistil i jednoduchý synchronizační signál.

CS24_early

8. Odkazy na dostupné zdroje na Internetu

  1. en.wikipedia.or­g/wiki/PAL – základní informace o televizní normě PAL
  2. en.wikipedia.or­g/wiki/NTSC – základní informace o televizní normě NTSC
  3. en.wikipedia.or­g/wiki/YUV – kódování barev YUV
  4. en.wikipedia.or­g/wiki/YIQ – kódování barev YIQ
  5. en.wikipedia.or­g/wiki/SCART – konektor typu SCART
  6. en.wikipedia.or­g/wiki/S-Video – konektor typu S-Video
  7. en.wikipedia.or­g/wiki/RCA_jac­k – konektor typu RCA (jack)
  8. www.inforamp.net/~po­ynton/Poynton-color.html – colorspace-faq – frequently asked questions about gamma and color
  9. www.qsl.net/dh1dm/t­v_50hz_svga/ – výstup z VGA na televizní monitor či televizi

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

V dalším pokračování seriálu o grafických kartách a grafických akcelerátorech se podíváme do daleké minulosti, kdy se pro zobrazení počítačové grafiky používaly (samozřejmě kromě tiskáren a plotterů) i vektorové displeje. A jelikož je počítačová grafika prakticky od svého počátku spjata s hrami, ukážeme si použití vektorové grafiky na známých hracích automatech.

Byl pro vás článek přínosný?

Autor článku

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