VGA

Allikas: Vikipeedia

VGA (inglise Video Graphics Array ehk video graafikamassiiv; vahel ka viidatud kui graafikaadapter) viitab eelkõige kuvari riistvarale, mida tutvustati esmakordselt 1987. aastal IBM PS/2 tüüpi arvutitel. Tänu selle laialdasele kasutusvõtule on hakatud seda lühendit kasutama ka analoog arvutikuvari 15-kontaktilise D-subminiature VGA pistikühenduse aga ka 640x480 pikslist koosneva lahutusvõime puhul. Personaalarvutite turul pärast 1990. aastaid VGA lahutusvõimet ei kasutatud, kuid see on saamas populaarseks lahutusvõimeks uutel mobiilseadetel.

VGA oli viimane IBM-i loodud graafikastandard, millele suurem osa "PC kloonidest" vastasid. Seepärast on see tänasel päeval (aasta 2010) üheks vähestest standarditest, mille osas valdava enamuse personaalarvutite riistvaralistelt graafikalahendustelt võib eeldada ühilduvust ilma spetsiaalselt mingi seadme jaoks tehtud tarkvarata.

IBM vahetas VGA ametlikult välja nn "laiendatud graafikamassiivi" ehk XGA (Extended Graphics Array) vastu, kuid konkureerivad arvutitootjad võtsid selle asemel kasutusele mitmeid omi ja XGA'st erinevaid VGA laiendusi. Nende ühisnimetuseks sai Super-VGA. Tänapäeval on VGA ja Super-VGA signaalid sageli kättesaadavad DVI pistikühenduse kaudu, juhul kui graafikaadapter analoogsignaale väljastab.

Tehnilised andmed[muuda | redigeeri lähteteksti]

Riistvara[muuda | redigeeri lähteteksti]

VGA võrdluses teiste standarditega.

VGA-d nimetatakse massiiviks, mitte aga adapteriks, sest see oli algselt rakendatud üheainsa kiibina (ASIC), asendades Motorola 6845 ja tosinaid teisi loogilisi kiibistikke, mis hõlmasid endas IBM MDA, CGA ja EGA täispikkuses ISA graafikakaarte. Kuna VGA oli ühekiibiline, siis sai teda vähese pingutusega ka paigutada otse arvuti emaplaadile (vajalikud olid ainult videomälu, (taktsageduse) ajastuskristall ja väline RAMDAC) ja esimesed IBM PS/2 mudelid olid varustatud emaplaadile integreeritud VGA-ga. Võrdluseks võib tuua "esimese põlvkonna" IBM PC desktop mudelid – PC [5150], PC/XT [5160] ja PC AT [5170] – mis vajasid ekraani ühendamiseks siinile installeeritud kuvaadapterit.

VGA spetsifikatsioonid (tehnilised andmed) on järgmised:

  • 256 KB Video RAM-i (Esimesi kaarte oli võimalik tellida ka 64 KB või 128 KB RAM-ga, kaotades sellega aga mõned videorežiimid)
  • 16 värv ja 256 värvi režiim
  • 262 144 väärtusega värvipalett (6 bitti kanali kohta, ehk punasele 6 bitti, sinisele 6 bitti ning rohelisele 6 bitti)
  • Valitav 25.175MHz või 28.332 MHz töösagedus
  • Horisontaalselt maksimaalselt 800 pikslit
  • Maksimaalselt 600 rida
  • Värskendussagedus kuni 70 Hz
  • Pakitud piksli režiim: 256 värvi (Mode 13h)
  • Sujuvkerimise riivaraline tugi
  • Ekraanipoolitamise tugi

VGA toetab nii graafilist režiimi Kõik Punktid Adresseeritud, kui ka tähtnumbrilist tekstirežiimi. Graafika standardrežiimid on:

  • 640x480 16 värvi režiimis
  • 640x350 16 värvi režiimis
  • 320x200 16 värvi režiimis
  • 320x200 256 värvi režiimis (Mode 13h)

Peale standardrežiimide saab VGA-d seadistada ka jäljendamaks paljude tema eelkäijate (EGA, CGA ja MDA) mitmeid režiime. BIOS-i tasemel on ühilduvus peaaegu täielik, aga ka registrite tasemel on saavutatud kõrge ühilduvuse määr. VGA ei ole ühilduv spetsiaalsete IBM PCjr või HGC videorežiimidega.

