Protocole de PS/2 Mouse/Keyboard Cet article est copyright 1999, Adam Chapweske Introduction : L'interface de dispositif PS/2, employée par beaucoup de souris et claviers modernes, a été développée par IBM et initialement apparue du manuel de référence technique d'IBM. Cependant, ce document n'a pas été imprimé pendant beaucoup d'années et jusque moi ne sait pas, là n'est actuel aucune publication officielle de cette information. Je n'ai pas eu accès au manuel de référence technique d'IBM, ainsi toute l'information à cette page vient de mes propres expériences comme l'aide des références énumérées en bas de cette page. Descibes de ce document que l'interface a utilisé par la souris PS/2, clavier PS/2, et au clavier. Je couvrirai l'interface physique et électrique, aussi bien que le protocole. Si vous avez besoin de l'information de plus haut niveau, telle que des commandes, des formats de paquet de données, ou de tout autre détail de l'information au clavier ou à la souris, j'ai écrit les documents séparés pour les deux dispositifs : (À) l'Interface du Clavier PS/2Je vous encourage également à examiner la page principale de ce site pour assurer plus d'information liée à ce sujet, y compris des projets, le code, et des liens liés à la souris et au clavier. Veuillez envoyer un email si vous trouvez tous erreurs ou mauvais conseils sur ce site. l'Interface Physique : Le port PS/2 physique est l'un de deux modèles des connecteurs : Les 5-broches DIN ou les 6-broches mini-Vacarme. Les deux connecteurs sont complètement (électriquement) semblables ; la seule différence pratique entre les deux est l'agencement des broches. Ceci signifie que les deux types de connecteurs peuvent facilement être changés avec les adaptateurs câblés simples. Ceux-ci environ $6 coûtés ou vous peuvent faire vos propres en appariant les broches sur deux connecteurs quelconques. La norme DIN a été créée par l'organisation allemande d'étalonnage (norme de fuer de Deutsches Institut). Leur site Web est à http://www.din.de/ (ce site est en allemand, mais la plupart de leurs pages sont également disponibles en anglais.) Les claviers de PC utilisent des 6-broches mini-Vacarme ou des 5-broches connecteur DIN. Si votre clavier a des 6-broches mini-Vacarme et votre ordinateur a des 5-broches DIN (ou le versa de visa), les deux peuvent être rendus compatibles avec les adaptateurs décrits ci-dessus. Des claviers avec les 6-broches mini-Vacarme désigné souvent sous le nom des claviers "PS/2", alors que ceux avec les 5-broches DIN s'appellent "" aux dispositifs (les claviers de "XT" a également utilisé les 5-broches DIN, mais elles sont tout à fait vieilles et n'ont pas été conduites à beaucoup d'années.) Tous les claviers modernes construits pour le PC sont PS/2, À, ou USB. Ce document n'applique pas aux dispositifs d'USB, qui utilisent une interface complètement différente. Les souris viennent dans un certain nombre de formes et de tailles (et
d'interfaces.) Le type le plus populaire est probablement la souris
PS/2, avec des souris d'USB gagnant la popularité. Juste il y a
quelques années, les souris séquentielles étaient également tout à fait
populaires, mais l'industrie d'ordinateurs les abandonne à l'appui des
dispositifs USB et PS/2. Ce document s'applique seulement aux souris
PS/2. Si vous voulez connecter une publication périodique ou la
souris d'USB, il y a d'abondance de l'information disponible ailleurs
sur le Web. Comme note latérale, il y a un autre type de connecteur que vous pouvez exécuter dans sur des claviers. Tandis que la plupart des câbles de clavier sont câblés au clavier, il y en a dont le câble n'est pas de manière permanente attaché et n'est pas venu comme composant séparé. Ces câbles ont un connecteur DIN sur une extrémité (l'extrémité qui se relie à l'ordinateur) et un connecteur de SDL (liaison de transmission de données de Sheilded) sur l'extrémité de clavier. SDL a été créé par une compagnie appelée l'"ampère." Ce connecteur est quelque peu semblable à un connecteur de téléphone parce qu'il a des fils et des ressorts plutôt que des broches, et aux prises d'un clip il en place. Si vous avez besoin de plus d'information sur ce connecteur, vous pourriez pouvoir le trouver sur le site Web de l'ampère à http://www.connect.amp.com/. J'ai seulement vu ce type de connecteur sur (de vieux) claviers de XT, bien qu'il puisse y avoir aux claviers qui utilisent également le SDL. Ne confondez pas le connecteur de SDL avec le connecteur d'USB -- eux probablement tous les deux sembler semblable dans mon diagramme ci-dessous, mais eux sont réellement très différents. Maintenez dans l'esprit que le connecteur de SDL a des ressorts et des pièces mobiles, alors que le connecteur d'USB pas . Les pinouts pour chaque connecteur sont montrés ci-dessous :
Note : Dans tout ce document, j'emploierai le terme plus général "centre serveur" pour me référer à l'ordinateur -- ou à celui que le keyboard/mouse est relié -- et le terme "dispositif" se rapportera au keyboard/mouse. Vcc/Ground fournissent la puissance au keyboard/mouse. Le clavier
ou la souris ne devrait pas dessiner plus de 100 mA du centre serveur et
du soin doivent être pris pour éviter les montées subites passagères.
De telles montées subites peuvent être provoquées "chaud-en
branchant" un keyboard/mouse (IE, connect/disconnect le dispositif tandis
que le courant d'ordinateur passe.) Des cartes mères plus anciennes
ont eu un fusible surface-monté protéger les ports de clavier et de
souris. Quand ce fusible a soufflé, la carte mère était inutile au
consommateur, et non-fixable au technicien moyen. La plupart des
plus nouveaux fusibles de réinitialisation automatique "d'utilisation de
cartes mères" poly qui vont un long chemin de remédier à de ce problème.
Cependant, ce n'est pas une norme et il y a d'abondance immobile des
cartes mères plus anciennes en service. Par conséquent, je
recommande contre chaud-brancher une souris PS/2 ou un clavier.
Les lignes de données et d'horloge sont les deux open-collector avec
des résistances de pullup à +5V. Une interface "open-collector" a
l'état deux possible : basse, ou élevée impédance. Dans le "bas"
état, un transistor tire la ligne au niveau du sol. Dans l'état
"d'impédance élevée", l'interface agit en tant que circuit ouvert et ne
pilote pas la ligne le bas ou haute. En outre, une résistance de "pullup"
est reliée entre le bus et Vcc ainsi le bus est tiré haut si aucun des
dispositifs sur le bus ne le tire activement le bas. La valeur
exacte de cette résistance n'est pas trop importante (kOhms 1~10) ; de
plus grandes résistances ont comme conséquence moins de puissance
d'énergie et de plus petites résistances ont comme conséquence un temps de
montée plus rapide. Une interface open-collector générale est
montrée ci-dessous :
La souris PS/2 et le clavier mettent en application un protocole
séquentiel synchrone bidirectionnel. Le bus est "ralenti" quand les
deux lignes sont hautes (open-collector). C'est le seul état où on
permet le keyboard/mouse commence à transmettre des données. Le
centre serveur a le contrôle final du bus et peut empêcher la transmission
à tout moment en tirant la ligne le bas d'horloge. Le dispositif produit toujours du signal d'horloge. Si le centre
serveur veut envoyer des données, il doit d'abord empêcher la transmission
du dispositif par le bas de traction d'horloge. Le centre serveur
alors tire des données basses et libère l'horloge. C'est
"Demander-à-Envoient" l'état et les signaux le dispositif au début
produisant des impulsions d'horloge. Toutes les données sont transmises un octet à la fois et chaque octet est introduit une trame se composant de 11-12 bits. Ces bits sont :
Le bit de parité est placé s'il y a un chiffre pair de 1 en les bits
d'informations et le (0) remis à l'état initial s'il y a un nombre impair
de 1 dans les bits d'informations. Le nombre de 1 dans les bits
d'informations plus le bit de parité ajoutent toujours jusqu'à un nombre
impair (l'imparité.) Ceci est utilisé pour la détection des erreurs.
Le keyboard/mouse doit contrôler ce bit et s'incorrect il répond
comme si il avait reçu une commande incorrecte. Des données envoyées du dispositif au centre serveur sont lues sur le bord en chute du signal d'horloge ; des données envoyées du centre serveur au dispositif sont lues sur le bord de montée. La fréquence de base doit être dans l'intervalle 10 - 16.7 kilohertz. Ceci signifie que l'horloge doit être haute pendant 30 - 50 micro-secondes et bas pendant 30 - 50 micro-secondes. Si vous concevez un clavier, une souris, ou un émulateur de centre serveur, vous si modify/sample la ligne de données au milieu de chaque cellule. C.-à-d.. 15 - 25 micro-secondes après la transition appropriée d'horloge. Encore, le keyboard/mouse produit toujours du signal d'horloge, mais le centre serveur a toujours le contrôle final de la transmission. La synchronisation est absolument cruciale. Chaque fois que la quantité que je donne en cet article doit être suivie exactement.Transmission : Dispositif-à-Centre serveur Les lignes de données et d'horloge sont deux collecteur ouvert. Une résistance est reliée entre chaque ligne et +5V, ainsi l'état de veille du bus est haut. Quand le clavier ou la souris veut envoyer l'information, elle d'abord des contrôles la ligne d'horloge à s'assurer il est à un niveau élevé de logique. Si elle n'est pas, le centre serveur empêche la transmission et le dispositif doit protéger n'importe quelles données à-être-envoyées jusqu'à ce que le centre serveur libère l'horloge. La ligne d'horloge doit être sans interruption haute pour au moins pendant 50 micro-secondes avant que le dispositif peut commencer à transmettre ses données. Comme j'ai mentionné dans la section précédente, le clavier et la souris utilisent un protocole séquentiel avec les trames de 11 bits. Ces bits sont :
Le schéma 2 :
transmission de Dispositif-à-centre serveur. La ligne état de
changements quand l'horloge est haute et ces données de données est valide
quand l'horloge est basse. Le schéma 3 : Balayez le code pour la clé de "Q" (15h) étant envoyée d'un clavier à l'ordinateur. Manche A est le signal d'horloge ; le canal B est le signal de données. --- La fréquence de base est de 10-16.7 kilohertz. Le temps à partir
du bord de montée d'une impulsion d'horloge à une transition de données
doit être au moins de 5 micro-secondes. Le temps d'une transition de
données au bord en chute d'une impulsion d'horloge doit être au moins de 5
micro-secondes et aucunes 25 micro-secondes plus grandes que.
Le centre serveur peut empêcher la transmission à tout moment en tirant
la ligne le bas d'horloge pendant au moins 100 micro-secondes. Si
une transmission est empêchée avant la 11ème impulsion d'horloge, le
dispositif doit interrompre la transmission actuelle et préparer pour
retransmettre le "gros morceau" actuel des données quand le centre serveur
libère l'horloge. Un "gros morceau" des données a pu être un code de
marque, code de rupture, identification de dispositif, paquet de mouvement
de souris, etc... Par exemple, si un clavier est interrompu tout en
envoyant le deuxième octet d'un code à deux bits de rupture, il devra
retransmettre les deux octets de ce code de rupture, pas simplement un qui
a été interrompu. Si le centre serveur tire le bas d'horloge avant la première haut-à-basse transition d'horloge, ou après le bord en chute de la dernière impulsion d'horloge, le keyboard/mouse n'a pas besoin de ne retransmettre aucune donnée. Cependant, si on crée de nouvelles données qui doivent être transmises, il devra être protégé jusqu'à ce que le centre serveur libère l'horloge. Les claviers ont une mémoire tampon 16-byte à cette fin. Si la valeur de plus de 16 octets des frappes se produisent, d'autres frappes seront ignorées jusqu'à ce qu'il y ait pièce dans la mémoire tampon. Les souris enregistrent seulement le paquet de mouvement le plus actuel pour la transmission. Transmission de Centre-à-Dispositif : Le paquet est envoyé à peu différemment dans la transmission de centre-à-dispositif... Tout d'abord, le dispositif PS/2 produit toujours du signal d'horloge. Si le centre serveur veut envoyer des données, il doit d'abord mettre l'horloge et les lignes de données dans "Demander-à-envoient" l'état comme suit :
Après que le bit d'arre4t soit reçu, le dispositif reconnaîtra l'octet reçu en apportant la ligne de données le bas et en produisant d'une dernière impulsion d'horloge. Si le centre serveur ne libère pas la ligne de données après la 11ème impulsion d'horloge, le dispositif continuera à produire des impulsions d'horloge jusqu'à ce que la la ligne de données soit libérée (le dispositif produira alors d'une erreur.) Le centre serveur peut interrompre la transmission à l'heure avant la 11ème impulsion d'horloge (reconnaissez le bit) en jugeant l'horloge basse pendant au moins 100 micro-secondes. Pour faciliter ce processus pour comprendre, voici les étapes que le centre serveur doit suivre pour envoyer des données à un dispositif PS/2 : 1) apportent la ligne le bas d'horloge pendant au moins 100 micro-secondes.
Le schéma 3 : Transmission de
Centre-à-Dispositif. Le schéma 4 : Transmission détaillée de
centre-à-dispositif. En référence au schéma 4, il y a deux quantités de temps où le centre serveur recherche. (a) est le temps il prend le dispositif pour commencer à produire des impulsions d'horloge après que le centre serveur prenne au commencement la ligne le bas d'horloge, qui doit n'être aucune mme. 15 plus grande que que (b) est le temps il prend pour que le paquet soit envoyé, qui doit n'être aucun 2ms plus grand que. Si l'un ou l'autre de ces délais n'est pas rencontré, le centre serveur devrait produire d'une erreur. Juste après que le "ACK" est reçu, le centre serveur peut apporter la ligne le bas d'horloge pour empêcher la transmission tandis qu'il traite des données. Si la commande envoyée par le centre serveur exige une réponse, cette réponse doit être pas plus tard que la mme. 20 reçue après que le centre serveur libère la ligne d'horloge. Si ceci ne se produit pas, le centre serveur produit d'une erreur. |