programmation en vhdl sur circuit fpga d’un clavier … · le projet qu’il nous a été...

37
LAHRICHI Karim DARTIAILH Karine ___________________________________________________________________________ Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils - 1 - Nous tenons à remercier M. MEGHDADI pour la disponibilité et l’intérêt qu’il nous a témoignés tout au long de la réalisation de ce projet. Nous tenons également à souligner l’importance de la confiance dont il a fait preuve à notre égard. Ainsi, nous avons pu bénéficier d’une réelle autonomie sans laquelle l’avancement de ce projet n’aurait pas été le même. Nous adressons également nos remerciements à Mme Marie-Sandrine DENIS pour nous avoir permis d’avoir accès à tout le matériel nécessaire à la réalisation de ce projet ainsi que pour sa disponibilité.

Upload: dinhdieu

Post on 16-Sep-2018

266 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 1 -

Nous tenons à remercier M. MEGHDADI pour la disponibilité et l’intérêt qu’il nous a

témoignés tout au long de la réalisation de ce projet.

Nous tenons également à souligner l’importance de la confiance dont il a fait preuve à

notre égard. Ainsi, nous avons pu bénéficier d’une réelle autonomie sans laquelle l’avancement

de ce projet n’aurait pas été le même.

Nous adressons également nos remerciements à Mme Marie-Sandrine DENIS pour nous

avoir permis d’avoir accès à tout le matériel nécessaire à la réalisation de ce projet ainsi que pour

sa disponibilité.

Page 2: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 2 -

The purpose of the project we were in charge of this year was to realize a wireless mouse

and keyboard. Thus, we were led to use the description language VHDL so as to program two

FPGA circuits.

Indeed, since this project can be divided in two parts that are the emission on the one

hand and the reception on the other hand, two FPGA circuits had to be programmed. The FPGAs

we have worked on were those of a Spartan 3 board.

The Spartan 3 board includes a PS/2 port that can be used to connect either a mouse or a

keyboard. The connector used is the standard 6-pin mini-DIN one. That is why the first target

was to understand the working of such a connector.

It was then necessary to focus on the working of the two peripheral devices used namely

the mouse and the keyboard. It was especially important to notice that the length of data is not

the same for both of them.

The next target that consisted in defining a viable transmission protocol constitute the

main point of this project as it sets the way the two FPGAs will be able to communicate among

themselves.

Once those points have been understood, the programming work can be started. It was

chosen to carry out all the work considering only the mouse, then to do the same with the

keyboard and finally to combine these two solutions in a single program so as to manage at once

the mouse and the keyboard.

Page 3: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 3 -

INTRODUCTION……………………………………………………………………….. p4

I) PRESENTATION DE LA CARTE SPARTAN 3 DE XINLINX…………………… p5

II) PRESENTATION DU LOGICIEL………………………………………………….. p8

III) LE PROTOCOLE PS/2……………………………………………………………… p15

1. Le connecteur PS/2……………………………………………………………. P15

2. La transmission d’octets………………………………………………………. P16

IV) PRESENTATION DU MODE DE FONCTIONNEMENT DE LA SOURIS……… p17

1. Principe……………………………………………………………………….. p17

2. Initialisation de la transmission de données………………....…………….….. p18

3. Fonctionnement courant…………………………………………….………… p19

V) PRESENTATION DU MODE DE FONCTIONNEMENT DU CLAVIER…........... p21

1. Principe………………………………………………………………………... p21

2. Fonctionnement courant………………………………………………………. p21

VII) FONCTIONNEMENT DU PROGRAMME GERANT LA SOURIS…………….. p24

1. Préliminaires………………………………………………………………….. p24

2. Programme concernant l’émission……………………………………………. p26

3. Programme concernant la réception.…………………………………………. p28

CONCLUSION………………………………………………………………………….. p30

TABLE DES FIGURES…………………………………………………………………. p32

REFERENCES BIBLIOGRAPHIQUES………………………………………………… p33

ANNEXES…………………………………………………………………………………. p34

Page 4: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 4 -

INTRODUCTION

Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL

a pour but la réalisation d’un clavier et d’une souris sans fils. Il a donc été nécessaire de

programmer en VHDL deux circuits FPGA, d’une part côté émission et d’autre part côté

réception.

Le langage VHDL (Very high speed integrated circuit Hardware Description Language)

est un langage de description de haut niveau pouvant être utilisé pour programmer des

composants programmables, en particulier de type FPGA. Un langage de description est dit de

