Grafikstandarder för PC

En genomgång av lite äldre grafikkort och -standarder för PC.

I textläge lagras informationen ungefär likadant på nästan alla grafikkort. Själva tecknet som ska visas lagras i ett byte och bredvid det finns ett attribut-byte som bestämmer hur tecknet ska visas. För monokromkort är attributen tex: understrykning, blinkande, inverterad, låg/normal/hög intensitet. För färgkort är attributen dessutom förgrunds- och bakgrundsfärgerna. Informationen lagras i ett RAM-minne som ligger på den vanliga adressbussen. Det 'enklaste' sättet att visa ett tecken på skärmen är därför att skriva ASCII- värdet (tecknets kodnummer) direkt till rätt minnesadress, tillsammans med ev attribut.

Nästan alla grafikkort kan lagra flera text- eller grafiksidor mellan vilka man snabbt kan växla. För att förenkla användningen finns på alla grafikkort ett ROM-BIOS som innehåller färdiga maskinkods- rutiner, tex för att scrolla skärmen en rad uppåt eller för att rensa hela skärmen. BIOS'et nås med ett INT10h-anrop. Kom ihåg att det ändock bara är maskinkodsrutiner; det är alltså fortfarande processorn som gör hela jobbet.

Det finns även kort med en egen processor monterad. De enklare kallas 'blitters' och klarar att snabbt flytta områden på skärmen, ibland även linjedragning, skuggning, fyllning mm. De mer avancerade korten styrs via särskilda kommandon och arbetar med hela objekt istället för punktgrafik. Då ett helt objekt, tex en cirkel lagras på kortet, kan det ibland även zoomas, flyttas eller vridas. De två vanligaste fabrikaten av processorer till dessa kort Texas Instruments' TIGA som även används av bla Spea, Opta och Matrox samt det lite enklare DGIS som är vanligast på NECs kort. Dessa mera avancerade kort används ibland tillsammans med ett enklare kort då man vill visa vanlig text eller grafik från program som saknar drivrutiner för korten. Men ofta finns denna VGA-kompatibilitet inbyggd på kortet. I VGA- kompatibiliteten ingår att de förutom VGA, som är 640x480, dessutom ska klara MDA, CGA och EGA-upplösningarna (se nedan). Många kort klarar dessutom Hercules-monokromgrafik.

Det går att ha tex ett MDA och ett CGA samtidigt i datorn eftersom de inte använder samma minnesadresser. I så fall måste man med datorns SETUP-program tala om vilken som ska vara primary och secondary. På IBM 286 AT-datorer så finns en liten switch på moderkortet bredvid kontakterna för matningsspänning. Om MDA-skärmen ska vara primary ska switchen stå mot baksidan av datorn, ska CGA vara primary ska switchen stå mot framsidan. Växling mellan skärmarna kan sedan göras med tex DOS-kommandot MODE.

Det går att koppla en MDA-skärm till ett EGA-kort. EGA-kortet kan med DIP-switcharna ställas i den sk mode F. I mode F kan skärmen visa inverterad, blinkande och intensifierad text, det är alltså inte fråga om ett rent MDA-läge, inte heller vad man brukar kalla ett EGA- läge.

MDA - Monocrome Display Adapter. Enbart monokrom text. 16kB minne. Det enda kortet som har sitt minne på (segment-)adressen B000. Det är bra därför att då kan MDA-kortet användas tillsammans med tex ett CGA-kort.

CGA - Color Graphics Adapter. 16kB minne. Både text och grafik använder samma utrymme som startar på B800. Det finns fyra grafiklägen; två med fyra färger/320x200 punkter där färgerna kommer från en av två fasta paletter (det går alltså inte att ha andra kombinationer), och två grafiklägen med två färger/640x200 punkter där bakgrunden är svart och förgrunden valfri. Av någon anledning lagras jämna linjer i den första halvan av videominnet och udda linjer i den andra halvan. Signalerna från CGA har TTL-nivå med 4 färgsignaler; R,G,B och intensitet vilket ger max 16 färger. IBM's CGA-kort använder Motorola MC6845 video processor chip. CGA-kort har vanligen en RCA-kontakt och en 9-polD. RCA-kontakten ger en composite video signal på 15.75kHz, ibland i färg, och kan därför kopplas till video-ingången på en TV som klarar det amerikanska NTSC-formatet.

EGA - Enhanced Graphics Adapter. (64/)256kB minne. Max grafikupplösning är 640x250/16 färger. Strax innan VGA lanserades kom bla Genoa med SuperEGA-kort som klarade 800x600/256 färger. Tidiga IBM-EGA-kort hade bara 64kB minne men kunde byggas ut. 64kB-korten klarade max 4 valfria samtidiga färger i 640x350-upplösning. På kort med mera minne (128 eller 256kB) lagras data i max 4 st 64kB-block som alla startar på adress A000, på kortet finns kontrollkretsar som bestämmer vilket av blocken som ska vara åtkomligt på adressbussen. Färgerna lagras inte direkt utan ställs in i ett palettregister som tillåter 64 färger. Men, när EGA-kortet anropas via BIOS så får man bara tillgång till 16 färger för att få det kompatibelt med CGA. De flesta register på EGA-kortet är av någon anledning Write-Only vilket gör att ett program inte känna av vilken grafikmode som är aktuell. Därför behöver många program en EGA.SYS-driver som håller reda på aktuell mode. Signalerna från EGA har TTL-nivå med 2 signaler var för R,G,B vilket ger max 64 färger. Även om det nästan aldrig används så har ett EGA-kort programmerbar linjefrekvens. Den kan programmeras till tex 31kHz, vilket har ryktats kunna förstöra vissa fabrikat av EGA-skärmar. De 2 RCA-kontakterna som finns på nästan alla EGA-kort är kopplade direkt till den sk "feature connector", och har alltså normalt ingen funktion alls.

