Jlassi Khaled
2008
Ce
module
Microprocesseurs
et
Microcontrleurs
sintresse
aux
systmes
microprogramms base de microprocesseurs et/ou de microcontrleurs. Les sujets choisis, le niveau auquel ils sont abords, ont t slectionns de manire concider avec les cours enseigns au niveau de certaines filires d'ingnieurs (Gnie lectrique, Tlcommunication, Informatique et certaines matrises technique). Concevoir une interface matrielle, pour un microprocesseur ou une application spcialise, et arriver un rsultat raisonnablement optimis, ncessite des
connaissances assez vastes, et il faut sans cesse les complter. La matrise des mthodes traditionnelles des systmes logiques est insuffisante pour la conception d'un systme base de microprocesseur ou microcontrleur. La pratique de plusieurs ralisations est ncessaire pour acqurir une connaissance relle. Toutefois ce cours a pour ambition de montrer de jeunes tudiants et des ingnieurs dsireux de se mettre jour et recycler leurs connaissances sur un sujet en perptuelle volution les facettes principales de la conception de systmes microprocesseur. Les sujets abords ici sont similaires ceux qui sont le plus frquemment traits dans certains ouvrages de rfrences et certains sites Internet. Nous avons volontairement dcoup ce cours en cinq parties
indpendantes mais complmentaires. L'tudiant ou l'tudiante devrait avoir une connaissance de base en systmes logiques et informatique. Toutefois Dans la premire partie nous avons fait un rappel sur les systmes numriques. C'est un pr requis ncessaire pour le reste du cours Ce Guide d'tude a pour objectif de vous prparer suivre le cours. Il dfinit en quelque sorte un mode d'emploi, non seulement pour le matriel didactique du cours, mais aussi pour le cheminement que vous devez adopter et les diffrentes exigences auxquelles vous devez rpondre. Bonne lecture et bon cours!
Le but de ce module est de se familiariser avec les principes de base des circuits numriques. Plus spcifiquement ce cours a pour ambition de montrer, de jeunes tudiants et des ingnieurs dsireux de se mettre jour et recycler leurs connaissances sur un sujet en perptuelle volution, les facettes principales des systmes
microprogramms. Au terme de ce cours les tudiants seront en mesure : dexpliquer les diffrente reprsentations des donnes numrique et
alphanumriques. danalyser et pourquoi pas de concevoir des systmes minimales a base de microprocesseurs; quoique la pratique de plusieurs ralisations est ncessaire pour acqurir une connaissance relle de conception de systmes base de microprocesseurs. de proposer certaines solutions relatives des applications simples de commande et de contrle impliquant un microprocesseur ou un microcontrleur. de donner un avis professionnel sur les diffrentes familles de microcontrleurs et leurs champ dapplication. de dfinir des critres de choix dun microcontrleur pour une application donne. En effet il existe plusieurs famille de microcontrleurs dont les plus connues sont : Atmel AT91 , Atmel AVR , le C167 de Siemens/Infineon, Hitachi H8, Intel 8051,Motorola 68HC11, PIC de Microchip, ST6 de STMicroelectronics, ADuC d' Anal og Devices, PICBASIC de Comfile Technology . Il est bien vident que, dans le cadre de ce cours dont le nombre de pages doit forcment rester limit, il ne va pas tre possible de donner toutes les informations, matrielles et logicielles, relatives tous ces microcontrleurs. Le manuel technique de chacun d'entre eux comporte en effet plusieurs dizaines de pages, voir parfois une centaine. Nous allons nous intresser dans le cadre de ce cours la famille Intel C51. Aprs une brve prsentation de cette famille nous avons orient notre tude vers le microcontrleur 80C51. Cest un microcontrleur 8 bits avec un jeu d'instructions rduit (101 instructions). Ses instructions sont organises autour d'un
accumulateur et de registres (quatre banques de huit registres). L'unit centrale du 80C51 incorpore un processeur boolen qui accrot considrablement la vitesse de traitement des instructions de manipulation de bits. Nous avons consacre la dernire partie de ce cours la programmation des microcontrleurs et notamment la famille C51. Pour cela nous avons pris le cas du
microcontrleur 80C552 de PHILPS. Ce microcontrleur incorpore une liaison srie RS232S et un bus I2C (rseau local) et 8 entres analogiques. Lenvironnement de programmation que nous avons choisi pour illustrer nos exemples et lenvironnement Keil. Cet environnement extrmement puissant prsente une plateforme logicielle complte pour la programmation des microcontrleurs. Lenvironnement Keil intgre un dbogueur avec Vision. Il peut tre utilis en mode simulateur ou moniteur temps rel charg sur cible. Le dialogue se faisant travers une liaison srie ou USB suivant les architectures. Le dboguage est facilit grce une intgration complte des microcontrleurs, on a ainsi une visibilit sur ltat de tous les priphriques internes en mode simulation. Keil fournit tous les fichiers de dmarrage (Startup, header..) pour chacune des architectures ainsi que de nombreux projets dexemples utilisant le CAN, lI2C, lEthernet et les priphriques internes. Le moniteur temps rel est pr-configur pour la plupart des cartes dvaluation du march. Grce son Editeur de liens tendue (LX51), Keil supporte aujourdhui tous les drivs 8051 ayant un adressage suprieur 64K. Un RTOS est aussi fourni en version allge et peut tre complt optionnellement (RTX 51, RTX 166 ou ARTX sur ARM, suivant l'architecture). Il supporte les dernires architectures XC166 d'Infineon et Super 10 de ST Microelectronics, incluant leurs fonctionnalits DSP.
I. Prsentation du binaire. Vers la fin des annes 30, Claude Shannon dmontra qu' l'aide de "contacteurs" (interrupteurs) ferms pour "vrai" et ouverts pour "faux" il tait possible d'effectuer des oprations logiques en associant le nombre " 1 " pour "vrai" et "0" pour "faux". Ce codage de l'information est nomm base binaire. Cest avec ce codage que fonctionnent les ordinateurs. Il consiste utiliser deux tats (reprsents par les chiffres 0 et 1) pour coder les informations. L'homme travaille quant lui avec 10 chiffres (0,1,2,3,4,5,6,7,8,9), on parle alors de base dcimale. I.1 Le bit. Bit signifie "binary digit", c'est--dire 0 ou 1 en numrotation binaire. C'est la plus petite unit d'information manipulable par une machine numrique. Il est possible de reprsenter physiquement cette information binaire : - par un signal lectrique ou magntique, qui, lorsqu'elle atteint une certaine valeur, correspond la valeur 1. - grce des bistables, c'est--dire des composants lectroniques qui ont deux tats d'quilibre (un correspond l'tat 1, l'autre 0) Avec un bit il est ainsi possible d'obtenir deux tats: soit 1, soit 0. 2 bits rendent possible l'obtention de quatre tats diffrents (2*2): 2 bits 00 01 10 11 Avec 3 bits il est possible d'obtenir huit tats diffrents (2*2*2): 000 001 010 011 100 101 110 111 Pour un groupe de n bits, il est possible de reprsenter 2n valeurs.
2 Jlassi Khaled
I.2 L'octet. L'octet est une unit d'information compose de 8 bits. Il permet de stocker un caractre, telle qu'une lettre, un chiffre ... Ce regroupement de nombres par srie de 8 permet une lisibilit plus grande, au mme titre que l'on apprcie, en base dcimale, de regrouper les nombres par trois pour pouvoir distinguer les milliers. Par exemple le nombre 1 256 245 est plus lisible que 1256245. Une unit d'information compose de 16 bits est gnralement appele mot (en anglais word). Une unit d'information de 32 bits de longueur est appele double mot (en anglais double word, d'o l'appellation dword). Pour un octet, le plus petit nombre est 0 (reprsent par huit zros 00000000), le plus grand est 255 (reprsent par huit chiffre "un" 11111111), ce qui reprsente 256 possibilits de valeurs diffrentes. 27 =128 26 =64 25 =32 24 =16 23 =8 22 =4 21 =2 0 1 0 1 0 1 0 1 0 1 0 1 0 1 20 =1 0 1
KiloOctets, MgaOctets Longtemps l'informatique s'est singularise par l'utilisation des units du systme international avec des valeurs diffrentes. Ainsi beaucoup d'informaticiens ont appris que 1kilo-ocet=1024 octets. Hors depuis dcembre 1998, l'organisme international IEC a statu (http://physics.nist.gov./cuu/Units/binary.html). L'informatique utilise donc: Un kilo-octet (Ko) = 1000 octets Un mga-octet (Mo) = 1000 Ko = 1 000 000 octets Un giga-octet (Go) = 1000 Mo = 1 000 000 000 octets Un tera-octet (To) = 1000 Go = 1 000 000 000 000 octets Comme tout le monde serais-je tent de dire, mais galement le kilo binaire (kibi), le mga binaire (mbi), le giga binaire (gibi), le tera binaire (tebi) dfinis comme ceci: Un kibi-octet (Kio) vaut 210 = 1024 octets Un mbi-octet (Meo)vaut 220 =1 048 576 octets Un gibi-octet (Gio) vaut 230 =1 073 741 824 octets Un tebi-octet (Tio) vaut 240 =1 099 511 627 776 octets Il est galement utile de noter que la communaut internationale dans son ensemble utilise le byte de prfrence l'octet purement francophone. II. Les oprations en binaire. Les oprations arithmtiques simples telles que l'addition, la soustraction et la multiplication sont faciles effectuer en binaire.
Jlassi Khaled
II.1 L'addition en binaire. L'addition en binaire se fait avec les mmes rgles qu'en dcimale:
On commence additionner les bits de poids faibles (les bits de droite) puis on a des retenues lorsque la somme de deux bits de mmes poids dpasse la valeur de l'unit la plus grande (dans le cas du binaire: 1), cette retenue est reporte sur le bit de poids plus fort suivant... Par exemple: 01101 +01110 - - - - - 11011 II.2 La multiplication en binaire. La table de multiplication en binaire est trs simple:
La multiplication se fait en formant un produit partiel pour chaque digit du multiplieur (seul les bits non nuls donneront un rsultat non nul). Lorsque le bit du multiplieur est nul, le produit par l est nul, lorsqu'il vaut un, le produit partiel est constitu du multiplicande dcal du nombre de positions gal au poids du bit du multiplieur. Par exemple: 0 1 0 1 multiplicande x 0 0 1 0 multiplieur 0000 0101 0000 - - - - - 01010 III. La base hexadcimale. Les nombres binaires tant de plus en plus longs, il a fallu introduire une nouvelle base: la base hexadcimale. La base hexadcimale consiste compter sur une base 16, c'est pourquoi - - - - - -
Jlassi Khaled
au-del des 10 premiers chiffres on a dcid d'ajouter les 6 premires lettres : 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. Base 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 dcimale Base 0 1 2 3 4 5 6 7 8 9 A B C D E F hexa Base 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 binaire Un exemple : Le nombre 27 (en base 10) vaut en base 16 : 16+11=1*161 + 11*160= 1*161 + B*160 c'est--dire 1B en base 16. Le nombre FB3 (en base 16) vaut en base 10 : F*162 + B*161 + 3*160=3840+176+3=4019. Pour convertir un octet en hexadcimale, on le partage en 2 groupes de 4 bits, qui correspondent chacun un chiffre hexadcimal. 2 A D 5
On appelle reprsentation (ou codification) d'un nombre la faon selon laquelle il est dcrit sous forme binaire. La reprsentation des nombres sur un ordinateur est indispensable pour que celui-ci puisse les stocker et les manipuler. Toutefois le problme est qu'un nombre mathmatique peut tre infini (aussi grand que l'on veut), mais la reprsentation d'un nombre dans un ordinateur doit tre fait sur un nombre de bits prdfini. Il s'agit donc de prdfinir un nombre de bits et la manire de les utiliser pour que ceux-ci servent le plus efficacement possible reprsenter l'entit. IV.1 Reprsentation d'un entier naturel. Un entier naturel est un entier positif ou nul. Le choix faire (c'est--dire le nombre de bits utiliser) dpend de la fourchette des nombres que l'on dsire utiliser. Pour coder des nombres entiers naturels compris entre 0 et 255, il nous suffira de 8 bits (un octet) car 28=256. D'une manire gnrale un codage sur n bits pourra permettre de reprsenter des nombres entiers naturels compris entre 0 et 2n-1. Pour reprsenter un nombre entier naturel, aprs avoir dfini le nombre de bits sur lequel on le code, il suffit de ranger chaque bit dans la cellule binaire correspondant son poids binaire de la droite vers la gauche, puis on "remplit" les bits non utiliss par des zros.
5 Jlassi Khaled
IV.2 Reprsentation d'un entier sign. Un entier sign est un entier pouvant tre ngatif. Il faut donc coder le nombre de telle faon que l'on puisse savoir s'il s'agit d'un nombre positif ou d'un nombre ngatif, et il faut de plus que les rgles d'addition soient conserves. L'astuce consiste utiliser un codage que l'on appelle complment deux.
- un entier relatif positif ou nul sera reprsent en binaire (base 2) comme un entier naturel, la seule diffrence que le bit de poids fort (le bit situ l'extrme gauche) reprsente le signe. Il faut donc s'assurer pour un entier positif ou nul qu'il est zro (0 correspond un signe positif, 1 un signe ngatif). Ainsi si on code un entier naturel sur 4 bits, le nombre le plus grand sera 0111 (c'est--dire 7 en base dcimale). D'une manire gnrale le plus grand entier relatif positif cod sur n bits sera 2n-1-1. -un entier relatif ngatif grce au codage en complment deux. Soit reprsenter un nombre ngatif. - Prenons son oppos (son quivalent en positif) - On le reprsente en base 2 sur n-1 bits - On complmente chaque bit (on inverse, c'est--dire que l'on remplace les zros par des 1 et vice-versa) - On ajoute 1 On remarquera qu'en ajoutant le nombre et son complment deux on obtient 0. Voyons maintenant cela sur un exemple: On dsire coder la valeur -5 sur 8 bits. Il suffit : - d'crire 5 en binaire: 00000101 - de complmenter 1: 11111010 - d'ajouter 1: 11111011 - la reprsentation binaire de -5 sur 8 bits est 11111011 Remarques: Le bit de poids fort est 1, on a donc bien un nombre ngatif. Si on ajoute 5 et -5 (00000101 et 11111011) on obtient 0 (avec une retenue de 1...) 6 Jlassi Khaled
IV.3 Reprsentation d'un nombre rel. Il s'agit d'aller reprsenter un nombre binaire virgule (par exemple 101,01 qui ne se lit pas cent un virgule zro un puisque c'est un nombre binaire mais 5,25 en dcimale) sous la forme 1,XXXXX... * 2n (c'est--dire dans notre exemple 1,0101*22). La norme IEEE dfinit la faon de coder un nombre rel. Cette norme se propose de coder le nombre sur 32 bits et dfinit trois composantes:
- le signe est reprsent par un seul bit, le bit de poids fort (celui le plus gauche) ; - l'exposant est cod sur les 8 bits conscutifs au signe ; - la mantisse (les bits situs aprs la virgule) sur les 23 bits restants ; Ainsi le codage se fait sous la forme suivante: seeeeeeeemmmmmmmmmmmmmmmmmmmmmmm - le s reprsente le bit relatif au signe - les e reprsentent les bits relatifs l'exposant - les m reprsentent les bits relatifs la mantisse
Jlassi Khaled
I. Mise en situation.
Un systme numrique, intgrant de llectronique, fait souvent apparatre des fonctions ayant pour rle le traitement dinformations : oprations arithmtiques (addition, multiplication...) ou logiques (ET, OU...) entre plusieurs signaux dentre permettant de gnrer des signaux de sortie. Ces fonctions peuvent tre ralises par des circuits intgrs analogiques ou logiques. Mais, lorsque le systme devient complexe, et quil est alors ncessaire de raliser un ensemble important de traitements dinformations, il devient plus simple de faire appel une structure base de microcontrleur ou microprocesseur. Le dveloppement de ces composants programmables a t rendu possible grce lessor considrable qua connu la microlectronique et notamment les techniques dintgration. Cette volution a permis en 1971, la fabrication du premier microprocesseur par la socit INTEL. Ce microprocesseur, le 4004 , comportait dj 2300 transistors et fonctionnait avec un bus de donnes de 4 bits. Depuis, lintgration du nombre de transistors dans les microprocesseurs na cess dvoluer, paralllement la puissance de calcul et la rapidit dexcution. Aujourdhui, un microprocesseur Pentium IV comporte a peu prs 24 millions de transistors et peut traiter des donnes de 8, 16, 32, 64 bits en mme temps. La puissance des microprocesseurs
daujourdhui a oriente leur utilisations vers le traitement des informations de masse (Gestion dune base de donne, Gestion des priphriques bloc, ), le calcul scientifique ainsi que tout ce qui est interface homme machine ractif (clavier, souris, cran, ). Comme nous pouvons le constater, le domaine dapplication des microprocesseurs reste vaste. Cest pourquoi nous les classons dans la catgorie des composants programmables gnralistes, cela signifie qu'ils peuvent tout faire, mais ils ne sont optimiss pour rien. La majorit des microprocesseurs ont une architecture CISC (Complex Instruction Set Computer, ce qui signifie "ordinateur avec jeu d'instructions complexes". Cest le cas des processeurs de type x86, c'est--dire les processeurs fabriqus par Intel, AMD, Cyrix, ... Les processeurs bass sur l'architecture CISC peuvent traiter des instructions complexes, qui sont directement cbles sur leurs circuits lectroniques, c'est--dire que certaines instructions difficiles crer partir des instructions de base sont directement imprimes sur le silicium de la puce afin de gagner en rapidit d'excution. L'inconvnient de ce type d'architecture provient justement du fait que des fonctions supplmentaires sont imprimes sur le silicium, d'o un cot lev. D'autre part, les instructions sont de longueurs variables et peuvent parfois prendre plus d'un cycle d'horloge ce qui les rend lentes l'excution. Nanmoins, avec la considrable augmentation de la taille des puces lectroniques et la gigantesque acclration des frquences d'horloge, la
2 Jlassi Khaled
puissance de calcul dun microprocesseur CISC daujourdhui est considrable. Son caractre gnraliste lui permet dtre par excellence le composant de base de linformatique. Mais en instrumentation et automatisme on lui prfrera gnralement des composants plus
spcialiss ne ncessitant pas, ni un calcul complexe ni un traitement dinformations de masse. Cest pourquoi dans les applications industrielles, que ce soit dautomatisme ou dinstrumentation, le microcontrleur est le composant programmable le plus utilis. Il
comporte sur sa puce un certain nombre d'interfaces qui n'existent pas sur un microprocesseur, par contre il est gnralement moins puissant en terme de rapidit ou de taille de mmoire adressable et le plus souvent cantonn aux donnes de 8 ou 16 bits. Les microcontrleurs utilisent la technologie RISC (Reduced Instruction Set Computer), dont la traduction est "ordinateur jeu d'instructions rduit" et n'a pas de fonctions supplmentaires cbles. Ce qui qui implique une programmation plus difficile et un compilateur plus puissant. Les instructions dun microcontrleur sont tellement peu nombreuses (en moyenne une soixantaine) qu'il est possible de les graver directement sur le silicium sans alourdir de manire dramatique leur fabrication. L'avantage d'une telle architecture est bien videmment le cot rduit au niveau de la fabrication des processeurs l'utilisant. De plus, les instructions, tant simples, ils sont excuts en un cycle d'horloge, ce qui rend l'excution des programmes plus rapides qu'avec des processeurs bass sur une architecture CISC. En plus, de tels processeurs sont capables de traiter plusieurs instructions simultanment en les traitant en parallle. Les microcontrleurs ont permis de faire voluer les systmes micro programms vers encore plus de simplicit et de rapidit. Ils sont aujourdhui utiliss dans la plupart des ralisations industrielles grand public ou professionnelles, ils grent au plus juste et au plus vite les applications. Leur volution a permis l'intgration de circuits complexes varis. Ces circuits ont t intgrs sur une mme puce donnant ainsi beaucoup de flexibilit et de puissance de commande au microcontrleur. Cette polyvalence lui permet d'occuper une place importante que ce soit en instrumentation, en commande ou en automatisme industriel. Le meilleur exemple est bien videmment les automates programmables qui sont tous quips de microcontrleurs.
II. Description et structure interne dun microcontrleur. Un microcontrleur est un composant runissant sur un seul et mme silicium un micro-processeur, divers dispositifs d'entres/sorties et de contrle d'interruptions ainsi que de la mmoire, notamment pour stocker le programme dapplication. Ddi au contrle, il embarque galement un certain nombre de priphriques spcifiques 3 Jlassi Khaled
des domaines cibls (bus srie, interface parallle, convertisseur analogique numrique, ...). Les microcontrleurs amliorent l'intgration et le cot (li la conception et la ralisation) d'un systme base de microprocesseur en rassemblant ces lments essentiels dans un seul circuit intgr. On parle alors de "systme sur une puce" (en anglais : "System On chip"). Il existe plusieurs familles de microcontrleurs, se diffrenciant par la vitesse de leur processeur et par le nombre de priphriques qui les composent. Toutes ces familles ont un point commun cest de runir tous les lments essentiels dune structure base de microprocesseur sur une mme puce. Voici gnralement ce que lon trouve lintrieur dun tel composant :