Signaal[muuda | redigeeri lähteteksti]

VGA horisontaalse sageduse soovitud väärtus on täpselt kahekordne NTSC-M videosüsteemi väärtusega. Valem VGA horisontaalse väärtuse arvutamiseks on seega (60 ÷ 1001) × 525 kHz = 4500 ÷ 143 kHz ≈ 31.4686 kHz. Kõik teised väärtused, mida VGA kaart kasutab, on tuletatud selle väärtuse korrutamisest või jagamisest täisarvuga. Kuna kvartskella täpsus on piiratud, on reaalsetel kaartidel natuke kõrgem või madalam sagedus. Kõige tavalisema VGA režiimi 640x480 "60 Hz" progressiivlaotuse horisontaalsed ajastused on:

Parameeter Väärtus Ühik
Piksli taktsagedus 25,175 MHz
Horisontaalsete pikslite arv 640
Horisontaalne sünkronisatsiooni polaarsus Negatiivne
Kogu aeg iga rea peale 31,77 µs
Front porch (A) 0,94 µs
Sünkronisatsiooni impulsi pikkus (B) 3,77 µs
Back porch (C) 1,89 µs
Aktiivvideo (D) 25,17 µs

(Kogu horisontaalne sünkronisatsiooni aeg 6,60 µs)

VGA horizontal timings for 640×480

Vertikaalsed ajastused on:

Parameeter Väärtus Ühik
Vertikaalseid ridu 480
Vertikaalne sünkronisatsiooni polaarsus Negatiivne
Vertikaalne sagedus 59,94 Hz
Front porch (E) 0,35 ms
Sünkronisatsiooni impulsi pikkus (F) 0,06 ms
Back porch (G) 1,02 ms
Aktiivvideo (H) 15,25 ms

(Kogu vertikaalne sünkronisatsiooni aeg 1,43 ms)

640 × 400 @ 70 Hz videorežiim on kasutusel enamikel x86 arhitektuuriga personaalarvutite alglaadimisel. 640 × 480 @ 60 Hz on vaikimisi MS-Windowsi 16 värvi graafikarežiim. Tegelik ajastus võib natuke varieeruda. Näiteks 640×480 @ 60 FPS jaoks 25,17 µs aktiivvideo aega pikslisagedus ega 25,174 MHz annab tulemuseks 633 pikslit loodetud 640 piksli asemel.

Standard tekstirežiimid[muuda | redigeeri lähteteksti]

BIOS pakub mõningaid tekstirežiime VGA adapteritele, millel on 80x25, 40x25, 80x43 või 80x50 tekstiruudustik. Iga element võib valida ühe 16-st saadaval olevast värvist esiplaani värviks ning 8-st värvist tagaplaani jaoks. Need 8 tagaplaani värvi, mis on lubatud on need, millel on madala intensiivsusega bitikombinatsioon iga element võib olla tehtud ka vilkuvaks ning kõik, elemendi, mis on tehtud vilkuvaks, teevad seda unisonis (korraga).

Mustvalged režiimid[muuda | redigeeri lähteteksti]

VGA adapterid toetavad tavaliselt nii monokroomset, kui ka värvirežiimi, kuigi monokroone (mustvalge) režiim leiab väga vähe kasutust ning tugi kõikidele MDA tekstirežiimi atribuutidele (heleduse intensiivsus, allajoonimine) on tihti puudu. Must ja valge tekst on peaaegu kõigil uuematel VGA adapteritel kuvatud kasutades halli teksti mustal taustal värvirežiimis. Enamus VGA monokroomsetest monitoridest, mis algul müüdi kasutamiseks eelkõige teksti kuvamisel, töötavad vähemalt adekvaatselt VGA adapteriga ka värvirežiimis. Mõnikord põhjustas vigane ühendus uuema kuvari ja graafikakaarti VGA osa vahel selle, et monitor identifitseeriti kui mustvalged; see aga põhjustas BIOS-i ja alglaadimise mustvalge kuvamise. Kui aga videokaardi draiverid on laetud (nt. jätkates operatsioonisüsteemi alglaadimist), siis saadakse aru, et kuvar peaks töötama värvirežiimis ning see lülitatakse värvirežiimi.

Adresseerimisdetailid[muuda | redigeeri lähteteksti]

Vga resolutsioonide võrdlus 640×480×16 režiim (üleval) ja 320×200×256 režiim (all). Täissuuruses võrdlemiseks kliki pildil.

