Fonctionnement d'un ordinateur/Les périphériques

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche

Après avoir vu les composants internes à un ordinateur, il est temps de passer aux composants connectés sur l'unité centrale, les fameux périphériques. Dans ce chapitre, nous allons étudier les périphériques d’entrée et de sortie : les claviers, l'écran, etc.

Le clavier[modifier | modifier le wikicode]

Le clavier communique avec notre ordinateur. Contrairement à ce qu'on pourrait penser, cette communication s'effectue dans les deux sens. Tout d'abord, notre clavier doit indiquer à notre ordinateur si une touche a été appuyée, et laquelle. Pour indiquer quelle touche a été appuyée, notre clavier va envoyer ce qu'on appelle un scancode à notre ordinateur. Ce scancode est un numéro : chaque touche du clavier se voit attribuer un scancode bien particulier, le même sur tous les claviers. Les scancodes des différentes touches sont standardisés, et il existe plusieurs standards de scancodes.

Les tout premiers PC utilisaient un jeu de scancode différent de celui utilisé actuellement. Le jeu de scancode utilisé s’appelait le jeu de scancode XT. Avec ce scancode, le scancode est, sauf exception, un octet dont les 7 bits de poids faible identifient la touche, et le bit de poids fort indique si la touche a été appuyée ou relâchée. De nos jours, les claviers utilisent le jeu de scancode AT s'ils sont relié au PC via le port PS/2. Avec ce jeu de scancode, les numéros des touches sont modifiés. Le relâchement d'une touche est indiqué différemment : avec les scancodes AT, il faut ajouter un octet d'une valeur 0xF0 devant le numéro de la touche. Sans ce préfixe, on considère que la touche a été appuyée.

L'intérieur d'un clavier à petit nombre de touches[modifier | modifier le wikicode]

A l'intérieur d'un clavier, on trouve un circuit relié aux touches par des fils électriques, qui se charge de convertir l'appui d'une touche en scancode. Naïvement, on pourrait penser que ce contrôleur est relié à chaque touche, mais ce genre d'organisation n'est utilisable que pour de tout petits claviers. Sur les claviers avec un faible nombre de touches, toutes les touches sont reliées à un encodeur combinatoire, ce qui suffit largement pour obtenir un clavier fonctionnel.

Exemple de clavier simple, qui utilise un encodeur combinatoire.

L'intérieur d'un clavier à grand nombre de touches[modifier | modifier le wikicode]

Avec un clavier à 102 touches, la technique précédente ne fonctionne pas si bien : il nous faudrait utiliser 102 fils, ce qui serait difficile à mettre en œuvre. En fait, les touches sont reliées à des fils électriques, organisés en lignes et en colonnes, avec une touche du clavier à chaque intersection ligne/colonne. Pour simplifier, les touches agissent comme des interrupteurs : elles se comportent comme un interrupteur fermé quand elles sont appuyées, et comme un interrupteur ouvert quand elles sont relâchées.

Matrice clavier

Cette matrice est reliée à un circuit qui déduit les touches appuyées à partir de cette matrice de touches : le Keyboard Encoder. Ce circuit peut aussi bien être un circuit combinatoire, un circuit séquentiel fait sur mesure (rare), ou un microcontrôleur. Dans les premiers claviers de PC, l'encodeur clavier était un microcontrôleur Intel 8048. Les claviers actuels utilisent des microcontrôleurs similaires.

Matrice clavier + controleur

Le fonctionnement des claviers à grand nombre de touches[modifier | modifier le wikicode]

Pour savoir quelles sont les touches appuyées, ce micro-contrôleur va balayer les colonnes unes par unes, et regarder le résultat sur les lignes. Plus précisément, notre circuit va envoyer une tension sur la colonne à tester. Si une touche est enfoncée, elle connectera la ligne à la colonne, et on trouvera une tension sur la ligne en question. Cette tension est alors interprété comme étant un bit, qui vaut 1. Si la touche à l'intersection entre ligne et colonne n'est pas enfoncée, la ligne sera déconnectée. Grâce à un petit circuit (des résistances de rappels au zéro volt intégrée dans le micro-contrôleur), cette déconnexion de la ligne et de la colonne est interprétée comme un zéro. Le microcontrôleur récupère alors le contenu des différentes lignes dans un octet. A partir de cet octet, il accède à une table stockée dans sa mémoire ROM, et récupère le scancode correspondant. Ce scancode est alors envoyé dans un registre à décalage, et est envoyé sur la liaison qui relie clavier et PC.

Gestion matrice clavier

Le phénomène de Ghosting et sa mitigation[modifier | modifier le wikicode]

Cette organisation a tout de même un léger problème, qui se manifeste quand trois touches ou plus sont appuyées. Dans une telle situation, il se peut que le courant passe à travers les interrupteurs des touches et active des lignes qui ne devraient pas l'être. Pour donner un exemple, prenons la configuration suivante :

