Video Graphics Array (VGA) est un standard d'affichage pour ordinateurs. Il est lancé en 1987 par IBM sous le nom MCGA comme une amélioration du EGA et CGA lors du lancement de la gamme PS/2. VGA appartient à une famille de standards d'IBM et reste compatible avec les précédents formats.
Comme d'autres réalisations d'IBM, VGA a été très largement cloné par d'autres fabricants. Bien que sa forme fût obsolète, dépassée par le standard XGA, c'est le dernier standard IBM que la majorité des fabricants ont décidé de suivre pour les architectures PC. Il fut ensuite dépassé par le standard SVGA.
Le terme VGA désigne aussi bien un mode d'affichage (640 x 480 etc.) qu'une connectique (DB9).
Le format utilise 356 kibioctets (Kio) de mémoire vidéo et fonctionne selon deux modes : 16 couleurs ou 256 couleurs choisies parmi une palette de 262144 couleurs. La définition maximum est de 720 colonnes par 480 lignes (720 x 480) avec un taux de rafraîchissement de 70 Hertz.
Le standard VGA supporte également 4 plans vidéo, le scrolling matériel, la division de l'écran en zones indépendantes et des polices de caractères définies par logiciel.
Les modes graphiques standard sont:
Il supporte également les précédents standards : EGA, CGA et MDA, et d'autres non documentés. Un autre mode graphique appelé Mode X permet d'autres solutions techniques et définitions qui ne sont pas disponibles en Mode 13h.
Le mode texte alphanumérique est de 80x25 ou 43x25 caractères. Chaque cellule peut être définie en utilisant 16 couleurs de texte qui peut être rendu clignotant. Dans ce cas, seules 8 couleurs sont disponibles pour le fond contre 16 si le texte n'est pas clignotant. Bien qu'un mode monochrome est disponible, la plupart des programmeurs utilisent le mode couleur avec un texte gris et un fond noir.
Matériellement, l'espace vidéo monochrome se situe dans la plage d'adresse mémoire 0xB0000-0xB7FFF, et l'espace en couleur dans la plage 0xB8000-0xBFFFF. En mode couleur, chaque cellule de l'écran est associée à deux octets l'un pour le caractère et l'autre utilisé pour ses attributs (clignotement, police, couleur ...)
La connectique classique entre un PC et un moniteur se fait à l'aide de connecteurs SUB-D Haute Densité 15 broches.
Le rôle principal d'une carte graphique est de permettre l'affichage d'informations sur un écran d'ordinateur. Ces informations peuvent être de plusieurs types : caractères alphanumériques, figures géométriques... Une carte graphique dite VGA doit simplement être compatible avec le standard d'affichage VGA (Video Graphics Array). Ce standard définit un certain nombre de mode d'affichage que la carte doit prendre en compte.
Le fonctionnement interne d'une carte VGA peut varier d'un constructeur à l'autre. Cependant, toute carte compatible avec la norme possède un certain nombre de composants standard pour assurer son fonctionnement. Ces composants vont permettre d'associer une couleur à chaque pixel de l'écran et de gérer le déplacement du spot du tube cathodique.
Les cartes graphiques modernes répondent à des standards beaucoup plus évolués que le standard VGA. Elles permettent des résolutions plus fines sur du matériel différent (par exemple écrans à cristaux liquides - LCD). Toutes ces nouvelles cartes émulent cependant les composants des premières cartes VGA, afin de permettre aux anciens programmes exploitant les modes d'affichage VGA de toujours fonctionner correctement.
Sur les architectures de type PC, les BIOS proposent un certain nombre de modes vidéo texte ou graphique que le programmeur peut facilement utiliser (à condition d'utiliser un système d'exploitation permettant l'appel aux fonctions du BIOS, comme MS-DOS par exemple). On trouve parmi eux le mode 03h (mode texte 80x25, 16 couleurs) et le mode 13h (mode graphique 320x200, 256 couleurs). Les noms de ces modes viennent de la valeur que doit prendre un des paramètres de la fonction du BIOS qui change de mode d'affichage (h = hexadécimal).
Les modes vidéo du BIOS correspondent en fait à des configurations particulières de la carte VGA. Il est possible de créer et d'utiliser beaucoup d'autres modes pour les cartes graphiques en les configurant directement sans utiliser le BIOS. C'est ce que font les systèmes d'exploitation proposant des interfaces graphiques, ou les jeux vidéos.
Chacun des composants de la carte VGA réalise une opération bien précise. Tous ces composants sont paramétrables par le programmeur qui souhaite créer un mode vidéo. La configuration se fait en accédant aux registres de la carte graphique. Le mode 13h du BIOS, par exemple, correspond à une configuration précise de tous les registres. Il y a en tout plus d'une soixantaine de registres 8 bits sur la carte. Le nombre de configurations possibles (et donc de modes vidéo) est donc très grand. En pratique, seul un petit nombre d'entre eux sont effectivement utilisés.
Une des fonctions de la carte est de commander le déplacement du spot sur l'écran. C'est le rôle dévolu au CRTC. Celui-ci possède un grand nombre de registres configurables par le programmeur qui influent directement sur les mouvements du spot. C'est grâce au CRTC qu'on peut, par exemple, modifier la taille et la résolution de l’image.
L'image affichée à l'écran est stockée dans la mémoire vidéo. Lorsqu'on est en mode texte, ce sont les caractères ASCII et leur couleur qui sont stockées. En mode graphique, la couleur de chaque pixel est stocké dans la mémoire d'écran.
Il va donc pouvoir sélectionner l’adresse dans la mémoire du pixel (en mode graphique) ou du caractère (en mode texte) que le spot doit afficher à l’écran. Une deuxième fonction du CRTC est donc de calculer l’adresse dans la mémoire vidéo qui contient l'information à afficher sur le moniteur.
Le processeur doit pouvoir écrire dans la mémoire vidéo, pour modifier le texte ou changer l'image affichée à l'écran. Le contrôleur graphique propose plusieurs modes d'écriture et de lecture de la mémoire vidéo. Ces différents modes servent à accélérer les modifications de l'affichage lors de remplissage de zones avec une même couleur par exemple, ou des copies de portions d'écran.
Le contrôleur graphique est donc l'intermédiaire entre le processeur et la mémoire graphique.
Le moniteur doit commander l'intensité des trois faisceaux d'électrons (rouge, vert, bleu) qui vont permettre l'affichage des différentes couleurs. Il doit recevoir des signaux analogiques pour commander ces faisceaux, et non des signaux numériques. Le DAC possède une palette qui, à un index de couleur (choisi parmi 256), associe les proportions des trois signaux de base rouge, vert et bleu. Ces proportions peuvent être modifiées par le programmeur pour chacune des 256 couleurs. Le DAC se charge alors de traduire les proportions associées à une couleur en signaux analogiques parfaitement compréhensibles par le moniteur.
Périodiquement, les données de la mémoire vidéo doivent être analysées pour en déduire l'image affichée à l'écran. Le contrôleur d'attributs va être chargé, durant l'affichage, de déduire à partir des informations en mémoire vidéo (caractères en mode texte ou couleur de pixel en mode graphique) l'index dans la palette du DAC.
Le séquenceur synchronise tous les composants de la carte cités jusqu'ici. Il est en charge de la gestion de l'horloge. Il s'occupe du rafraîchissement de la mémoire vidéo et de la gestion des accès concurents à cette mémoire.
On affecte aussi au séquenceur la gestion du mode d'adressage de la mémoire vidéo. Cette mémoire à une capacité de 256 ko. Pourtant, le processeur ne dispose que d'un espace d'adressage de 64 ko pour y accéder. Ceci est du au fait que la mémoire vidéo est composée de 4 "plans" de 64 ko. Le choix du plan lorsque le processeur accède à la mémoire dépend du mode d'adressage utilisé.
Tous les composants de la carte VGA étudiés ci-dessus possèdent des registres 8 bits modifiables par le programmeur (à l'exception de la mémoire vidéo). Les valeurs contenues dans tous les registres caractérisent un mode vidéo. Les modes 03h et 13h du BIOS correspondent tous deux à une configuration particulière des registres de la carte. On parle aussi, pour la carte VGA des modes X. Ces modes correspondent à des configurations de la carte permettant d'obtenir des modes graphiques plus évolués que le mode 13h (pour les jeux vidéos) : par exemple 640x480 en 256 couleurs.
L'accès aux registres de la carte VGA se fait en utilisant les instructions assembleur in et out (pour les processeurs x86) sur le port du composant de la carte auxquel on accède. Pour une description détaillée des registres de la carte VGA et la manière d'y accéder, on se référera au site FreeVGA et à sa partie spécifique sur la programmation.
Source Wikipedia : Video Graphics Array
/ Fonctionnement des cartes VGA
Distribution exclusivement selon les termes de la license
GNU Free Documentation License.