haut niveau s’il fait le plus possible abstraction de l’objet pour lequel il est écrit.

Un circuit FPGA (Field-Programmable Gate Array) est un circuit intégré qui peut être

reprogrammé après sa fabrication.

La chaîne de transmission à réaliser dans le cadre de ce projet peut se modéliser comme

présenté ci-dessous.

FIGURE 0 : CHAINE DE TRANSMISSION A REALISER

Une première étape dans l’avancement de ce projet a été de s’intéresser au matériel utilisé

c’est-à-dire aux caractéristiques de la nouvelle carte Spartan 3 sur laquelle a été réalisé le travail.

De plus, il s’est également avéré utile de connaître le fonctionnement d’une souris et d’un

clavier. Pour ce faire, il a été indispensable de connaître protocole PS/2, protocole utilisé par les

deux périphériques étudiés pour transmettre leurs données.

Les objectifs fixés par ce projet ont été de réaliser dans un premier temps une liaison sans

fil pour permettre la transmission des données de la souris. Ainsi, il a fallu tout d’abord organiser

l’émission des informations fournies par la souris, c’est-à-dire récupérer les données

correctement et les envoyer à l’émetteur. Ensuite, dans un deuxième temps, il a fallu s’intéresser

à la récupération des données côté réception pour compléter la chaîne de transmission.

Page 5: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 5 -

Le cahier des charges peut se résumer de la façon suivante :

Réaliser un circuit interface souris

Générer une trame suivant les informations envoyées par la souris en proposant un

protocole pour la liaison

Attaquer l’émetteur

Récupérer les informations au niveau du récepteur

Générer les signaux à envoyer à l’unité centrale

Page 6: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 6 -

I) PRESENTATION DE LA CARTE SPARTAN 3 DE XILINX

La carte Spartan 3 de Xilinx sur laquelle nous avons eu l’occasion de travailler au cours de

la réalisation de ce projet se présente sous la forme suivante.

FIGURE 1 : XILINX SPARTAN 3 VUE DE DESSUS

FIGURE 2 : XILINX SPARTAN 3 VUE DE DESSOUS

Page 7: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 7 -

Le FPGA utilisé pour la programmation en VHDL lors de ce projet est cadencé par une

horloge de 50 Mhz. Au niveau de la connectique, le port PS/2 a assuré la connexion entre la

souris ou le clavier et le circuit FPGA. Le port JTAG permet de connecter la carte à l’unité

centrale de l’ordinateur utilisé pour la programmation.

FIGURE 3 : CARTE XILINX SPARTAN 3 UTILISEE

Page 8: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 8 -

II) PRESENTATION DU LOGICIEL

Le logiciel utilisé pour la programmation au niveau du PC est la version 6.2i de Xilinx

Integrated Software Environment (ISE).

Une fois le logiciel lancé, il faut, avant de commencer à programmer, créer un nouveau

projet. Pour cela, il faut sélectionner NEW PROJECT dans le menu FICHIER. La fenêtre

présentée ci-dessous apparaît. On complète les champs PROJECT NAME et PROJECT

LOCATION puis on sélectionne HDL pour une programmation en VHDL.

FIGURE 4 : ETAPE 1 POUR CREER UN PROJET

Après cette première étape, on définit les caractéristiques du projet. La fenêtre ci-dessous

apparaît. Il faut alors spécifier que le travail effectué est fait sur des cartes Spartan3 (dans le

champ DEVICE FAMILY). Les champs DEVICE et PACKAGE sont remplis conformément aux

inscriptions présentes sur la carte Spartan3 utilisée. Ces données sont caractéristiques du type de

carte utilisée.

Page 9: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 9 -

FIGURE 5 : ETAPE 2 POUR CREER UN PROJET

Puis lorsque la fenêtre suivante apparaît, il est alors possible de créer un fichier source en

cliquant sur « New Source ».

FIGURE 6 : ETAPE 3 POUR CREER UN PROJET

Page 10: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 10 -

Il est ensuite demandé le nom du fichier que l’on souhaite créer ainsi que sa localisation.

Il est encore nécessaire de spécifier que la programmation sera faite en VHDL en sélectionnant

VHDL Module.

FIGURE 7 : ETAPE 4 POUR CREER UN PROJET

Enfin, la dernière étape avant la création du projet consiste à définir le nom de l’entité

ainsi que de l’architecture souhaitées. Il est ici possible de spécifier les entrées et sorties

considérées dans le programme.

FIGURE 8 : ETAPE 5 POUR CREER UN PROJET