VGA videomälu on kaardistatud PC mällu läbi "akna", mis asub segmentide 0xA0000 ja 0xBFFFF vahel PC reaalrežiimi (real mode)aadressiruumis (A000:0000 ja B000:FFFF segmendid nihutatud notatsioonis). Tavaliselt on need algussegmendid:

  • 0xA0000 EGA/VGA graafilistel režiimidel (64 KB)
  • 0xB0000 monokroomse tekstirežiimi jaoks (32 KB)
  • 0xB8000 värviteksti režiimi jaoks ja CGA-ühilduv graafiline režiim (32 KB)

Tänu erinevate režiimide erinevatele mäluaadressidele, on võimalik installeerida samale masinale nii monokroomne kuvaadapter kui ka värviadapter nagu näiteks VGA, EGA või CGA. 1980-ndate algul oli see tavaliselt kasutusel Lotus 1-2-3 arvutustabelite (spreadsheets) kuvamisel kõrglahutusega tekstidena MDA kuvaril ja sellega seotud graafika kuvamisel madala lahutusega CGA kuvaril samaaegselt. Paljud programmeerijad kasutasid sama lahendust, et kuvada monokroomse kaardi abil veaparandus (debug) informatsioon samas kui programm ise jooksis graafilises režiimis teise kaardi peal. Mitmed veaparandusprogrammid nagu näiteks Borlandi Turbo Debugger, D86 (by Alan J. Cox) ja Microsofti CodeView olid võimelised töötama kahe monitoriga seadistuses. Nii Turbo Debugger kui ka CodeView abiga sai teostada Windowsi veaparandust. Olid ka olemas DOS-i draiverid nagu näiteks ox.sys, mis jooksutasid jadaliidese simulatsiooni MDA kuvaril, mis näiteks andsid kasutajale võimaluse saada veateateid Windowsi versioonide veaparanduse ajal tegelikku jadaterminali kasutamata. Võimalik oli kasutada ka "MODE MONO" käsklust DOS redaktoris, et suunata väljund ümber monokroomsele kuvarile. Kui monokroomse kuvari adapter ei olnud ühendatud, oli võimalik kasutada 0xB000 – 0xB7FF aadressiruumi lisamäluna teistele programmidele (näiteks lisades rea "DEVICE=EMM386.EXE I=B000-B7FF" faili config.sys, see mälu tehti saadavaks nendele programmidele mida oli võimalik "laadida kõrgele" – laadida kõrgmälusse).

VGA värvipalett[muuda | redigeeri lähteteksti]

VGA 256 režiimi värvipalett

VGA värvisüsteem on tagasiühilduv CGA ja EGA adapteritega, ja lisab ühe konfiguratsioonitaseme neile juurde. CGA oli võimeline kuvama kuni 16 värvi ja EGA laiendas seda, lastes iga värvi 16-st valida 64-värvilisest paletist (need 64 värvi on moodustatud kahest bitist iga värvi – punane, roheline, sinine – jaoks. Kaks bitti korda kolm värvi võrdub kuus bitti, seega 64 värvi.). VGA laiendab seda süsteemi veelgi, suurendades EGA paletti 64-lt sisendilt 256-le sisendile. Veel kaks plokki järjest tumedamates toonides värve lisati ning veel ka 8 "tühja" sisendit mis seadistati mustaks.

Lisaks laiendatud paletile võis igaühele 256-st sisendist määrata suvalise värvi väärtuse läbi VGA DAC-i. EGA BIOS lasi ainult kahel bitil kanali kohta väljendada igat sisendit, samas kui VGA lasi kuuel bitil väljendada iga põhivärvi (punane, roheline, sinine) intensiivsust. See andis kokku 64 erinevat intensiivsusetaset punasele, rohelisele ja sisnisele, andes kokku 262,144 võimalikku värvi, igaüks 256-st oli võimalik määrata paletile (ning samas nendest 256-st 16 oli võimalik kuvada CGA videorežiimides).

