Fonctionnement Souris
Fonctionnement Souris
Fonctionnement Souris
N Souris PS/2
Souris PS/2
1. Le protocole PS/2
Le protocole PS/2 permet une communication synchrone, bidirectionnelle et bits en série
entre un système et un périphérique (couramment clavier, souris ou touchpad de portable).
Chaque coté est susceptible d’envoyer des commandes ou des données mais un seul coté ne
pourra transmettre à la fois puisque la liaison se fait sur un seul fil.
C’est le système maître qui alimente le périphérique PS/2. Les signaux Data et Clk sont
bidirectionnels et à sortie collecteur ouvert . Une résistance de 10K ohm environ doivent être
placées entre ces deux signaux et l’alimentation ce qui garantie un niveau haut hors de toute
transaction.
+5V +5V
Système Périphérique
DATA DATA
CLK CLK
GND GND
Page 1
Souris PS/2 P.N ENSEIRB
LSB en premier, précédés d’un bit start (‘0’) et suivi d’un bit de parité et d’un bit stop (‘1’).
Le bit de parité impaire vaut ‘1’ si le nombre total de ‘1’ dans l’octet et le bit de parité lui-
même est impair.
Durant la transmission, c’est le périphérique qui fournit l’horloge en la positionnant à un
niveau bas ( front descendant) tandis que l’émetteur (système ou périphérique) place data à un
niveau bas pour un bit ‘0’ ou le laisse inactif pour un bit ‘1’. La fréquence d’horloge est au
maximum de 33 kHz mais le plus couramment de 15 kHz.
Entre les transmissions, le bus peut être :
! Idle : CLK et DATA sont tous les deux au niveau haut . Il n’y a pas d’activité.
! Inhibit : Le système maintient CLK au niveau bas
! Request to send : Le maître maintient DATA au niveau bas mais laisse CLK flotter. Il
est prêt à émettre.
CLK
DATA
DATA
Bit
Request Line
0 0 1 0 1 1 1 1 Parité stop
to send control
impaire
Figure 3 : transmission de la commande F4
Page 2
Drivers de souris PS/2 P.N ENSEIRB
Après la reconnaissance du bit stop, le périphérique force DATA à 0 et fournie une impulsion
d’horloge supplémentaire. Ceci permet éventuellement au maître d’inhiber l’horloge tant qu’il
n’est pas prêt à émettre de nouveau.
L’ordre de grandeur de la période d’horloge CLK est de 60 à 100 µS.
2. La souris
Page 3
Souris PS/2 P.N ENSEIRB
2.2. Initialisation
A la mise sous tension, la souris exécute un auto-test et renvoie les codes AA et 00. Le
système est censé avoir positionné pendant cette étape les signaux horloge et donnée à l’état
haute impédance. Le mode par défaut au démarrage est « streaming mode disabled ». Il est
aussi possible de réinitialiser la souris par la commande « Reset » codée FF.
La durée de l’initialisation peut atteindre 500 mS.
Msb LSB
Bit 7 6 5 4 3 2 1 0
Octet 1 Yo Xo Ys Xs 1 M R L
Octet 2 X7 X6 X5 X4 X3 X2 X1 X0
Octet 3 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0
L = Left key status bit ( 1 appuyé, 0 relaché)
M = Middle Key status bit
R = Right Key status bit
X7-X0 = déplacement en X en complément à 2
( négatif à gauche, positif à droite)
Y7-Y0 = Deplacement en Y en complément à 2
( négatif en bas, positif en haut)
Xo = bit d’overflow sur X
Yo = bit d’overflow sur Y
Xs = Signe de X (1 = négatif)
Ys = Signe de Y (1 = négatif)
Les compteurs de mouvement sont des mots de 9 bits en complément à 2. Le MSB est le bit
de signe qui se retrouve dans l’octet 1 de la trame et les autres 8 bits dans les octets 2 ou 3.
Ces compteurs sont mis à jour lorsque la souris détecte un mouvement. Ils contiennent la
somme de tous les mouvements effectués depuis le dernier transfert de trame vers le système.
Ils ont une valeur comprise entre +255 et –256. S’il y a dépassement, les bits d’overflow de
l’octet 1 sont activés et aucun incrément ou décrément n’est possible jusqu’à l’émission de la
trame et le reset des compteurs qui s’en suit.
Quant à la durée d’une trame, il faut compter l’émission des trois octets espacés d’environ
350 µs ; Cela donne environ 3,6 ms. Si on rajoute une durée d ’au moins 6,4 ms entre trames,
alors la souris pourra envoyer jusqu’à 100 trames par seconde.
Page 4
Drivers de souris PS/2 P.N ENSEIRB
2.4. Exploitation
Sur un ordinateur, la souris sert à réaliser un curseur vidéo. Chaque fois que la souris émet
une nouvelle trame, il faut rajouter à la position courante du curseur les mouvements H et V
correspondants. Le curseur sera initialisé au centre de l’écran au départ. On constate qu’il
suffit de deux registres d’accumulation pour mémoriser la position du curseur en H ainsi que
celle en V. L’idéal est que la résolution de la souris ( plus petit déplacement) corresponde à la
résolution de l’écran ( un pixel) .
3. Bibliographie
! MicroPC et Image VGA : Christophe Paris – PFE ENSEIRB 2002
! Rapid prototyping of digital systems: James O. Hamblen , Michael D. Fuman –
Kluwer academic publishers
! Le site de J.Weiss : http://www.supelec-rennes.fr/ren/perso/jweiss/
Page 5