Page 11: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 11 -

Une fenêtre d’information indique alors que le projet va être créé en résumant les

principales caractéristiques spécifiées.

FIGURE 9 : ETAPE 6 POUR CREER UN PROJET

La fenêtre ci-dessous nous demande la confirmation de la création du nouveau projet.

FIGURE 10 : ETAPE 7 POUR CREER UN PROJET

Page 12: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 12 -

Enfin, avant de terminer la création du Projet il est alors possible d’ajouter des fichiers

source déjà existants au projet en les spécifiant dans la fenêtre suivante.

FIGURE 11 : ETAPE 8 POUR CREER UN PROJET

Pour finir, une dernière fenêtre résume l’ensemble des caractéristiques du nouveau projet.

FIGURE 12 : ETAPE 9 POUR CREER UN PROJET

Page 13: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 13 -

La programmation à proprement parler peut être commencée dans la fenêtre située dans la

partie droite de l’écran. La partie gauche située en haut de l’écran résume la composition du

projet dans le quel on travaille.

FIGURE 13 : ETAPE 10 POUR CREER UN PROJET

La partie gauche située plus en bas est réservée au traitement postérieur une fois la

programmation terminée.

FIGURE 14 : ETAPE 11 POUR CREER UN PROJET

Page 14: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 14 -

Ainsi, une fois la programmation terminée, on sélectionne Programming File Generation

Report. Cette action permet d’effectuer les vérifications prévues dans les menus Synthesize-XST

et Implement Design présentés dans la fenêtre ci-avant. Ces deux menus prévoient la vérification

de la syntaxe du programme et, si celle-ci est correcte, le mapping, c’est-à-dire l’attribution des

entrés/sorties, est à son tour vérifié. Enfin, un fichier est généré à partir du programme dans un

format « *.bit » pouvant être implanté dans le FPGA.

Il est ensuite possible de sélectionner Generate PROM, ACE, or JTAG File pour générer

un fichier pouvant être implanté dans la mémoire Flash associée au FPGA. Une fois le

programme dans la mémoire Flash, il sera possible de charger ce programme dans le FPGA en

appuyant sur un bouton situé sur la carte et qui est présenté ci-dessous.

Une fois ces étapes effectuées, la sélection de Configure Device (iMPACT) lance le

logiciel permettant d’implanter effectivement le programme dans le FPGA (ou dans la PROM),

comme il est possible de l’observer ci-dessous.

Ainsi, dans la capture d’écran ci-dessous, il est possible de voir deux « blocs » Xilinx. Le

premier correspond au FPGA, le deuxième à la mémoire Flash. Ici, il a été attribué le fichier

pilote_souris.bit au FPGA et il a été choisi de ne rien charger dans la mémoire Flash, c’est

pourquoi on lui a attribué BYPASS. En effet, le fait de sélectionner BYPASS (de l’anglais court-

circuiter) permet de considérer la mémoire Flash comme un court-circuit

FIGURE 15 : IMPLANTATION DU PROGRAMME SUR LA CARTE

Page 15: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 15 -

III) LE PROTOCOLE PS/2

Le protocole PS/2 permet une communication synchrone et bidirectionnelle. Elle a pour

particularité d’être une liaison série entre un système (l’ordinateur) et un périphérique

(classiquement un clavier ou une souris). Une telle liaison n’est assurée que par un seul fil. Ainsi,

si le caractère bidirectionnel de la communication permet aux deux côtés (i.e. au système ou au

périphérique) d’envoyer des données, il n’y a qu’un seul des deux côtés qui ne peut transmettre à

la fois.

1. LE CONNECTEUR PS/2

Le connecteur PS/2 est un connecteur mini-DIN-6 qui comporte 6 broches. Il s’agit de la

masse, l’alimentation 5V, l’horloge et des données. Les deux broches restantes sont non utilisées.

FIGURE 16 : CONNECTEUR MALE PS/2

Les signaux Data et Clock fournis par le système maître au périphérique PS/2 sont à l’état

haut par défaut. Ceci s’explique par le fait qu’une résistance de 10 kΩ environ est placée entre

ces deux signaux et l’alimentation.

Page 16: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 16 -

2. LA TRANSMISSION D’OCTETS

La transmission d’octet se fait de façon synchrone et série par trame de 11 bits. Chaque

trame se compose de 8 bits d’information, le LSB étant positionné en premier, précédés d’un bit

de start à 0 et suivis d’un bit de parité et d’un bit de stop à 1. Si le nombre total de ‘1’ dans

