Celem ćwiczenia jest zapoznanie się z budową oraz z zasadą działania karty graficznej.
Z programową obsługą kart graficznych podczas, której należy programowo zmieniać podstawowe parametry kart graficznych takie jak tryb wyświetlania , rozdzielczość oraz zmianę koloru wyświetlanego punktu na ekranie monitora. Należy zapoznać się ze sposobem wyświetlania informacji zarówno w trybie tekstowym jak i graficznym.
2.1. PODSTAWY ARCHITEKTURY KARTY VGA .
Karta graficzna VGA została opracowana i wprowadzona do produkcji przez firmę IBM w roku 1987, z przeznaczeniem dla mikrokomputerów rodziny PC i PC/2. Architektura sterownika VGA stanowiła rozszerzenie poprzedniego standardu EGA, pochodzącego z roku1984. Zmiany w budowie wprowadzono w taki sposób, by karta VGA mogła emulować tryby tekstowe i graficzne występujące w poprzednich sterownikach obrazu firmy IBM (MDA, CGA i EGA).
Najważniejsze dla użytkownika nowe cechy karty VGA to większa matryca znaków trybach alfanumerycznych (16x9 punktów) oraz nowe tryby graficzne: 16-kolorowy o rozdzielczości 640x480 punktów oraz 256-kolorowy o rozdzielczości 320x200 punktów. Ponadto barwy wyświetlane na ekranie (zarówno w trybach 16- jak i 256- kolorowych) można wybierać z palety zawierającej 218 (262144) wartości.
Od 1987 roku szereg producentów oferuje scalone układy kontrolerów graficznych bazujące na architekturze VGA, lecz posiadające szereg rozszerzeń. Karty zbudowane w oparciu o te układy określane są handlową nazwą „Super” lub „Super VGA”. Niestety nazwa ta nie oznacza już ścisłego standardu. „Super” – rozszerzenia różnią się między sobą tak, że ich wykorzystanie wymaga innych technik programowania dal układów poszczególnych producentów.
Pod względem funkcjonalnym sterownik monitora standardu EGA można podzielić na cztery główne elementy funkcjonalne:
- kontroler CRT (ang. CRT Controller, CRTC),
- sekwencer (ang. sequencer),
- kontroler graficzny (ang. Graphics Controler, GDC),
- kontroler atrybutów (ang. Attribute Controler, ATC),
-
karta VGA posiada dodatkowo piąty element:
- blok przetworników cyfrowo – analogowych (C/A; ang. DAC – Dogital to Analog Converters).
Z poziomu procesora karta EGA i VGA jest „widoczna” jako zbiór portów w przestrzeni wejścia - wyjścia oraz obszar pamięci obrazu położony, w zależności od trybu pracy, między adresami A000:000h a B000:FFFFh. Bezpośrednie jej programowanie sprowadza się zatem do zapisu i odczytu odpowiednich wartości do i z pamięci oraz portów wejścia - wyjścia.
Krata graficzna VGA wykonana jest w postaci 16-bitowego modułu przeznaczonego do instalacji w 16-bitowym slocie ISA (PCI) na płycie głównej. W skład karty wchodzi wiele układów elektronicznych m.in. układ VLSI o wielkiej skali integracji mogący realizować wszystkie funkcje standardu zwanego jako ”VGA”.
W skład karty wchodzą:
¨ pamięć ekranu – na kartach EGA \VGA zamontowana jest pamięć dynamiczna RAM służąca jako pamięć ekranu, czyli przechowująca informację o wyświetlanym obrazie. Pamięci towarzyszą układy nadzorujące dostęp do niej. Pamięć ekranu zajmuje fragment normalnej przestrzeni adresowej CPU. Procesor ma do nie swobodny dostęp, jednak karta generuje sygnały wstrzymujące chwilowo procesor (tzw. wait states) jeżeli nastąpi konflikt. Na oryginalnej karcie EGA zamontowano 64kB pamięci RAM, zachowując możliwość jej rozbudowy do 256 kB, blokami po 64kB. Obecnie spotykane karty EGA mają zamontowane pełne 256 kB RAM. Wszystkie karty VGA mają przynajmniej 256 kB pamięci ekranu. Większość kart realizujących rozszerzony standard VGA ( tzw. Super VGA ) ma większą pamięć ekranu – typowo 512 kB albo 1 MB.
¨ ROM BIOS – karty EGA \ VGA dysponują własną pamięcią ROM, zawierająca rozszerzenie standardowego BIOS komputera. EGA \ VGA BIOS przejmuje realizacje funkcji BIOS związanych z obsługą ekranu. W pamięci ROM karty zapisane są również zestawy definicji znaków. Podczas wyświetlania tekstu definicje znaków nie są jednak pobierane z pamięci ROM, lecz z RAM, gdzie muszą zostać uprzednio przepisane.
¨ kontroler CRT – jest to zestaw programowalnych liczników, generujących zgodnie z zadanymi parametrami wszystkie przebiegi czasowe niezbędne przy wyświetlaniu obrazu, tzn. częstotliwości impulsów synchronizacji, sygnały wygaszania itd.. Steruje we / wy z monitora, zajmuje się odświeżaniem dynamicznej pamięci obrazu, ” taktuje” pobieranie danych z pamięci ekranu. Kontroler CRT generuje sprzętowo kursor, podkreśleni i nadzoruje obsługę pióra świetlnego na karcie EGA. Układ ten zawiera 26 rejestrów wewnętrznych w przypadku karty EGA i 24 dla sterownika VGA. Rejestry te są dostępne pośrednio przez dwa porty, pełniące rolę rejestru indeksowego (adresowego) i rejestru danych. Aby odczytać lub wpisać nową wartość do rejestru wewnętrznego należy wpisać jego numer (indeks) do portu indeksowego a następnie odczytać lub zapisać port będący rejestrem danych. Bezpośrednie operacje na rejestrach sterownika CRT są niezbędne jedynie w specyficznych zastosowaniach graficznych takich jak:
- programowanie własnych, niestandardowych trybów rozdzielczości,
- przewijanie (scrolling) obrazu,
- podział ekranu na dwie części wyświetlające niezależne obrazy (splitting),
- operacje na kursorze.
¨ sequencer - blok Sequencera kontroluje dostęp do pamięci ekranu. Z jednej strony blokuje lub umożliwia procesorowi zapis do niej, z drugiej strony - nadzoruje cykliczny dostęp do pamięci układów wyświetlających obraz. Kontroluje podstawowe przebiegi czasowe (częstotliwość generowania pojedynczych pikseli - tzw. 'dot clock' oraz liczb‘ pikseli przypadającą na linię znaku). Zawiera 6 rejestrów wewnętrznych, z którymi komunikacja programowa wygląda tak samo jak w przypadku sterownika CRT.
¨ Kontroler graficzny - układ ten może być potraktowany jako prosty, wyspecjalizowany procesor udostępniający głównemu procesorowi komputera mechanizmy wyższego rzędu pozwalające na realizowanie operacji graficznych. Graphics Controller nie zapewnia realizacji takich funkcji, jak rysowanie wielokątów, wypełnianie obszarów itp., pozwala jednak wybrać jeden z kilku sposobów zapisu i odczytu pamięci ekranu, może automatycznie wykonywać funkcje logiczne (AND, OR, XOR) przy zapisie. Ponadto kontroluje położenie pamięci ekranu w przestrzeni adresowej CPU. Zawiera 9 rejestrów wewnętrznych dostępnych na tej samej zasadzie jak w przypadku sterownika CRT.
¨ serializer - układ ten przetwarza informację o obrazie (w szczególności o kolorach poszczególnych elementów obrazu) zawartą w pamięci ekranu do postaci akceptowanej przez Attribute Controller (kontroler atrybutów). Ponieważ pamięć ekranu podzielona jest na rozłączne obszary, tzw. mapy bitowe, Serializer "składa" bity z poszczególnych map w jeden ciąg w celu prawidłowego określenia przez Attribute Controller numeru wzorca koloru.
¨ kontroler atrybutów - Na karcie EGA układ ten odpowiedzialny jest za "składanie" danych z Serializera i informacji o aktualnie używanej palecie kolorów w cyfrowy sygnał kolorów GRB dla monitora kolorowego albo w cyfrowy sygnał wizji dla monitora monochromatycznego. Na karcie VGA Attribute Controller nie generuje cyfrowego sygnału kolorów lecz jedynie wybiera numer rejestru Video Dac, który zawiera definicję odpowiedniego koloru wyświetlanego punktu. Dla zachowania zgodności z EGA, Attribute Controller zawiera 16 rejestrów palety. Dostęp do sześciu rejestrów wewnętrznych jest inny niż dla sterownika CRT. Zapis lub odczyt (odczyt tylko dla VGA) odbywa się w sposób pośredni poprzez jeden port, pełniący na przemian rolę rejestru indeksowego (adresowego) i rejestru danych. Adres portu jest różny dla operacji zapisu i odczytu.
· przetwornik analogowo – cyfrowy - Układ ten występuje jedynie na karcie VGA. Jest to przetwornik cyfrowo-analogowy, który zamienia cyfrową informację o kolorze, na sygnał analogowy dla monitora VGA. Zawiera on 256 rejestrów (zwanych rejestrami DAC), w których może przechowywać cyfrowe definicje 256 kolorów. Typowo, numer koloru elementu obrazu zapisany w pamięci ekranu, wskazuje na jeden z rejestrów palety Attribute Controllera. Rejestr palety zawiera numer rejestru DAC, a wskazany w tam sposób rejestr DAC zawiera 18-bitową definicję koloru (co daje 262.144 możliwe barwy). Ta definicja zamieniana jest na sygnał analogowy. Ponadto na karcie znajdują się liczne układy pomocnicze takie jak bufory lub generator kwarcowy i inne.
2.2. ZASADA DZIAŁANIA KARTY GRAFICZNEJ VGA .
Sygnał kierowany z procesora do rejestrów karty VGA trafia do kontrolera graficznego. Za pośrednictwem znajdujących się tam rejestrów dane obrazowe mogą być poddane - przed wpisaniem do pamięci karty - operacjom logicznym OR, AND, XOR, przesunięciu cyklicznemu w prawo, porównaniu z aktualnie wyświetlanymi danymi lub zamaskowaniu, czyli zablokowaniu możliwości przesłania wybranych danych do pamięci. Aby dane z CPU mogły być wpisane do pamięci karty musi na to ‘wyrazić zgodę' sequencer. Posiada on możliwość blokowania wpisania danych do map bitowych. Jeżeli dane ekranowe taką zgodą otrzymały to pamięć karty graficznej jest gotowa do przyjmowania danych.
W następnej kolejności dane przekazywane są do serializera, który zamienia je na postać akceptowaną przez kontroler atrybutów. Jak już wiemy pamięć jest podzielona na rozłączne obszary (mapy bitowe), tak więc serializer składa odpowiednie bity w jeden ciąg.
Złożone informacje wędrują do kontrolera atrybutów, który na podstawie nich określa numer rejestru Video DAC (wzorca koloru), określający kolor wyświetlanego punktu. Dane z kontrolera atrybutów przechodzą przez blok przetworników C/A, gdzie są zamieniane na analogowe sygnały RGB wyświetlane bezpośrednio na ekranie monitora.
W procesie wyświetlania obrazu ważną rolę odgrywa także kontroler CRT, którego podstawowe zadania zastały omówione w opisie budowy karty VGA.
SCHEMAT BLOKOWY PRZEDSTAWIAJĄCY BUDOWĘ KARTY VGA
sygnał z CPU
SERIALZER
KONTROLER ATRYBUTÓW
KONTROLER
GRAFICZNY
PAMIĘĆ EKRANU
PRZETWORNIK CYFR.-ANALOG.
SEQUENCER
CRT
ROM
BIOS
MONITOR
2.3. TRYBY PRACY STEROWNIKÓW OBRAZU .
Numer trybu
Rodzaj trybu
Rozmiar ekranu
Matryca znaku
Liczba kolorów
Stero-wnik obrazu
Org. pam. dla trybów graf.
Adres pocz. pam. obrazu
00/08
Tekstowy
40x25
#
16/8 poziomów szarości
C,E,V
$B800
01/81
16/8
02/82
80x25
03/83
catastros.ops