Ghosting - 1

Les problèmes surviennent quand le contrôleur active la troisième colonne. L'appui de la touche de droite active la colonne et la ligne sur laquelle elle se situe. L'appui de la touche immédiatement à gauche permet au courant sur la ligne de traverser la colonne. La touche en-dessous permet au courant de traverser la ligne elle aussi. Le résultat est que le résultat envoyé sur les ports de l'encodeur donnent l'illusion de l'appui d'une touche qui n'est pas appuyée, ici celle située sous la touche de droite.

Ghosting - 2

Une solution pour limiter ce phénomène de ghosting est de coupler chaque touche avec une diode, qui empêche le courant de passer dans les lignes ou colonnes qui ne devraient pas être activées.

Diode - ghosting

La souris[modifier | modifier le wikicode]

Mécanisme interne d'une souris à boule.
Connecteurs PS/2 pour le clavier et la souris. Le vert est pour la souris et le violet pour le clavier.

Les anciennes souris fonctionnaient avec une boule, en contact avec la surface/le tapis de souris, que le mouvement de la souris faisait rouler sur elle-même. Ce mouvement de rotation de la boule était capté par deux capteurs, un pour les déplacements sur l'axe gauche-droite, et un pour l'axe haut-bas.

Les souris plus récentes contiennent une source de lumière, qui éclaire la surface sur laquelle est posée la souris (le tapis de souris). Cette source de lumière peut être une diode ou un laser, suivant la souris : on parle de souris optique si c'est une diode, et de souris laser si c'est un laser. Avec la source de lumière, on trouve une caméra qui photographie le tapis de souris intervalles réguliers, pour détecter tout mouvement de souris. Le tapis de souris n'est pas une surface parfaite, et contient des aspérités et des irrégularités à l'échelle microscopique. Quand on bouge la souris, les images successives prises par la caméra ne seront donc pas exactement les mêmes, mais seront en partie décalées à cause du mouvement de la souris. La caméra est reliée à un circuit qui détecte cette différence, et calcule le déplacement en question. Précisément, elle vérifie de combien l'image a bougé en vertical et en horizontal entre deux photographies de la surface.

Sensibilité et accélération souris[modifier | modifier le wikicode]

Le déplacement mesuré par le capteur est envoyé à l'ordinateur. Ce qui est envoyé est le nombre de pixels de différence entre deux images de caméra, en horizontal et en vertical. Le système d'exploitation va alors multiplier ce déplacement par un coefficient multiplicateur, la sensibilité souris, ce qui donne le déplacement du curseur sur l'écran en nombre de pixels). Plus celle-ci est faible, meilleure sera la précision.

Les OS actuels utilisent l'accélération souris, à savoir que la sensibilité est variable suivant le déplacement, le calcul du déplacement du curseur étant une fonction non-linéaire du déplacement de la souris. Sur les anciens OS Windows, la sensibilité augmentait par paliers : un déplacement souris faible donnait une sensibilité faible, alors qu'une sensibilité haute était utilisée pour les déplacements plus importants. Cette accélération souris est désactivable, mais cette désactivation n'est conseillée que pour jouer à des jeux vidéos, l'accélération étant utile sur le bureau et dans les autres interfaces graphiques. Elle permet en effet plus de précision lors des mouvements lents (vu que la sensibilité est faible), tout en permettant des mouvements de curseurs rapides quand la souris se déplace vite.

Performance de la souris[modifier | modifier le wikicode]

Plus a résolution de la caméra de la souris est élevée, plus celle-ci a tendance à être précise. Cette résolution de la caméra de la souris est mesurée en DPI, Dot Per Inche. Il s'agit du nombre de pixels que la caméra utilise pour capturer une distance de 1 pouce (2,54 cm). Il va de soit que plus le DPI est élevé, plus la souris sera sensible. Pour un même déplacement de souris et à sensibilité souris égale, une souris avec un fort DPI entrainera un déplacement du curseur plus grand qu'une souris à faible DPI. Cela est utile quand on utilise un écran à haute résolution, mais pas dans d'autres cas.

Un autre paramètre important de la souris est la fréquence de rafraichissement, le nombre de fois qu'elle envoie des informations à l'ordinateur. Suivant le connecteur, celle-ci varie. Une souris connecté au connecteur PS/2 (celui situé l'arrière de l'unité centrale), a une fréquence par défaut de 40 hertz, mais peut monter à 200 Hz si on le configure convenablement dans le panneau de configuration. Un port USB a une fréquence de 125 Hz par défaut, mais peut monter jusqu’à 1000 Hz avec les options de configuration adéquate dans le pilote de la souris. Plus cette fréquence est élevée, meilleure sera la précision et plus le temps de réaction de la souris sera faible, ce qui est utile dans les jeux vidéos. Mais cela entrainera une occupation processeur plus importante pour gérer les interruptions matérielles générées par la souris.