l’octet est pair, le bit de parité vaut ‘1’.

FIGURE 17 : EXEMPLE D’OCTET

Le signal d’horloge qui permet de cadencer la transmission est fourni par le périphérique.

La fréquence d’horloge est couramment de 15 kHz (elle varie cependant selon les modèles de

souris et peut valoir jusqu’à 33 kHz).

Entre les transmissions de données, le bus peut être dans l’état Idle (CLK et DATA sont

tous les deux au niveau haut, il n’y a pas d’activité) ou encore Request to send (le système maître

maintient DATA au niveau bas et laisse le signal CLK flotter, il est alors prêt à émettre.

Pour les transmissions de données dans le sens périphérique vers système maître, le bus

doit au préalable se trouver dans l’état Idle. Le périphérique transmet les données au rythme de

son horloge dont la période varie selon les systèmes de 60 à 100 µs. Il change les données sur

front montant de l’horloge, le système doit les lire sur front descendant.

Pour ce qui concerne les transmissions dans le sens système maître vers périphérique, le

système maître indique au périphérique qu’il souhaite émettre une commande en maintenant le

signal d’horloge au niveau bas pendant 100 µs puis place le bus en état Request To Send en

forçant Data à 0 et en libérant laissant le signal d’horloge. Dès que le périphérique reconnaît

l’état Request To Send du bus, il se tient prêt à recevoir une commande et émet son signal

d’horloge. Cette étape se fait en moins de 10ms. Le système maître change les données sur front

descendant, le périphérique échantillonne caque bit sur front montant de l’horloge.

Page 17: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 17 -

IV) PRESENTATION DU MODE DE FONCTIONNEMENT DE LA

SOURIS

1. PRINCIPE

On distingue deux types de souris à savoir les souris mécaniques qui sont plus anciennes

et les souris optiques qui tendent à se généraliser.

Les souris mécaniques contiennent une boule qui roule sur deux axes de roues. Ces roues

sont en fait des codeurs optiques qui traduisent les mouvement en X ou en Y par nombre de

comptage d’impulsions. On peut observer ce mécanisme sur la figure ci-dessous.

Y

X

FIGURE 18 : PRINCIPE D’UNE SOURIS MECANIQUE

Ce type de souris fonctionne par défaut avec une résolution de 200 CPI (Counts Per Inch)

ce qui correspond à un pas de 125 µm environ. La souris contient aussi deux ou trois boutons

poussoirs gérés par un microcontrôleur interne. Ce dernier gère la transmission des déplacements

gauche/droite (suivant X) et bas/haut (suivant Y), l’état des boutons ainsi que l’interprétation des

commandes reçues par le système maître.

Les souris optiques La souris optique possède un fonctionnement basé sur l'analyse de

la surface sur laquelle elle se déplace. Ainsi une souris optique est constituée d'une LED, d'un

système d´acquisition d´images (IAS) et d'un processeur de signaux numériques (DSP).

La LED est chargée d'éclairer la surface afin de permettre au système IAS d'acquérir

l'image de la surface. Le DSP, par analyse des caractéristiques microscopiques de la surface,

détermine le mouvement horizontal et vertical.

Page 18: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 18 -

Les souris optiques fonctionnent sur toutes surfaces non parfaitement lisses ou bien

possédant des dégradés de couleur. Les avantages principaux de ce type de dispositif de pointage

par rapport aux souris mécaniques sont notamment une précision accrue ainsi qu'un salissement

moindre.

2. INITIALISATION DE LA TRANSMISSION DE DONNEES

Il faut, pour établir la communication entre la souris et l’ordinateur, envoyer à la souris la

commande F4. Cette action permet de valider le mode de transmission en continu.

La souris répond à cette commande en envoyant un octet d’acquittement (OxFA). C’est

seulement après avoir envoyé cet octet d’acquittement que la souris émet ensuite les données par

paquet de trois octets.

Outre les envois de données, souris et ordinateur peuvent communiquer grâce à une liste

pré-établie de commandes de la souris et de messages renvoyés par celle-ci.

FIGURE 19 : COMMANDE D’UNE SOURIS PS/2

Page 19: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 19 -

FIGURE 20 : MESSAGES D’UNE SOURIS PS/2

3. FONCTIONNEMENT COURANT

La souris envoie les données au système à l’aide d’une trame de trois octets. Le premier

octet contient entre autres des informations relatives aux boutons de la souris. Ainsi, l’état des

