Verder
Terug
Inhoud
Een monitorbeeld wordt in feite net zo opgebouwd als het schrijven van letters
op een blaadje. Laten we eens een voorbeeld nemen.
- Je hebt een blaadje met 525 regels
- Op een regel kun je 800 letters schrijven
- Stel nou dat je zo snel bent dat je 60 blaadjes per seconde kunt schrijven
- Dat houdt in dat je 525 regels maal 60 blaadjes = 31500 regels per seconde
moet kunnen schrijven
- Dat houdt op zich weer in dat je 25200000 (31500 x 800) letters per
seconde moet kunnen schrijven
Maar een blaadje helemaal volgeklad met letters is niet mooi, daarom spreken
we af dat er een linker-, rechter-, boven- en ondermarge moet komen waar er
geen letters staan.
Goed, we spreken af dat er links en rechts een marge is van 80 letters breed
(80 spaties) en dat er boven 22 en onder 23 regels niet beschreven worden.
Het resultaat is dat er blaadjes geschreven worden waar altijd 640 letters op
een regel staan en altijd 480 regels op een blaadje staan. Mooi gecentreerd.
Maar het schrijven gaat echter zo snel dat er altijd drie mensen aanwezig
moeten zijn, namelijk een om te schrijven, een om de blaadjes om te slaan en
een om de schrijver te helpen om de pen weer van het eind naar het begin van
een regel te helpen.
Nadat een regel volgeschreven is zal de degene die de pen weer terugbrengt van
het eind van een regel naar het begin van een regel een seintje moeten
krijgen. We spreken af dat dat signaal wordt gegeven 24 spaties na de laatste
letter, dus eigenlijk op letter (= spatie) 664. Hij krijgt de tijd tot letter
760 om de pen daadwerkelijk naar links terug te brengen. (dat is dus 40
spaties voor het begin van een nieuwe letterreeks).
Voor degene die de blaadjes omslaat geldt ongeveer hetzelfde. Vanaf regel 491
tot 493 krijgt hij de tijd om zijn werk te doen.
Goed begrepen wat hierboven staat? Mooi, dan gaan we het nu eens anders
bekijken. Je VGA kaart werkt namelijk precies hetzelfde.
Lees voor letters: pixels
Lees voor regels: lijnen
Lees voor blaadjes: beelden
Lees voor aantal beelden per seconde: refresh-rate
Dan moet je het eigenlijk al snappen.
# 640x480 @ 60 Hz, 31.5 kHz hsync
Modeline "640x480" 25.200 640 664 760 800 480 491 493 525
640x480: aantal zichtbare pixels (letters)
60Hz: aantal beelden per seconde (refresh-rate, aantal blaadjes per seconde)
31.5kHz: 31500Hz = 31500 lijnen per seconde
25.200 (kHz): 25200000 pixels per seconde (letters)
640: aantal zichtbare pixels (daadwerkelijk geschreven letters)
664: begin van de H-sync (horizontal synchronisation) (breng pen terug naar begin regel)
760: eind van de H-sync (horizontal synchronisation)
800: het totaal aantal pixels per lijn (letters per regel, inclusief
marge-spaties)
480: totaal aantal zichtbare lijnen (zichtbare regels)
491: begin V-sync (vertical synchronisation) (sla blaadje om)
493: eind V-sync: nieuw blaadje ligt klaar
525: totaal aantal regels op een blaadje
Deze modeline wordt via de driver naar de VGA-kaart gestuurd. Hiermee worden
een aantal opdrachten gegeven aan de VGA-kaart:
- de opdracht om 25200000 pixels per seconde te genereren. Op de VGA-kaart
zit namelijk een pixelclock die, afhankelijk van de kaart, ingesteld kan
worden op de gewenste frequentie. Op oude VGA kaarten zat voor iedere
pixelclockfrequentie een kristal gemonteerd, tegenwoordig wordt een hele hoge
clockfrequentie genomen die gevolgd wordt door een programmeerbare deler,
waardoor vanuit *een* stuk hardware een heleboel pixelclock-frequenties
gegenereerd kunnen worden. Dit is het eerste getal op de modeline: 25.200 (in
kilohertz = 1000 hertz).
- de opdracht om deze frequentie van 25200000 Hz door 800 (het vijfde getal
in de modeline) te delen, hetgeen de zogenaamde H-sync genereert. Door deze
H-sync weet de monitor namelijk wanneer er een nieuwe lijn moet beginnen.
Zonder deze H-sync zal de monitor alleen maar strepen gaan geven omdat hij dan
op ongedefinieerde plaatsen maar een eind weg pixels gaat staan schrijven.
Voor de tegenwoordige "green" monitoren echter betekent het afwezig zijn van
de V-sync en/of H-sync dat de monitor in stand-by of in off-mode moet
springen.
Goed, het volgende is waarschijnlijk lastig te begrijpen, maar behalve het
deeltal van 800 worden er nog twee getallen naar die deler gestuurd, te weten
664 en 760 (getal 3 en 4 van modeline). Deze twee getallen regelen twee
dingen:
- De H-sync pulsbreedte, nodig om de elektronica in de monitor goed te laten
werken. Deze waarde is gedefinieerd per video-standaard (VESA bijvoorbeeld),
maar is over het algemeen niet kritisch als hij iets te breed of te smal is.
De monitor kijkt namelijk alleen maar of een puls van laag (nul volt) naar
hoog (5 Volt) gaat, of omgekeerd (flankdetectie). De breedte van de H-syncpuls
wordt bepaald door het verschil tussen de twee getallen: 760 - 664 = 96 pixels
breed, oftewel een pulsbreedte van 3.8 uS (96/25200000).
- De plaats waar het zichtbare beeld op de beeldbuis terecht komt.
Er staat eigenlijk "begin H-sync puls bij pixel 664" en "eindig H-sync puls
bij pixel 760"
En eigenlijk is dat verhaal van de marges links en rechts een beetje
verwarrend omdat de linkermarge er niet is en de rechtermarge net zo groot is
als de linker- plus rechtermarge. Wat is namelijk het geval: de linkermarge
begint bij pixel -80, oftewel pixel 760 van de vorige lijn! Dit verklaart dat
de VGA kaart direct zichtbare pixels begint te schrijven bij pixel 0 van de
lijn en ophoudt bij pixel 640 (het tweede getal in modeline). Door nu de
getallen 3 en 4 te veranderen (maar wel zorgen dat het verschil niet
verandert, hier 96 dus), verschuift het beeld horizontaal. Dit komt omdat de
monitor de opdracht krijgt de lijn op een ander tijdstip te laten beginnen.
Men ziet ook deze getallen veranderen als men het programma "xvidtune" opstart
en men het beeld verschuift.
- De opdracht om per 525 lijnen (negende getal) een nieuw beeld te beginnen.
Dit is 252000000/800/525 = 60Hz, oftewel 60 beelden per seconde, oftewel een
refreshrate van 60 Hz. En voor de verticale synchronisatie geldt hetzelfde als
voor de horizontale synchronisatie: er worden nog twee extra getallen
meegegeven: 491 en 493 (getal 7 en 8) Deze twee bepalen:
- De pulsbreedte van de V-sync (493 - 491 = 2, en is dus twee lijnen breed,
oftewel 63.5uS, (twee maal de inverse van de lijnfrequentie: 2 * (1 / 31500)
(sec)).
- De verticale plaats van het beeld. Verandering van de twee met behoud van
het verschil van 2 verplaatst het beeld in verticale richting.
Het ontbreken van de V-sync geeft een scrollend beeld omdat de monitor dan
niet meer weet waar het beginpunt van het beeld zich bevindt. Voor de
tegenwoordige "green" monitoren echter betekent het afwezig zijn van de V-sync
en/of H-sync dat de monitor in stand-by of in off-mode moet springen.
Wil je eens voor de lol het zwarte deel van het beeld bekijken, zet dan getal
7 en 8 (491 en 493) eens op 240 en 242. Je zult dan zien dat het beeld in
tweeen is geknipt waarbij het onderste deel boven staat en het vice versa. Dit
komt omdat je dan de VGA-kaart opdracht geeft om de monitor te vertellen dat
hij de elektronenstraal naar boven moet brengen ergens in het midden van het
beeld.
De parameters +Vsync -Vsync +Hsync en -Hsync
Deze parameters geven of de synchronisatiesignalen voor de verticale en
horizontale synchronisatie positief danwel negatief zijn. Bij een positief
signaal is de logische '0' ook daadwerkelijk nul volt en de logische '1' vijf
volt. Bij een negatief sync signaal is dat precies andersom. Dit werd vroeger
vooral gebruikt om verschillende resoluties bij gelijke monitorfrequenties te
onderscheiden. Bijvoorbeeld de modes 720x350 en 720x400 hadden beide een
horizontale frequentie van 31500Hz en een verticale frequentie van 70Hz. Om de
monitor nou onderscheid te laten maken tussen de twee modes werd de polariteit
omgedraaid: 720x350 had +Hsync en -Vsync en 720x400 werd met -Hsync en +Vsync
aangestuurd. Tegenwoordig gebruiken de microprocessoren in monitoren dit ook
wel om bepaalde standaard modes te herkennen.
Verder
Terug
Inhoud