See meetod lasi uusi VGA värve kasutada ka EGA ja CGA graafilistes režiimides, eeldades, et need mäletasid, kuidas erinevad paletisüsteemid on kokku pandud. Näiteks et seada tekstirežiimis teksti värvus tumepunaseks, peab see olema seadistatud ühte CGA värvi (näiteks vaikevärvi #7: helehall.) See värv määratakse siis ühe EGA paletti kuulavasse sisendisse – CGA värvi 7 puhul määratakse see EGA sisendisse 42. VGA DAC peab olema siis seadistatud nii, et ta muudaks värvi 42 tumepunaseks ning koheselt muutub kõik, mida kuvatakse ekraanil helehallina (CGA värv 7) muutub tumepunaseks. Seda funktsiooni kasutati tihti 256-värvilistes VGA DOS mängudes, kui nad algul laadisid ning tekstiaken hääbus mustaks (Mäng Descent, aastast 1995 näiteks).

Kui CGA ja EGA-ühilduvad režiimid lasid kuvada ainult 16 värvi korraga, siis teistes VGA režiimides nagu näiteks laialt kasutatud mode 13h lasi kuvada kõik 256 paleti sisendit korraga, see juures nendes režiimides olid 256 värvi valitud saadaval olevast 262,144-st värvist.

Programmeerimise trikid[muuda | redigeeri lähteteksti]

Dokumenteerimata, kuid populaarne VGA graafikaadapterite kasutamise tehnika oli hüüdnimega "Mode X" ehk "tuunitud VGA" (välja mõeldud Michael Abrashi poolt). See muutis võimalikuks lahtusvõimed, mis polnud võimalikud BIOS'i katkestuse nr. 13h standardsete funktsioonidega (Mode 13h). Sellega saavutati 256 KB VGA videomälu "lahtiühendamine" neljaks erinevaks "tasandiks," mis muutis kogu VGA 256 KB muutmälu kasutatavaks 256-värvilistes režiimides. See oli kompromiss lisakeerukuse ja jõudluse kahanemise näol mõnda tüüpi graafilistes operatsioonides, mille positiivne pool oli see, et teised operatsioonid muutusid teatud situatsioonides kiiremaks:

  • Ühevärvilise hulknurga täitmiine kiirenes tänu võimalusele seada neli pikslit ühe kirjutamiskorraga riistvarale.
  • Videoadapter sai abistada videomälu pildiregioonide kopeerimiseks, mis oli mõnikord kiirem, kui pildiregioonide kopeerimine protsessori abil läbi suhteliselt aeglase arvutisiini (vt. ISA siin).
  • Mitemed suurema lahutusega kuvarežiimid olid võimalikud: 16 värviga, 704×528, 736×552, 768×576, ja isegi 800×600. Programmiteek nagu näiteks Xlib (VGAgraafika kogu C keele jaoks varajastel 1990-ndatel) ja programm ColoRIX (256-värviga graafika programm), toetasid samuti tuunitud 256-värvi režiimi, kasutades laiusi 256, 320, ja 360 pikslit ja kõrgusi 200, 240, 256, 400 ja 480 rida (ülemine limiit oli 640×400, mis kasutas 250 KB VGA 256 KB video ram-ist). Sellegi poolest oli 320x240 kõige tuntum ja sagedamini kasutatud, sest see oli tavaline 4:3 kuvasuhtega ja ruudukujuliste pikslitega (square pixels) lahutus.
  • Mitme videotasandi kasutamine riistvaras, lubas programmeerijal teostada kahekordset puhverdamist, kolmekordset puhverdamist või ekraani poolitamist, mis olid võimalikud küll VGA 320x200 16-värvi režiimis, kuid ei olnud võimalikud kasutades vaikerežiimi Mode 13h.

Vahel tuli kuvari laotussagedust vähendada, et neid režiime kasutada, mis aga suurendas koormust silmadele. Need režiimid olid ka ühildumatud mõnede vanemate kuvaritega, tekitades probleeme nagu näiteks pildi detailsuse kadumine, vilkumine ja horisontaalse sünkronisatsiooni puudumine, olenevalt režiimist, mida kasutati. Seepärast olid enamus VGA parandused, mida kasutati reklaamtoodetel piiratud "kuvari-turvalistes" kombinatsioonides, nagu näiteks 320x240 (ruut-pikslid, kolm videotasandit), 320x400 (topeltlahutus, kaks videotasandit) ja 360x480 (suurim lahutus mis oli VGA kuvaritega ühilduv, üks videotasand). Praegu on kõrgeim rakendatud VGA lahutus 400x600x256 (400x600 pikslit x256 värvi). See oli kasutusel Fractint-is kuulus fraktaali generaator.

Vaata ka[muuda | redigeeri lähteteksti]