boutons gauche, du bouton droit et éventuellement du bouton central sont contenus dans cet octet

au niveau des bits 0, 1 et 2. Cet octet contient également les informations de dépassement (ou

overflow) et de sens de déplacement au niveau des axes X et Y. Le sens de déplacement se

traduit par deux bits de signe présents aux bits 4 et 5 de ce premier octet. Ces bits sont mis à 0

pour un déplacement dans le sens positif de référence et à 1 pour un déplacement dans le sens

négatif.

FIGURE 21 : AXES DE LA SOURIS

Le deuxième octet contient les données renseignant sur les déplacements suivant l’axe X.

Le dernier octet contient quant à lui les informations sur les déplacements verticaux. En fait, la

souris possède des compteurs de mouvements qui traduisent des déplacements à l’aide de mots

de 9 bits. Ces mots sont chacun composés d’un bit de signe présent au niveau des bits 4 et 5 du

premier octet suivi de 8 bits traduisant les déplacements en eux-mêmes.

Page 20: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 20 -

Les compteurs de mouvements fournissent donc des mots de 9 bits en complément à 2. A

chaque nouvel envoi de trame vers le système, la souris met à jour ces compteurs. Ainsi,

l’information fournie contient la somme de tous les mouvements effectués depuis le dernier

envoi de trame. Les valeurs limites de ces deux octets sont -256 du côté négatif et +255 du côté

positif. Si ces limites sont franchies, les bits d’overflow situés au niveau du premier octet sont

placés à l’état haut. Si un dépassement est détecté, aucun incrément ni décrément ne se fait au

niveau des compteurs de mouvements. Ainsi, il faut attendre que la trame indiquant le

dépassement soit envoyé au système. Ce n’est qu’après l’envoi de cette trame que les compteurs

de mouvements sont remis à zéro. Ils peuvent dès lors comptabiliser les mouvements effectués

par la souris.

Le tableau présenté ci-dessous permet de visualiser l’organisation de chaque trame

envoyée par la souris.

FIGURE 22 : COMPOSITION DES TRAMES ENVOYEES PAR LA SOURIS

Au niveau de l’émission, entre l’envoi de deux octets, il s’écoule 350µs. L’envoi d’une

trame prend 3,6ms. De plus, entre l’envoi de deux trames, il faut compter 6,4 ms. Bien sûr, toutes

ces données peuvent varier en pratique d’un dispositif à l’autre. On peut cependant noter que l’on

observe en général un envoi de 100 trames par secondes.

Sur l’écran la souris se matérialise par un curseur. Ce curseur est placé par défaut au

cantre de l’écran qui correspond donc à l’origine du repère de la souris. A chaque fois que la

souris émet une trame, le système doit décoder le déplacement du curseur correspondant et le

rajouter à sa position courante.

La résolution de la souris traduit le plus petit déplacement possible du curseur. L’idéal est

que cette résolution soit égale à la résolution de l’écran, résolution qui correspond à un pixel.

Page 21: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 21 -

V) PRESENTATION DU MODE DE FONCTIONNEMENT DU CLAVIER

1. PRINCIPE

Le clavier, tout comme la souris, envoie ses données au système via une connexion série

bidirectionnelle. Outre la masse, cette liaison est constituée de deux fils, l’un véhicule le signal

d’horloge fourni par le clavier, l’autre sert au transport des données. La liaison étant, comme

dans le cas de la souris bidirectionnelle, le clavier pourra non seulement envoyer des données au

système mais aussi recevoir des commandes de celui-ci.

Chaque système étant conçu pour pouvoir recevoir plusieurs types de clavier suivant le

pays de commercialisation, un mécanisme de standardisation des touches est utilisé. A chaque

appui sur une touche, le clavier envoie au système un code géographique appelé scan code qui est

uniquement lié à l’emplacement de la touche sur le clavier.

Le clavier peut stocker jusqu’à 10 scan codes. De plus, pour permettre la détection de

l’appui simultané sur plusieurs touches (par exemple pour écrire une lettre majuscule), il existe

deux types de scan codes. En effet, un scan code appelé make code est envoyé au système lors de

l’enfoncement d’une touche et un autre appelé break code est envoyé lors de son relâchement.

Ainsi, lorsque l’on appuie sur la touche shift toutes les lettres tapées après l’envoi du make code

de shift et avant l’envoi de son break code seront écrites en majuscule.

2. FONCTIONNEMENT COURANT

Il faut maintenant s’intéresser à la structure même du clavier. En effet, pour détecter

