Étape 1: Quelques informations
Strictement parlant, la connexion de type PS2 utilise 2 fils pour transmettre des données, qui sont appelées données et horloge. Lorsque vous appuyez sur la touche sur le clavier, le microcontrôleur qui se trouve dans le clavier envoie des paquets de 11 bits d’information sur le câble de données. Chaque bit est accompagné d’un signal de bord horloge chute, ce qui signifie que vous devez lire uniquement les données lorsque le signal d’horloge s’abat et pas l’autre fois. Le premier bit est START bit, il y a 7 bits pour DATA0-6, puis un bit de parité et enfin STOP bit. Après que les données sont reçues et vérifiées qu’il est correct (START, parité et STOP bits ont des valeurs adéquates) il vous suffit de garder DATA0-6 bits et se débarrasser du reste.
Maintenant à la recherche plus large, lorsqu’une touche est pressée, le clavier envoie un paquet de 11 bits pour dire quel bouton a été enfoncé. Si la touche est enfoncée et tenue puis il commence à envoyer régulièrement le même paquet. Enfin si vous relâchez le bouton, il envoie un autre 2 sachets, en disant que le bouton est relâché et quel bouton a été libéré. C’est un peu différent pour différents pour ce qu’on appelle étendu boutons, où il envoie un paquet de plus et de savoir ce que le code doit être reçue, vous peuvent lire manuel ou permet de dire
.
La fréquence, il transmet des données est assez faible et peut varier entre 10 kHz et 16,7 kHz. Cela devient important, lorsque vous utilisez un FPGA avec des vitesses de 50 MHz et plus. Il faut réduire la fréquence par un facteur, sinon vous allez lire le mauvais signal d’horloge (par exemple vous allez lire des données tandis que le signal d’horloge change encore...). Mise à l’échelle de la carte FPGA à environ 30 à 50 kHz devrait faire le travail, mais encore une fois, cela dépendra du clavier.
Enfin, il est important de décrire ce qui va arriver si vous reçoivent moins de 11 bits comme cela arrive parfois aussi bien. Très rarement, mais encore il arrive... Ce que j’ai fait ici est mettre une minuterie pour dire si assez de temps a passé de recevoir le bit et si le délai est trop long jusqu’en recevant le bit suivant, il évacue tout ce qu’elle a reçu jusqu'à ce point.
Vous pouvez toujours en savoir plus sur le protocole ici ou simplement google "PS2 type protocole", qui va donner tu ferais mieux de comprendre à ce sujet fonctionne. Je recommande vraiment vous lire plus là-dessus si vous souhaitez implémenter les pilotes vous-même ! Manuel du BASYS 2 fournit également des informations sur comment une telle chose pourrait être appliquée à la page 5 à 7 du Manuel.