Département Informatique
Département Informatique Architecture des systèmes
Module INFO-TC-ASR2 Fonctionnement des ordinateurs
Cours n°4
Un exemple de périphérique Le système graphique VGA
Département Informatique
Département Informatique Le système VGA
Le standard VGA (video graphics array) définit une norme relative à l'affichage de textes et/ou de graphiques sur un écran.
La plupart des systèmes actuels, bien que ne répondant pas à la norme VGA, sont dérivés de celle-ci est lui sont
compatibles.
La norme définit les points suivants :
➢ Type et architecture de l'écran
➢ Structure de l'adaptateur graphique
Département Informatique
Département Informatique Un écran VGA
Les écrans VGA sont de type CRT (cathodic ray tube), soit à tube cathodique, comme les téléviseurs, les écrans d'oscilloscopes, etc...
La définition des couleurs est analogique ce qui permet virtuellement une infinité de nuances possibles.
Le pilotage du balayage est fourni par l'adaptateur VGA (et non par l'écran) ce qui permet un grand nombre de modes graphiques différents.
Les écrans actuels, de type LCD, émulent un fonctionnement
Département Informatique Département Informatique
Un écran CRT contient un tube, dans lequel règne le vide.
A l'extrémité du tube, un canon à électrons produit un flux d'électrons, destinés à venir frapper la paroi en verre du tube.
Celle-ci, recouverte d'un produit sensible, produit de la lumière (un flux de photons) lorsqu'elle reçoit le flux d'électrons.
Département Informatique Département Informatique
Il n'y a donc qu'un seul point de l'écran allumé. Ce qui est fort peu pour produire une image !
Pour produire une image composée de millions de points,
le canon à électrons va balayer la surface de l'écran, suffisamment vite pour que l'oeil voir une image complète, grâce à la
persistance rétinienne.
Département Informatique Département Informatique
La Carte VGA
Périphérique chargé de l’affichage sur l' écran de textes ou d’images .
Un certain nombre de standards peuvent être utilisés, VGA n’étant que l’un d’entre eux.
La carte VGA communique avec l’UC par
l’intermédiaire de certains ports d’entrée/sortie et/ou par DMA.
Une interruption matérielle peut lui être affectée.
Le BIOS fournit des fonctions bas niveau pour la piloter.
Département Informatique Département Informatique
Caractéristiques
Une carte VGA standard possède les caractéristiques :
• affichage en mode texte sur 130 colonnes max.
• affichage en mode graphique jusqu’à 640x480 pixels
• production analogique des couleurs
• utilisation de registres de palette
• 256 couleurs affichables simultanément
• 262144 couleurs possibles
• définition RGB des couleurs
• plusieurs modes d’affichage
• mémoire spécialisée pour l’écran (64 kO min.)
• ….
Département Informatique Département Informatique
Choix du mode vidéo
Le choix du mode (texte, graphique, résolution, etc…) se fait à l’aide d’une fonction du BIOS, implanté en ROM sur la carte VGA.
Cette fonction s’appelle par l’interruption logicielle 10h.
Son numéro de fonction (transmis par le registre AH) est 0.
Elle attend dans le registre AL le numéro du mode vidéo désiré.
Ce numéro est standardisé. Par exemple, 3 correspond au mode texte 80x25, 13h au mode graphique
320x200x256.
Département Informatique
Département Informatique Exemple : choix du mode vidéo
void InitMode(int num_mode) {
asm {
mov ax, num_mode int 10h
} }
Département Informatique Département Informatique
Le mode Texte
Si la carte VGA fonctionne en mode texte, elle se trouve capable d’afficher sur un écran de 130 colonnes et 50 lignes.
Le mode couramment utilisé est 80 colonnes, 25 lignes Un caractère, codé en ASCII, occupe un octet dans la mémoire de la carte VGA.
Chaque caractère reçoit en outre un attribut caractérisant entre autres sa couleur.
Chaque caractère affiché à l’écran occupe donc deux
Département Informatique Département Informatique
Le mode Graphique
Les cartes VGA supportent plusieurs modes graphiques, dans lesquels on n’adresse plus un caractère mais un pixel.
Pixel = Picture Element
Suivant la résolution (nombre de pixels) et le nombre de couleurs affichées simultanément, la carte VGA nécessite une mémoire plus ou moins grande, et sa programmation est très différente.
Nous étudierons ici le mode graphique le plus simple :
Département Informatique Département Informatique
Mode 13h
Dans ce mode, l’écran occupe 320 pixels de large en 200 pixels de haut.
La couleur de chaque pixel est représentée par un indice de palette, codé sur un octet.
Il faut donc 320x200 = 64000 octets pour mémoriser l’écran vidéo.
Une palette graphique, de 256 couleurs, stocke les couleurs à afficher, choisies parmi les 262144
L’intégralité de la mémoire VGA est donc accessible avec moins de 64 kO.
Département Informatique Département Informatique
La palette
Pour piloter l’écran, la carte VGA doit lui indiquer des valeurs de Rouge, Vert et Bleu pour chaque pixel.
L’écran attend des valeurs analogiques de tension, comprises entre 0 et 0.7V pour chaque couleur.
La carte VGA stocke ses couleurs sous forme numérique et possède un convertisseur
numérique/analogique (CNA ou DAC)
Il existe 256 entrées de palette. On peut donc afficher 256 couleurs en même temps sur l’écran.
Département Informatique Département Informatique
Structure d’une entrée de la palette
La carte VGA utilise 18 bits pour coder une couleur.
La palette totale occupe donc 256x18 = 4608 bits soit 576 octets.
Sur ces 18 bits, 6 servent à coder l’intensité de rouge, 6 celle du vert et 6 celle du bleu.
Le nombre de nuances possibles est donc 218 = 262144.
La palette peut être lue et écrite à l’aide des fonctions du BIOS, ou directement via des ports d’E/S.
Département Informatique Département Informatique
Adressage d’un pixel
Dans le mode 13h, chaque pixel étant représenté par un octet, l’adressage est très simple.
Le premier pixel (0,0) est stocké à l’adresse A0000000 Le deuxième (0,1) à l’adresse A0000001, etc…
Pour chaque pixel (x,y), son adresse en mémoire VGA est la suivante :
• base : A0000000
• décalage : 320y + x
Département Informatique Département Informatique
Exemple : écriture d'un pixel en C
void PutPixel( int x, int y, char couleur) {
char far *base_ecran = 0xA0000000;
base_ecran[320*y+x] = couleur;
}
Attention : ce code n'est valable qu'en mode VGA 13h, l'adressage étant différent dans les autres modes !
Département Informatique Département Informatique
Prochain cours : Périphériques :
Mémoires de masse
A la semaine prochaine !