l’enfoncement d’une touche, un réseau de câbles est placé sous le clavier de l'ordinateur. Chaque

touche est installée sur une intersection de câbles et ferme un contact si elle est enfoncée. Le

microprocesseur du clavier utilise un courant qui balaie chaque rangée en séquence, des milliers

de fois par seconde, que le clavier soit utilisé ou non.

FIGURE 23: STRUCTURE D’UN CLAVIER

Page 22: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 22 -

Quand une touche est enfoncée, le microprocesseur détecte une rangée comprenant un

circuit fermé et entame le balayage des colonnes. L'identité de la touche est transmise sous la

forme d'un code de touche qui est ensuite décodé et envoyé à l'écran sous forme d'un caractère

dactylographié ou d'une instruction.

Chaque touche correspond donc à un code appelé code ASCII (American Standard Code

for Information Interchange). Il permet le codage de caractères sur 8 bits, soit 256 caractères

possibles.

Les codes 0 à 31 ne sont pas des caractères. On les appelle caractères de contrôle car ils

permettent de faire des actions telles que le retour à la ligne ou l’émission d’un bip sonore.

Les codes 65 à 90 représentent les majuscules. Les codes 97 à 122 représentent les

minuscules. Ainsi, il suffit de modifier le 6ème

bit pour passer de majuscules à minuscules, c'est-

à-dire ajouter 32 au code ASCII en base décimale.

Tous ces codes peuvent être retrouvés dans la table ci-dessous.

FIGURE 24 : TABLE DES CARACTERES ASCII DE BASE

Page 23: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 23 -

FIGURE 25: TABLE DES CARACTERES ASCII ETENDUE

Page 24: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 24 -

VI) FONCTIONNEMENT DU PROGRAMME GERANT LA SOURIS

1. PRELIMINAIRES

Avant tout travail de programmation il a fallu tout d’abord s’intéresser aux modules

d’émission et de réception mis à notre disposition. On peut donc remarquer sur les datasheets

fournis (Annexe 1et 2) que la bande passante du module d’émission peut aller jusqu’à 10 KHz

alors que celle du module de réception ne peut supporter une fréquence de plus de 5KHz. Il s’est

donc avéré nécessaire de transmettre les données à une fréquence inférieure à 5KHz. La

fréquence choisie a donc été fixée aux alentours de 4 KHz.

De plus, en pratique il est apparu que la transmission au niveau de ces modules faisait

intervenir du bruit au repos. Pour y remédier il a été nécessaire de rajouter une résistance de

pull-up qui fixe un état haut au repos au niveau de l’émission car les sorties sont à collecteur

ouvert. Cette résistance a été placée entre la sortie du FPGA et +Vcc. Ceci a permis de réduire

significativement le bruit de transmission.

Le montage réalisé au niveau de l’émission est donc le suivant :

FIGURE 26: MONTAGE DU MODULE EMETTEUR

Le montage réalisé au niveau de la réception conformément aux instructions des

datasheets est le suivant :

FIGURE 27: MONTAGE DU MODULE RECEPTEUR

Page 25: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 25 -

Il est important de noter que la transmission au niveau des modules émetteur-récepteur est

unidirectionnelle. Ainsi, l’ordinateur présent en bout de chaîne ne peut envoyer de commande à

la souris. Il nous appartient donc d’envoyer la commande F4 à la souris nécessaire à son

initialisation puis de détecter l’octet d’acquittement envoyé par cette dernière.

D’une manière analogue, il est utile d’envoyer cet octet d’acquittement à l’ordinateur

pour le prévenir du bon déroulement de cette initialisation.

De plus, seules les données pouvant être envoyées par les modules, il a été à notre charge

de réaliser une récupération d’horloge au niveau de la réception. C’est ainsi qu’il a fallu générer

un signal d’horloge semblable à celui de l’émission, prenant en compte les délais de transmission

et actif uniquement lorsqu’un évènement est détecté.

Une fois ces observations prises en compte, il a été possible de passer à la programmation

proprement dite. Dans un soucis de clarté, cette programmation est présentée de façon

schématique dans les points suivants. Les programmes détaillés sont donnés en annexe 3 et 4.

2. PROGRAMME CONCERNANT L’EMISSION

2.1. SCHEMATIQUE D’ENSEMBLE

Page 26: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 26 -

Le programme côté émission est organisé de la façon suivante :

FIGURE 28: SCHEMATIQUE D’ENSEMBLE COTE EMISSION

2.2. DETAILS DU SEQUENCEUR

