VGA port je analogové rozhraní sloužící k připojení zobrazovacího zařízení k výstupu grafické karty. Pro přenos dat se využívá jednoduchý protokol, který obsahuje dva typy synchronizačních pulsů. Zobrazovaná data jsou reprezentována třemi základními barevnými složkami, ze kterých je možné vytvořit širokou škálu barev (typicky 16 milionů). Jedná se o násedující barvy: červenou (red), zelenou (green) a modrou (blue). Aby bylo možné jednoznačně určit pozici právě zobrazovaných dat, je zapotřebí kromě informace o barvě i informace o pozici. Pozice je určena pomocí dvou typů synchronizačních pulsů a sice vertikální a horizontální synchronizace. Způsob zobrazování, tj. rozlišení a obnovovací frekvence, jsou připojenou periferií automaticky detekovány podle délky a trvání synchronizačních pulzů. Výhodou je to, že zobrazovací zařízení připojené na VGA port nepotřebuje žádné další informace o režimu apod.
Pro aktivování grafického portu VGA na FITkitu musí být spojena propojka J6.
VGA je jednosměrný (výstupní) port pro připojení zobrazovacích periferií. V nejjednodušším případě tvoří rozhraní pět signálů. A sice tři analogové signály - VGA_RED, VGA_GREEN, VGA_BLUE, každý pro jednu ze složek RGB. A dva synchronizační signály (aktivní v logické 0) - horizontální VGA_HSYNC pro zpětný řádkový běh a vertikální VGA_VSYNC pro zpětný obrazový běh. Z důvodů zmenšení počtu bitů potřebných pro reprezentaci jednotlivých barevných složek a zjednodušení hardware, jsou ve FITkitu použity tři jednoduché tříbitové odporové digitálně analogové převodníky. Na monitoru máme možnost zobrazit maximálně 2^9=512 různých barev.
Port VGA využívá časování závislého na aktivním rozlišení. Jednotlivé pixely jsou s určitou frekvencí odesílány pomocí signálů VGA_RED, VGA_BLUE a VGA_BLUE. Synchronizační VGA_HSYNC, VGA_VSYNC mají negativní polaritu a jsou ve stavu logická 1. Jakmile jsou vyslány všechny barevné hodnoty pro body daného řádku, nastává prodleva (nutná pro návrat elektronového děla monitoru na začátek dalšího řádku). Tato prodleva trvá určitý čas a v tomto čase je aktivní synchronizační puls VGA_HSYNC, což znamená, že je určitý čas ve stavu 0. Po této prodlevě následuje stejným způsobem následující řádek.
Když nastává konec posledního řádku aktivního grafického rozlišení, je nutné navíc aktivovat vertikální synchronizační puls. Tento puls je mnohonásobně delší než horizontální. Vše musí být řízeno vnitřním časováním zařízení, které grafická data vysílá tímto portem. Přijímající zařízení se podřizuje charakteru vstupních dat a dle těchto charakteristik nastavuje rozlišení a obnovovací frekvenci. Proto nemusí být několik prvních snímků zobrazených správně a nebo vůbec, než se zařízení správně zasynchronizují. V praxi to není při obnovovacích frekvencích, které grafický port VGA využívá, viditelné.
Rozlišení |
Obnovovací frekvence [Hz] |
CLK ] [MHz] |
Bodů na řádek |
Délka horizontální synchronizace [bodů] |
Viditelných bodů |
640x480 |
60 |
25.175 |
800 |
96 |
640 |
640x480 |
72 |
31.5 |
832 |
40 |
640 |
720x400 |
70 |
28.322 |
900 |
108 |
720 |
720x350 |
70 |
28.322 |
900 |
108 |
720 |
800x600 |
56 |
36 |
1024 |
72 |
800 |
800x600 |
60 |
40 |
1056 |
128 |
800 |
800x600 |
72 |
50 |
1024 |
120 |
800 |
Tabulka :
Rozlišení |
Obnovovací frekvence [Hz] |
Počet řádků na obraz |
Délka vertikální synchronizace [řádků] |
Viditelných řádků |
640x480 |
60 |
525 |
2 |
480 |
640x480 |
72 |
520 |
3 |
480 |
720x400 |
70 |
449 |
2 |
400 |
720x350 |
70 |
449 |
2 |
350 |
800x600 |
56 |
625 |
1 |
600 |
800x600 |
60 |
628 |
4 |
600 |
800x600 |
72 |
666 |
6 |
600 |
Tabulka :
Navrhnutý řadič je schopen generovat signály pro port VGA pro téměř libovolný grafický režim. Volba režimu se provádí nastavením určité hodnoty na vstupní 61 bitový signál MODE. Tuto hodnotu je nutné držet po celou dobu aktivity řadiče. Nastavení lze provést pomocí funkce setmode, která je dostupná v balíku vga_controller_cfg, kde jsou také přednastaveny hodnoty pro několik grafických režimů. Vstupní hodiny CLK musí mít frekvenci dle požadovaného rozlišení. Frekvence hodinového signálu v závislosti na zvoleném rozlišení je uvedena v tabulce ve sloupci CLK. Jakmile je nastavený režim a řadič je aktivní, tj. signál RST je v log. 0 a signál ENABLE v log. 1, začne řadič generovat výstupní data. Požadované RGB hodnoty se nastavují pomocí signálů DATA_RED, DATA_GREEN a DATA_BLUE. Všechny tyto barvonosné signály jsou 3 bitové. Všechny signály začínající názvem "`signal:VGA_`", se zapojují na grafický port VGA jen s tím rozdílem, že digitální 3 bitové barvonosné hodnoty jsou pomocí D/A převodníku převedeny na analogový signál. Pozici zobrazovaných dat určuje dvojice signálů - ADDR_COLUMN (číslo sloupce) a ADDR_ROW (číslo řádku). Maximální hodnoty jsou závislé na nastaveném režimu - např. pro 640x480 se hodnota ADDR_COLUMN pohybuje v rozhrahu 0-639 a hodnota ADDR_ROW v rozsahu 0-479.
Protože počet taktů mezi požadavkem na data a vlastním vystavením dat se v závislosti na periferii připojené k VGA řadiči může lišit, existuje v řadiči generický parametr REQ_DELAY, pomocí kterého je možné nastavit, kolik taktů potřebuje periferie mezi požadavkem (nastavením ADDR_COLUMN, ADDR_ROW) a vystavením barevných hodnot pro tento požadavek (na signálech DATA_RED, DATA_GREEN a DATA_BLUE). Výchozí hodnota je 1, což znamená, že v taktu bezprostředně následujícím za požadavkem musí být vystavena platná data.
Rozhraní implementovaného VGA řadiče je na obrázku 2.1.
Popis generických parametrů entity řadiče:
REQ_DELAY - zpoždění, definující počet taktů mezi vystavením adresy na signálech ADDR_ROW/ADDR_COLUMN a očekáváním platných vstupních dat na signálech DATA_RED, DATA_GREEN a DATA_BLUE.
Popis vstupních a výstupních signálů entity řadiče:
DATA_RED, DATA_GREEN, DATA_BLUE - hodnoty barev RGB pro požadovaný obrazový bod
MODE - nastavení grafického řežimu VGA
ADDR_ROW, ADDR_COLUMN - číslo řádku a číslo sloupce určující pozici bodu, který se bude zobrazovat
CLK - vstupní hodinový signál řadiče (frekvence dle rozlišení!)
RST - reset řadiče
ENABLE - aktivace řadiče
VGA_RED, VGA_GREEN, VGA_BLUE, VGA_HSYNC, VGA_VSYNC - signály připojené na VGA port