Option Informatique Industrielle Baudot Romaric Joulié Gabriel Rampal Vincent ESSI - 19 Avril 2002 INTRODUCTION ................................................................................................................................................. 3 PRESENTATION DU LECTEUR DE CARTE ................................................................................................. 3 CONSIDERATIONS MATERIELLES ......................................................................................................................... 3 CODAGE DES DONNEES SUR UNE CARTE .............................................................................................................. 3 REALISATION DU COMPOSANT PRINCIPAL ............................................................................................ 4 INTRODUCTION ................................................................................................................................................... 4 SCHEMA DE PRINCIPE .......................................................................................................................................... 5 LES DIFFERENTS MODULES .................................................................................................................................. 5 SCHEMA LOGIQUE ............................................................................................................................................... 5 CABLAGE COTE COMPOSANT............................................................................................................................... 7 COTE 68020......................................................................................................................................................... 8 PARTIE LOGICIEL ............................................................................................................................................ 9 INTRODUCTION ................................................................................................................................................... 9 LISTING DU PROGRAMME .................................................................................................................................... 9 CONCLUSION ..................................................................................................................................................... 9 2 Introduction Pour aborder les problèmes d’informatique industrielle, il nous à été demandé de réaliser un composant ayant pour but le décodage d’informations contenues sur une carte magnétique. Le principe est de créer une carte sur laquelle est greffé un lecteur de carte magnétique, une puce programmable servant de décodeur de données ainsi que de module de communication avec un processeur 68020. De plus, il est nécessaire de développer le programme s’exécutant sur le processeur 68020 et permettant d’afficher les données lues sur la carte magnétique. Lors d’une année précédente, un étudiant de l’ESSI a développé une carte mère supportant un microprocesseur 68020. Il nous a été demandé de développer notre carte de décodage pour qu’elle soit compatible avec la carte mère ESSI et ainsi pouvoir travailler avec du matériel fait maison. Présentation du lecteur de carte Considérations matérielles Boîtier externe relié par 5 fils : présence carte (fil jaune) actif à l’état haut données en logique inverse (fil vert) horloge (fil bleu), n’est valide qu’après que les données soient passées à 0 alimentation (fil rouge) +5V masse (fil noir) Codage des données sur une carte Sur la carte, les données sont codées sur plusieurs pistes qui comportent chacune une information différente. Nous ne nous intéresserons qu’à deux d’entre elles, à savoir l’horloge, une suite de 0 et 1 visant à rythmer le passage de la carte pour en permettre le décodage, et une piste de données comprenant notamment un nom et un numéro. Lors du passage d’une carte, on reçoit les bits en série avec d’abord le bit de poids le plus fort et le bit de parité en dernier. Les données sont codées suivant un dérivé de l’ASCI. Il faut faire attention car les données sont codées en logique inverse sur la carte magnétique, ainsi l’information reçue est le complémentaire de l’information affichée. De plus l’ASCI est sur 7 bits (0x00 - 0x7F) mais on utilisa uniquement des lettres minuscules et des nombres (pas de caractères spéciaux, ni majuscules…). Ces caractères sont codés au format 11X XXXX pour les lettres car elles vont de 0x61 à 0x7A, et au format 011 XXXX pour les chiffres qui vont de 0x30 à 0x39. Ainsi, on fera l’économie du codage et donc de la transmission du 6ème bit, puisqu’il est toujours à 1. Le 7ème bit correspond à la parité des 6 précédents, il sera transmit, mais ne sera pas traité dans cette application. On se contentera de reformer l’octet et de le transmettre à la carte mère. Cet octet aura tout de même une différence par rapport à de l’ASCI : le bit de poids fort codera la présence de la carte. 3 Présence Carte Horloge Data Données lues 1 0 0 1 0 1 0 Réalisation du composant principal Introduction La fonction de ce composant et de décoder les informations en provenance du lecteur de carte magnétique et de les transmettre au processeur 68020 via le bus de données, quand celui-ci l’interroge. Ce composant sera donc placé entre le lecteur de carte et le processeur 68020. Ce composant devra donc traiter les signaux en provenances du lecteur de carte, mais aussi ceux du bus d’adresse, permettant de sélectionner, ainsi que ceux du bus de données. Le composant doit aussi gérer les signaux de contrôles ASTROBE, indiquant que l’adresse présente sur le bus d’adresse est correcte, DSAC0, indiquant que 8 bits de données sont présentes sur le bus de données et TZL indiquant que les données présentent sur le bus de données sont correctes. En regardant les spécifications de la carte mère faite à l’ESSI, on s’aperçoit, que la plage d’adresse allouée pour la carte est comprise entre $00800000 et $00FFFFFF. Comme une seule carte va être connectée, nous avons décidé de simplifier le décodeur d’adresse. Ainsi la carte sera sélectionnée si les 8 bits de poids forts sont à 0 et le bit numéro 23 à 1 sur le bus d’adresse. Pour créer ce composant, nous allons utiliser un FPGA, que nous allons programmer. L’ESSI nous à donc mis à disposition un composant Altera et son interface de programmation MAX+PLUS II. 4 Schéma de principe Lecteur de cartes Compteur modulo 7 8 Comparateur à7 8 Registre à décalages Bus de donnée Validation DSAC0 TZL Décodeur d’adresse Bus d’adresse ASTROBE Les différents modules Le registre à décalage, sert à construire l’octet pour le µP. Le bit de parité sera stocké mais jamais transmit. Le compteur modulo 7 permet de savoir combien de bits ont été lus. Les deux modules précédents utilisent le signal d’horloge du lecteur de carte. Il est nécessaire d’inhiber ce signal tant que data n’est pas passé une fois à zéro. Le comparateur a sept envoie un signal quand la lecture d’un octet est terminée. Le décodeur d’adresse envoie un signal type Chip Select pour dire quand le composant est adressé. La partie validation met les signaux DSAC0 et TZL à 0 si : Soit le composant est sélectionné et la carte n’est pas présente. Soit le composant est sélectionné et 7 bits ont été lus sur la carte magnétique et qu’ils n’ont pas encore été transmis sur le bus de données. Schéma logique [ Voir page suivante ] 5 [ Page pas à rendre ] 6 Réalisation de la carte Câblage coté composant A23 A24 A25 GND A26 A27 A28 A29 VCC A30 A31 R E A S S J E T V a B R R e u l V G G G G G V O r n e C N N N N N E B t e u C D D D D D D E -----------------------------------_ / 6 5 4 3 2 1 44 43 42 41 40 | | 7 39 | | 8 38 | | 9 37 | | 10 36 | | 11 35 | | 12 EPM7032LC44-12 34 | | 13 33 | | 14 32 | | 15 31 | | 16 30 | | 17 29 | |_ 18 19 20 21 22 23 24 25 26 27 28 _| -----------------------------------R R R R G V R R R R D E E E E N C E E E E S S S S S D C S S S S A E E E E E E E E C R R R R R R R R 0 V V V V V V V V E E E E E E E E D D D D D D D D D0 D1 D2 D3 VCC D4 D5 D6 D7 GND TZL 7 coté 68020 Nom Jaune Vert Bleu A23 A24 A25 A26 A27 A28 A29 A30 A31 ASTROBE D24 D25 D26 D27 D28 D29 D30 D31 TZL DSAC0 Broche composant 5 6 4 7 8 9 11 12 13 14 16 17 40 31 32 33 34 36 37 38 39 28 29 Broche DIN96 N/A N/A N/A 41 40 39 38 37 36 35 34 33 84 8 7 6 5 4 3 2 1 71 94 8 Partie logiciel Introduction Très court, le logiciel se contente de lire à l’adresse de la carte et envoie le caractère sur le port série grâce à l’interruption 2. Listing du programme org $110600 init lea boucle1 move.b bmi carte,a0 (a0),d0 boucle1 boucle2 trap move.b bpl #2 (a0),d0 boucle2 move.w trap trap #$0D,d0 #2 #0 org carte $00800000 Conclusion Cette réalisation nous a donc fait une première expérience concluante d’intégration de système informatique industrielle, avec une partie de logiciel embarqué. Nous avons finalement créé un module d’acquisition de carte magnétique pour notre architecture « maison », à savoir la carte mère à base de 68020. Ceci nous a permis de valider nos connaissances ainsi que la pérennité de nos recherches à travers les générations d’étudiants, car nous reprenons avec succès un projet de 1993. Nous avons aussi observé la compatibilité de notre système avec le standard des cartes bancaires, puisque nous avons lu et affiché les informations contenues sur la première piste, à savoir le nom, prénom, numéro de compte, date de péremption, et une série de nombres correspondant probablement à une clé bancaire. Grâce à ce projet nous avons pu découvrir que la résolution d’un problème ne passe pas exclusivement par la production de software mais aussi par la réalisation de solution hardware traitant de manière autonome les informations. 9