Page 27: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 27 -

Le séquenceur évoqué figure 28 fonctionne de la façon suivante :

FIGURE 29: ORGANISATION DU SEQUENCEUR D’EMISSION

3. PROGRAMME CONCERNANT LA RECEPTION

3.1. SCHEMATIQUE D’ENSEMBLE

Page 28: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 28 -

Le programme est organisé de la façon suivante :

FIGURE 30: SCHEMATIQUE D’ENSEMBLE COTE RECEPTION

3.2. DETAILS DU SEQUENCEUR

Page 29: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 29 -

Le séquenceur évoqué figure 30 fonctionne de la façon suivante :

FIGURE 31: ORGANISATION DU SEQUENCEUR DE RECEPTION

Page 30: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 30 -

CONCLUSION

Ce projet a eu pour avantage de nous apprendre à mieux appréhender la programmation

en VHDL de circuit FPGA. On a pu ainsi se familiariser avec le fonctionnement de la carte

Spartan-3 de Xilinx à travers un exemple concret, à savoir la réalisation de bout en bout d’une

souris sans fil.

Les difficultés rencontrées nous ont permis d’étudier le fonctionnement précis d’une

souris mais aussi de connaître de façon détaillée le protocole PS/2. La principale difficulté a

résidé dans le fait que la documentation sur ce protocole reste très limitée et se cantonne souvent

à de simples observations expérimentales et non à des généralités. Ainsi, la vérification de toutes

les étapes du protocole PS/2 a été à notre charge.

Plusieurs perspectives pourraient donner suite à ce projet. Il serait notamment possible

d’intégrer un clavier sans fil. Pour cela, il est nécessaire de définir un protocole de

communication. Pour établir ce protocole, il faudra prendre en compte le fait que la souris envoie

ses informations par trames de 33 bits alors que le clavier utilise des trames de 11 bits.

De plus, côté émission, il faudra définir comment organiser non seulement la réception

des données d’une part de la souris et d’autre part du clavier mais aussi l’envoi des données de

ces deux périphériques au niveau de l’émetteur.

Côté réception, il faudra récupérer les données puis les organiser en fonction du protocole

de transmission adopté pour pouvoir envoyer des signaux décodables par le système.

Compte tenu des contraintes imposées par le problème, il faudrait commencer par

effectuer l’initialisation de la souris en envoyant la commande F4 puis en détectant l’octet

d’acquittement FA.

La première trame provenant de la souris serait ensuite récupérée. Ainsi, ces 33 bits

pourraient être stockés dans un registre A.

Une deuxième opération consisterait à stocker la première trame provenant du clavier, à

savoir 11 bits, dans un registre B.

On pourrait ensuite accoler les données contenues dans A et B dans un registre C de 44

bits. Ce sont les données contenues dans le registre C qui seraient envoyées à l’émetteur comme

présenté ci-après.

Page 31: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 31 -

FIGURE 32 : COMPOSITION DU REGISTRE C

Cette opération pourrait être répétée à l’infini. Ainsi, les données seraient envoyées à

chaque événement de la souris ou du clavier ou des deux.

Côté réception, c’est ce registre C qui serait récupéré. Il faudrait alors séparer les 33 bits

de plus fort poids correspondant aux données envoyées par la souris des 11 bits de plus faible

poids correspondant aux informations liées au clavier.

Ces informations devraient ensuite être traitées par le programme de réception dans le but

d’envoyer au système des informations sous une forme qu’il peut interpréter.

Il faut cependant noter qu’une telle solution ne serait possible qu’en prenant un récepteur

de bande passante plus élevée afin d’avoir le temps de transmettre correctement ces 44 bits. En

effet, à la fréquence de 4 KHz à laquelle on travaille il faudrait 11 ms pour transmettre le registre

C ; ce qui risque d’être trop juste. Ceci s’explique par le fait que la différence de temps entre le

dernier bit d’une trame de souris et le dernier bit de la trame suivante est de 11,6 ms en théorie.

Cependant ce temps peut varier et peut donc entraîner des erreurs de transmissions.

Une autre alternative, en gardant le module à notre disposition, serait de transmettre à

tour de rôle les données de la souris puis celles du clavier. L’inconvénient d’une telle méthode

est la prise en compte d’un nombre moindre de trames par secondes. Ainsi les temps de

traitement des informations des deux périphériques seraient augmentés. Ceci se ressentirait

essentiellement au niveau du déplacement du curseur de la souris.

Page 32: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 32 -