MCGA. En budgetvariant som fanns inbyggd på moderkortet i PS/2 modell 25 och 30. Det använder en analog 31kHz-skärm, dvs samma som VGA, men klarar bara CGA-grafik samt 320x200 i 256 färger och 640x480 i svartvitt.

VGA. - Video Graphics Adapter. Max grafikupplösning 640x480/16 färger eller 320x200/256 färger. VGA är i stort sett samma som EGA men med lite bättre upplösning och lite fler alternativ vad gäller val av textattribut. Dessutom är alla register Read/Write så något liknande EGA.SYS behöver inte användas. I 256-färgers-läget så tas färgerna från en färgtabell med 6 bitar per färg vilket gör att man kan välja mellan drygt 256000 färger. VGA har analoga 75ohm's utgångar för färgerna, TTL för syncsignalerna.

8514/A. IBM's tillbehörsprodukt till VGA. Ansluts till en speciell sk 'feature connector' som finns på praktiskt taget alla VGA-kort. VGA- kortet används för text och lägre upplösningar, 8514/A-kortet har en egen processor och används till 1024x768/256 färgers upplösning. 8514/A är interlaced och slog aldrig riktigt igenom. En kvarleva finns; det sk 'Adapter Interface', dvs sättet att styra kortet, som en del andra tillverkare har tagit efter för att styra sina produkter. 8514/A har, i praktiken standardiserad hårdvara, men som alternativ har IBM gjort ett mjukvarugränssnitt med många färdiga ritfunktioner. Det laddas med HDILOAD.EXE.

XGA/XGA-2. Uppföljaren till 8514/A. 1024x768/256(interlaced) eller 640x480/65536. XGA har en egen processor och är kompatibelt med VGA och inte bara ett tillbehör som 8514/A. XGA finns på moderkortet i IBM's modell 90 och som instickskort i modell 95. XGA kan använda sk 'busmaster'-teknik som gör det lämpligt till rörliga bilder direkt från hårddisken, enligt IBM. 1992 kom en snabbare variant; XGA-2.

TIGA. Texas instruments. Det finns fn två TIGA-processorer 34010 och 34020. De styrs via kommandon som kan liknas vid ett programmeringsspråk. 34010 har 256 bytes instruktionscache, 34020 har 512 byte. De flesta TIGA-kort kan dessutom förses med matematikprocessor. TIGA-kort används framför allt för CAD då de kan arbeta med hela objekt som kan zoomas, vridas mm. TIGA är ett mjukvarugränssnitt. Till alla TIGA-grafikkort hör en drivrutin och det är anropen till den drivrutinen som är TIGA-standarden. TIGA-kortet anropas alltså inte direkt av applikationens TIGA-drivrutin, utan det är istället korttillverkarens drivrutin som anropas. Således behövs två drivrutiner, vilket skiljer TIGA-kort från de flesta andra grafikkort.

MACH 8. En processor från ATI som är 8514/A-kompatibel men betydligt snabbare och med flera funktioner. Upplösningen är som hos 8514/A max 1024x768/256 färger.

MACH 32. ATI's uppföljare till MACH 8. Kan teoretiskt hantera 24bitars-färg i 1280x1024 men de flesta kort är begränsade till 1280x1024/256 eller 800x600 med 24-bitars färg.

S3 86C911/924/801/805/928. Grafikprocessorkort som mest används till Windows. 924 är en förbättring av 911, bägge är ungefär i klass med MACH 8. De klarar max 1280x1024/16. 801 och 805 är de betydligt snabbare efterföljarna och vanliga på local-bus kort. De klarar max 1280x1024/256. Den snabbaste S3-processorn är 928.

Weitek W5186. Att användas i första hand till Windows då den är speciellt snabb på 'blitter'-operationer och linjedragning. W5186 kan ha upp till 4kB kommando-cache.

Weitek P9000. Kom 1993 och är ungefär dubbelt så snabb som S3 928. Dock är VGA-delen inte alls snabbare än ett standard VGA-kort. P9000 använder 32-bitars minneshantering.

MGA. Från Matrox. Själva kretsen är ungefär lika snabb som Weitek P9000 men MGA använder 64-bitars minneshantering som fördubblar prestanda vid stora minnesoperationer. VGA-delen är dock tom slöare än ett standard-VGA.

WD90C31. Från Western Digital, används på Paradise-kort. I första hand för Windows, då den klarar bla 'blitter'-operationer och rektangelfyllning.


ManualSidan
Copyright Tomas Andersson 1994.
Tomas Andersson, d94-tan@nada.kth.se
Kungliga Tekniska Högskolan, Stockholm
1994-05-16