TABLE DES FIGURES

FIGURE 0 : CHAINE DE TRANSMISSION A REALISER………………………………………. P 4

FIGURE 1 : XILINX SPARTAN 3 VUE DE DESSUS…………………………………………… P 6

FIGURE 2 : XILINX SPARTAN 3 VUE DE DESSOUS…….......................................................... P 6

FIGURE 3 : CARTE XILINX SPARTAN 3 UTILISEE………………………………………….. P 7

FIGURE 4 : ETAPE 1 POUR CREER UN PROJET……………………………………………… P 8

FIGURE 5 : ETAPE 2 POUR CREER UN PROJET……………………………………………… P 9

FIGURE 6 : ETAPE 3 POUR CREER UN PROJET…………………………………………….... P 9

FIGURE 7 : ETAPE 4 POUR CREER UN PROJET ……………………………………………… P10

FIGURE 8 : ETAPE 5 POUR CREER UN PROJET………………………………………………. P10

FIGURE 9 : ETAPE 6 POUR CREER UN PROJET ……………………………………………… P11

FIGURE 10 : ETAPE 7 POUR CREER UN PROJET …………………………………………….. P11

FIGURE 11 : ETAPE 8 POUR CREER UN PROJET …………………………………………….. P12

FIGURE 12 : ETAPE 9 POUR CREER UN PROJET……………………………………………... P12

FIGURE 13 : ETAPE 10 POUR CREER UN PROJET …………………………………………… P13

FIGURE 14 : ETAPE 11 POUR CREER UN PROJET …………………………………………… P13

FIGURE 15 : IMPLANTATION DU PROGRAMME SUR LA CARTE…………………………….. P14

FIGURE 16 : CONNECTEUR MALE PS/2…………………………………………………….. P15

FIGURE 17 : EXEMPLE D’OCTET…………………………………………………………… P16

FIGURE 18 : PRINCIPE D’UNE SOURIS MECANIQUE………………………………………... P17

FIGURE 19 : COMMANDES D’UNE SOURIS PS/2……………………………………………. P18

FIGURE 20 : MESSAGES D’UNE SOURIS PS/2……………………………………………….P19

FIGURE 21 : AXES DE LA SOURIS…………………………………………………………... P19

FIGURE 22 : COMPOSITION DES TRAMES ENVOYEES PAR LA SOURIS……………………….. P20

FIGURE 23: STRUCTURE D’UN CLAVIER …………………………………………………... P21

FIGURE 24 : TABLE DES CARACTERES ASCII DE BASE ……………………………………... P22

FIGURE 25: TABLE DES CARACTERES ASCII ETENDUE……………………………………... P23

FIGURE 26: MONTAGE DU MODULE EMETTEUR……………………………………............ P24

FIGURE 27: MONTAGE DU MODULE RECEPTEUR…………………………………………... P24

FIGURE 28: SCHEMATIQUE D’ENSEMBLE COTE EMISSION…..……………………………... P26

FIGURE 29: ORGANISATION DU SEQUENCEUR D’EMISSION....……………………………... P27

FIGURE 30: SCHEMATIQUE D’ENSEMBLE COTE RECEPTION...……………………………... P28

FIGURE 31: ORGANISATION DU SEQUENCEUR DE RECEPTION……………………………... P29

FIGURE 32 : COMPOSITION DU REGISTRE…………………………………………………...P31

Page 33: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 33 -

REFERENCES BIBLIOGRAPHIQUES

Spartan-3 Starter Kit Board User Guide, Xilinx, ref. UG130 (v1.0), Avril 2004

Site officiel de Xilinx, http://www.xilinx.com

Page de M Weiss sur les ports PS/2 de souris, Docteur de l'Université de Rennes I,

http://www.rennes.supelec.fr/ren/fi/elec/docs/mouse_ps2/souris_ps2.htm

Cours de M Anceau, http://lmi17.cnam.fr/~anceau/Documents/clavier.pdf

http://www.farnell.com/datasheets/260.pdf

http://www.farnell.com/datasheets/258.pdf

Page 34: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 34 -

Page 35: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 35 -

Page 36: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 36 -

Page 37: Programmation en VHDL sur circuit FPGA d’un clavier … · Le projet qu’il nous a été proposé de réaliser au cours de cette deuxième année à l’ENSIL a pour but la réalisation

LAHRICHI Karim DARTIAILH Karine

___________________________________________________________________________

Programmation en VHDL sur circuit FPGA d’un clavier et d’une souris sans fils

- 37 -