Architecture des microcontrôleurs Chapitre 1: Introduction ABDALLAH Mohamed mohamed.abdallah@isetso.rnu.tn JEDIDI Hassen Hassen.jedidi@esprit.ens.tn © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Objectifs Comprendre l’architecture des microcontrôleurs. Le but de ce module est de : Comprendre l’architecture des microcontrôleurs. Développer des programmes en Assembleur et en langage C et les tester sur des simulateurs et des maquettes. Réaliser un mini projet a base d’un microcontrôleur de la famille Microchip. © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Programme du module Introduction Architecture et fonctionnement des PIC 16F84 Le jeu d’instructions Les modes d’adressage Les interruptions Le TIMER Le WATCHDOG © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Le Mini-Projet Le mini-projet se déroule pendant la deuxième période. Le mini-projet est réalisé par binôme. Un sujet ne peut être pris par plus d’un binôme. Le projet doit être réalisé sur les PIC 16F877. Une soutenance est prévue durant la dernière semaine du semestre pour présenter le mini-projet. © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Histoire des calculateurs © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Histoire des Sciences : quelques points de repères 1800 : pile de Volta 1826 : loi d’ohm 1831 : premier relais électrique 1837 : télégraphe de Morse 1847 : lois de kirchhoff 1866 : dynamo 1876 : téléphone (Bell) 1904 : la diode, premier tube à vide 1907 : la triode à vide (Lee de Forest) 1909 : premier central téléphonique automatique 1914 : premier circuits électroniques 1946 : ENIAC (Electronic Numeral Integrator and Calculator) : premier calculateur électronique (17468 tubes électroniques , 1500 relais, 30 tonnes, 15O KW, 5000 additions par seconde). 1947 : transistor à pointes germanium (brattain, bardeen, shockley) Nobel 1958 1954 : transistor silicium (G. Teal, TI) © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Histoire des Sciences : quelques points de repères(2) 1959 : circuit intégré (J. Kilby Nobel 2000 en parallèle avec Noyce) assemblage sur un même substrat de résistances, condensateurs et transistors interconnectés. 1959 : transistor à effet de champ (FET) : transistor MOS 1970 : mémoire DRAM 1024 bits Intel 1971 : microprocesseur 4004, Intel 1980 : microcontrôleur 8 bits ASIC Microélectronique CMOS 1990 : microcontrôleur 32 bits 2000 « convergence » des S T I C: Sciences de l ’information et de la communication S O C IP (composant virtuel matériel/logiciel) < 2010 : 1 processeur CMOS = 1 milliard de transistors sur une puce …nouveaux types de mémoires © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Une évolution Taille Nombre Mais pas seulement ….. © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Loi de Moore En 1965, Gordon Moore, un des fondateurs de la société Intel remarqua que le nombre de transistors dans un circuit intégré doublait tous les 18 à 24 mois. Cette observation est devenue une loi, dite loi de Moore et n’a pas été démentie jusqu’à présent. Pour les microprocesseurs, grâce à d’autres améliorations telles que l’addition de nouveaux circuits, l’amélioration en vitesse a été de quatre à cinq tous les trois ans. © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Loi de MOORE Année 1971 2001 Transistors 2300 42 000 000 Fréq (Khz) 108 2 000 000 Tech (µm) 10,0 0,13 Intel 4004 Intel Pentium 4 © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
© ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Autres barrières historiques © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Des nouvelles IHM © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Des nouveaux objets et dispositifs communicants Tag RFID Capteurs Robots © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Des nouveaux objets et dispositifs communicants (2) © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Vers la convergence totale Mobilité Multimédia Connectivité © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Microcontrôleur © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Contrôleur un contrôleur est un dispositif qui - placé au cœur d’un processus - surveille l’évolution d’un événement et compare son état (ou sa valeur) à une donnée prédéterminée, pour intervenir dès que les limites préfixées sont atteintes. Son travail consiste à surveiller (lire) la valeur d’une situation, et à la comparer en permanence à une valeur fixée d’avance. © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Microcontrôleur Les plus souples de tous les contrôleurs sont évidemment les contrôleurs faisant appel à l’électronique, et plus particulièrement les microcontrôleurs Selon un arrêté français du 14 septembre 1990 relatif à la terminologie des composants électroniques « Circuit intégré comprenant essentiellement un microprocesseur, ses mémoires, et des éléments personnalisés selon l'application » © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Microcontrôleur(2) © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Circuit intégré © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
© ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Architecture de Von Neumann Une mémoire pour le programme et les données. Double utilisation des BUS données et d’adresses. Employée dans la plupart des processeurs (Intel 80xx, Motorola HC05, …) © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Architecture de Harvard Mémoire programme et mémoire données séparée. Bus indépendant pour chaque mémoire. Utilisée dans les microcontrôleurs de Microchip © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
RISC/ CISC CISC RISC Avantages Jeu d’instructions riche Jeu d’instructions facile à mémoriser. Le code est compact, chaque instruction dure un cycle. Inconvénients Durée d’une instruction variable. Codage sur plusieurs octets Jeu d’instruction pauvre © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Schéma bloc d’un microcontrôleur © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Schéma bloc d’un microcontrôleur Mémoires Ports E/S Contrôle ALU Timer © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Classes des processeurs Microprocesseurs Architecture: CPU mono-chip, nécessite des circuits additionnels externes RISC: Reduced Instruction Set Computer CISC: Complex Instruction Set Computer Exemples: Pentium-Series, PowerPC, MIPS,… © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Classes des processeurs Microcontrôleurs Architecture: CPU, RAM, ROM, interfaces Serie/Parallèle, timer, circuits d’interruptions. Applications: contrôle / commande de processus. Caractéristiques: pas d’exigence de vitesse, jeu d’instructions compact. Exemples: 8051, 68HC11, PIC,… © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Classes des processeurs Processeurs numériques des signaux (DSP) Architecture: CPU optimisée pour le traitement mathématique temps réel rapide et répétitif RAM, ROM, interfaces série / parallèle, timer, circuits d’interruptions Exemples: ADSP-21xx, AD-BF-5xx, AD-TS-xxx, TMS320Cxx,… © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Exemples de microcontrôleurs Référence Fabricant Vitesse RAM (O) ROM / EPROM / FLASH (Ko) EEPROM(Ko) E / S Logiques Timer Entrées Analogiques Particularité 8051 Intel 12 Mhz 128 4 Ko X 32 2 16C71 Microchip 20 Mhz 36 1Kx14 13 1 4 RISC 6805 S2 Motorola 4 MHz 64 1 Ko 16 8 68HC11 A1 8 MHz 256 512 22 AT90S 8515 Atmel 20 MHz 3 ST 6265 Thomson 21 © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Domaines d’application Contrôle des processus industriels: régulation, pilotage. Appareil de mesure: affichage, calcul statistique, mémorisation. Automobile: ABS, injection, GPS, airbag Téléphones: fax, portable, modem) Electroménager : lave-vaisselle, lave-linge, four micro-onde) © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Représentation et traitement des données © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Codage et décodage d’informations © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Les différents types de caractères © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Code ASCII © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Unité de stockage © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Le système décimal On utilise dix symboles différents: { 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 } N’importe quelle combinaison des symboles { 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 } nous donne un nombre. Poids fort Poids faible 2 3 3 4 5 6 7 Partie fractionnelle Partie entière 345 , 567 © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Système binaire ( système à base 2 ) Dans le système binaire, pour exprimer n’importe quelle valeur on utilise uniquement 2 symboles : { 0 , 1} ( 1101)2 La base Un bit ( 1 1 0 1)2 Le bits du poids forts Le bits du poids faible . Un nombre dans la base 2 peut être écrit aussi sous la forme polynomial © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Comptage en binaire .Sur 2 bits : Sur un seul bit : 0 , 1 Décimal 1 2 3 4 5 6 7 000 001 010 011 100 101 110 111 .Sur 2 bits : Décimal Binaire 1 2 3 00 01 10 11 © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Le système octal ( base 8 ) 8 symboles sont utilisés dans ce système: { 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 } Exemple 1 : Exemple 2 : Le nombre (1289) n’existe pas dans la base 8 puisque les symboles 8 et 9 n’appartiennent pas à la base . © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Le système hexadécimal ( base 16 ) 1 2 3 4 5 6 7 8 9 A 10 B 11 C 12 D 13 E 14 F 15 On utilise seize (16) symboles différents: © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Résumé Dans une base X , on utilise X symboles distincts pour représenter les nombres. La valeur de chaque symbole doit être strictement inférieur à la base X. Chaque nombre dans une base X peut être écrit sous sa forme polynomiale . © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Conversion d’une base X à la base 10 Cette conversion est assez simple puisque il suffit de faire le développement en polynôme de ce nombre dans la base X , et de faire la somme par la suite. Exemple : © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Exercice Effectuer les transformations suivantes à la base 10 (123)6=(?)10 (1100,11)2 =(?)10 (2563)8 =(?)10 (1ABC)16 =(?)10 © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Conversion de la base 10 à la base 2 Le principe consiste à faire des divisions successives du nombre sur 2 , et prendre le reste des divisions dans l’ordre inverse. 35 2 17 1 8 4 Exemple 1 : (35)10=(?)2 Après division : on obtient : (35)10=(100011)2 © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Conversion de la base 10 à la base 2 : cas d’un nombre réel Un nombre réel est constitué de deux parties : la partie entière et la partie fractionnelle. La partie entière est transformée en effectuant des divisions successives. La partie fractionnelle est transformée en effectuant des multiplications successives par 2 . Exemple : 35,625=(?)2 P.E= 35 = (100011)2 PF= 0,625 = (?)2 0,625 * 2 = 1,25 0,25 * 2 = 0 ,5 0,5 * 2 = 1 ,0 (0,625)=(0,101)2 Donc 35,625=(100011,101)2 © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Exemple 2: (0,6)10=(?)2 0,6 * 2 = 1,2 0,2 * 2 = 0,4 0,4 * 2 = 0,8 0,8 * 2 = 1,6 (0,6)= (0,1001)2 Remarque : Le nombre de bits après la virgule va déterminer la précision . Exercice : Effectuer les transformations suivantes : (23,65)=(? )2 (18,190)=(?)2 © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Conversion du décimal à une base X La conversion se fait en prenant les restes des divisions successives sur la base X dans le sens inverse. Exemple : 35 = (?)3 35 3 11 2 1 35=(1022)3 Question : Effectuer les transformations suivantes : (43)10=(?)2=(?)5 =(?)8 =(?)16 © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
43 2 21 1 10 5 43 5 8 3 1 (133)5 (101011)2 43 16 2 11 8 5 3 (53)8 43 (2B)16 © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Conversion d’une base b1 à une base b2 Il n’existe pas de méthode pour passer d’une base b1 à une autre base b2 directement. L’idée est de convertir le nombre de la base b1 à la base 10 , en suit convertir le résultat de la base 10 à la base b2 . b1 b2 10 Développement en polynôme Divisions successives ? © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Exercice : effectuer les transformations suivantes (43)6=(?)5=(?)8 Exemple : ( 34)5=(?)7 19 7 2 5 (19)10=(25)7 ( 34)5=(25)7 Exercice : effectuer les transformations suivantes (43)6=(?)5=(?)8 (2A)16=(?)9 © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Conversion : binaire octal 000 001 010 011 100 101 110 111 1 2 3 4 5 6 7 . En octal chaque, symbole de la base s’écrit sur 3 bits en binaire. . L’idée de base est de replacer chaque symbole dans la base octal par sa valeur en binaire sur 3 bits ( faire des éclatement sur 3 bits ). Exemples : (345)8=(011 100 101)2 (65,76)8=(110 101, 111 110)2 (35,34)8=(011 101 , 011 100)2 Remarque : le remplacement se fait de droit à gauche pour la partie entière et de gauche à droite pour la partie fractionnelle . © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Conversion : Octal binaire . L’idée de base est de faire des regroupements de 3 bits à partir du poids faible. . Par la suite remplacer chaque regroupement par la valeur octal correspondante . Exemple : (11001010010110)2=(011 001 010 010 110)2=(31226)8 (110010100,10101)2= (110 010 100 , 101 010)2=(624,51)8 Remarque : le regroupement se fait de droit à gauche pour la partie entière et de gauche à droite pour la partie fractionnelle . © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Conversion : hexadécimal binaire 1 2 3 4 5 6 7 8 9 A 10 B 11 C 12 D 13 E 14 F 15 . En Hexa chaque symbole de la base s’écrit sur 4 bits. . L’idée de base est de replacer chaque symbole par sa valeur en binaire sur 4 bits ( faire des éclatement sur 4 bits ). Exemple : (345B)16=(0011 0100 0101 1011)2 (AB3,4F6)16 = ( 1010 1011 0011 , 0100 1111 0110 ) 2 © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Conversion : binaire hexadécimal . L’idée de base est de faire des regroupements de 4 bits à partir du poids faible. Par la suite remplacer chaque regroupement par la valeur Héxa correspondante . Exemple : (11001010100110)2=(0011 0010 1010 0110)2=(32A6)16 (110010100,10101)2= (0001 1001 0100,1010 1000)2=(194,A8)16 © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Opérations arithmétiques en binaire + 1 1 0 1 1 1 1 0 0 0 1 1 + 1 0 0 0 1 0 1 1 1 1 1 1 1 1 © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Opérations arithmétiques en octal 1 1 4 3 6 5 + 4 5 1 5 8 11 6 En octal 11 s’écrit 13 En octal 8 s’écrit 10 3 Le résultat final : (5036)8 © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Opérations arithmétiques en hexadécimal 1 4 8 6 5 + 7 A 5 1 12 18 11 6 C En hexa 11 s’écrit B En hexa 18 s’écrit 12 B 2 Le résultat final : (C2B6)16 © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Exercice Effectuer les opérations suivantes et transformer le résultat au décimal à chaque fois: (1101)2+(111)2=(?)2 (43)8+(34)8=(?)8 (AB1)16+(237)8=(?)16 © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Représentation des nombres entiers © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
1. Représentation des nombres entiers Il existe deux types d’entiers : les entiers non signés ( positifs ) et les entiers signés ( positifs ou négatifs ) Problème : Comment indiquer à la machine qu’un nombre est négatif ou positif ? Il existe 3 méthodes pour représenter les nombres négatifs : Signe/ valeur absolue Complément à 1( complément restreint ) Complément à 2 ( complément à vrai ) © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
1.1 Représentation signe / valeur absolue ( S/VA ) Si on travail sur n bits , alors le bit du poids fort est utilisé pour indiquer le signe : 1 : signe négatif 0 : signe positif Les autres bits ( n -1 ) désignent la valeur absolue du nombre. Exemple : Si on travail sur 4 bits. 1 001 0 001 Valeur absolue Valeur absolue Signe Signe 1001 est la représentation de - 1 0001 est la représentation de + 1 © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
-(2 (n -1) -1) ≤ N ≤ +(2 (n -1) -1 ) Sur 3 bits on obtient : valeur VA signe + 0 + 1 + 2 + 3 00 01 10 11 - 0 - 1 - 2 - 3 1 Les valeurs sont comprises entre -3 et +3 -3 ≤ N ≤ +3 - ( 4-1 ) ≤ N ≤ + (4 -1 ) -(22 -1) ≤ N ≤ +(22-1 ) -(2 (3 -1) -1) ≤ N ≤ +(2 (3 -1) -1 ) Si on travail sur n bits , l’intervalle des valeurs qu’on peut représenter en S/VA : -(2 (n -1) -1) ≤ N ≤ +(2 (n -1) -1 ) © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Avantages et inconvénients de la représentation signe/valeur absolue C’est une représentation assez simple . On remarque que le zéro possède deux représentations +0 et -0 ce qui conduit à des difficultés au niveau des opérations arithmétiques. Pour les opérations arithmétiques il nous faut deux circuits : l’un pour l’addition et le deuxième pour la soustraction . L’idéal est d’utiliser un seul circuit pour faire les deux opérations, puisque a- b =a + ( -b ) © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
1.2 Représentation en complément à un ( complément restreint ) On appel complément à un d’un nombre N un autre nombre N’ tel que : N+N’=2n-1 n : est le nombre de bits de la représentation du nombre N . Exemple : Soit N=1010 sur 4 bits donc son complément à un de N : N’= (24 - 1)-N N’=(16-1 )-(1010)2= (15 ) - (1010)2 = (1111)2 – (1010)2 = 0101 1 0 1 0 0 1 0 1 + 1 1 1 1 © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Remarque 1 : Pour trouver le complément à un d’un nombre, il suffit d’inverser tous les bits de ce nombre : si le bit est un 0 mettre à sa place un 1 et si c’est un 1 mettre à sa place un 0 . Exemple : Sur 4 Bits Sur 5 Bits 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Remarque 2 Dans cette représentation , le bit du poids fort nous indique le signe ( 0 : positif , 1 : négatif ). Le complément à un du complément à un d’un nombre est égale au nombre lui même . CA1(CA1(N))= N Exemple : Quelle est la valeur décimale représentée par la valeur 101010 en complément à 1 sur 6 bits ? Le bit poids fort indique qu'il s'agit d'un nombre négatif. Valeur = - CA1(101010) = - (010101)2= - ( 21)10 © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Valeur décimal Valeur en binaire Valeur en CA1 + 0 + 1 + 2 + 3 000 001 Si on travail sur 3 bits : Valeur décimal Valeur en binaire Valeur en CA1 + 0 + 1 + 2 + 3 000 001 010 011 - 3 - 2 - 1 - 0 - 011 - 010 - 001 - 000 100 101 110 111 Dans cette représentation , le bit du poids fort nous indique le signe . On remarque que dans cette représentation le zéro possède aussi une double représentation ( +0 et – 0 ) . © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
-(2 (n -1) -1) ≤ N ≤ +(2 (n -1) -1 ) -3 ≤ N ≤ +3 Sur 3 bits on remarque que les valeurs sont comprises entre -3 et +3 -3 ≤ N ≤ +3 - ( 4-1 ) ≤ N ≤ + (4 -1 ) -(22 -1) ≤ N ≤ +(22-1 ) -(2 (3 -1) -1) ≤ N ≤ +(2 (3 -1) -1 ) Si on travail sur n bits , l’intervalle des valeurs qu’on peut représenter en CA1 : -(2 (n -1) -1) ≤ N ≤ +(2 (n -1) -1 ) © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
1.3 Complément à 2 ( complément à vrai ) Si on suppose que a est un nombre sur n bits alors : a + 2 n = a modulo 2n et si on prend le résultat sur n bits on va obtenir la même valeur que a . a + 2 n = a Exemple : soit a = 1001 sur 4 bits 24= 10000 1 0 0 1 1 0 0 0 0 + 1 1 0 0 1 Si on prend le résultat sur 4 bits on trouve la même valeur de a = 1001 © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Trouver le complément à vrai de : 01000101 sur 8 bits ? Exemple Trouver le complément à vrai de : 01000101 sur 8 bits ? CA2(01000101)= CA1(01000101)+ 1 CA1(01000101)= (10111010) CA2(01000101)=(10111010)+ 1 = (10111011) Remarque 1 : Pour trouver le compétemment à 2 d’un nombre : il faut parcourir les bits de ce nombre à partir du poids faible et garder tous les bits avant le premier 1 et inverser les autres bits qui viennent après. 0 1 0 0 0 1 0 1 1 1 0 1 0 1 0 0 1 0 1 1 1 0 1 1 0 0 1 0 1 1 0 0 © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Remarque 2 Dans cette représentation , le bit du poids fort nous indique le signe ( 0 : positif , 1 : négatif ). Le complément à deux du complément à deux d’un nombre est égale au nombre lui même . CA2(CA2(N))= N Exemple : Quelle est la valeur décimale représentée par la valeur 101010 en complément à deux sur 6 bits ? Le bit poids fort indique qu'il s'agit d'un nombre négatif. Valeur = - CA2(101010) = - (010101 + 1) = - (010110)2= - ( 22) © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Si on travail sur 3 bits : + 0 + 1 + 2 + 3 000 001 010 011 - 4 - 3 - 2 valeur Valeur en binaire Valeur en CA2 + 0 + 1 + 2 + 3 000 001 010 011 - 4 - 3 - 2 - 1 - 100 - 011 - 010 - 001 100 101 110 111 Dans cette représentation , le bit du poids fort nous indique le signe . On remarque que le zéro n’a pas une double représentation. © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
-(2 (n -1)) ≤ N ≤ +(2 (n -1) -1 ) -4 ≤ N ≤ +3 - 4 ≤ N ≤ + (4 -1 ) Sur 3 bits on remarque que les valeurs sont comprises entre -4 et +3 -4 ≤ N ≤ +3 - 4 ≤ N ≤ + (4 -1 ) - 22 ≤ N ≤ +(22-1 ) -2 (3 -1) ≤ N ≤ (2 (3 -1) -1 ) Si on travail sur n bits , l’intervalle des valeurs qu’on peut représenter en CA2 : -(2 (n -1)) ≤ N ≤ +(2 (n -1) -1 ) La représentation en complément à deux ( complément à vrai ) est la représentation la plus utilisée pour la représentation des nombres négatifs dans la machine. © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Opérations arithmétiques en CA2 Effectuer les opérations suivantes sur 5 Bits , en utilisant la représentation en CA2 + 9 - 4 + 5 0 1 0 0 1 1 1 1 0 0 + 1 0 0 1 0 1 + 9 + 4 + 13 0 1 0 0 1 0 0 1 0 0 + 0 1 1 0 1 Report Le résultat est positif (01101)2= ( 13)10 Le résultat est positif (00101)2= ( 5)10 © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Le résultat est négatif : Résultat = - CA2 (10011) = -( 01101) = - 13 1 0 1 1 1 1 1 1 0 0 - 9 + 9 + 0 1 0 1 1 1 0 1 0 0 1 + 1 0 0 0 0 0 + - 9 - 4 - 13 1 1 0 0 1 1 Report Report Le résultat est négatif : Résultat = - CA2 (10011) = -( 01101) = - 13 Le résultat est positif (00000)2= ( 0)10 © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Représentation des nombres réels © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
2. La représentation des nombres réels Un nombre réel est constitué de deux parties : la partie entière et la partie fractionnelle ( les deux parties sont séparées par une virgule ) Problème : comment indiquer à la machine la position de la virgule ? Il existe deux méthodes pour représenter les nombre réel : Virgule fixe : la position de la virgule est fixe Virgule flottante : la position de la virgule change ( dynamique ) © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
2.1 La virgule fixe Dans cette représentation la partie entière est représentée sur n bits et la partie fractionnelle sur p bits , en plus un bit est utilisé pour le signe. Exemple : si n=3 et p=2 on va avoir les valeurs suivantes valeur P.F P.E Signe + 0,0 + 0,25 + 0,5 + 0,75 + 1,0 . 00 01 10 11 .00 000 001 Dans cette représentation les valeurs sont limitées et nous n’avons pas une grande précision © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
2.2 Représentation en virgule flottante Chaque nombre réel peut s’écrire de la façon suivante : N= ± M * b e M : mantisse , b : la base , e : l’exposant Exemple : 15,6 = 0,156 * 10+2 - ( 110,101)2 = - (0,110101)2 * 2+3 (0,00101)2= ( 0,101)2 * 2-2 Remarque : on dit que la mantisse est normalisée si le premier chiffre après la virgule est différent de 0 et le premier chiffre avant la virgule est égale à 0. © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Pour la représentation de l’exposant on utilise : Dans cette représentation sur n bits : La mantisse est sous la forme signe/valeur absolue 1 bit pour le signe et k bits pour la valeur. L’exposant ( positif ou négatif ) est représenté sur p bits . Signe mantisse Exposant Mantisse normalisée 1 bit p bits k bits Pour la représentation de l’exposant on utilise : * Le complément à deux * Exposant décalé ou biaisé © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Représentation de l’exposant en complément à deux On veut représenter les nombres ( 0,015)8 et -( 15, 01)8 en virgule flottante sur une machine ayant le format suivant : Signe mantisse Exposant en CA2 Mantisse normalisée 1 bit 4 bits 8 bits (0,015)8=(0,000001101)2= 0,1101 * 2-5 Signe mantisse : positif ( 0) Mantisse normalisé : 0,1101 Exposant = -5 utiliser le complément à deux pour représenter le -5 Sur 4 bits CA2(0101)=1011 1 0 1 1 1 1 0 1 0 0 0 0 1 bit 4 bits 8 bits © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Signe mantisse : négatif ( 1) Mantisse normalisée : 0,1101000001 - (15,01)8 = - (001101,000001)2= - 0,1101000001 * 24 Signe mantisse : négatif ( 1) Mantisse normalisée : 0,1101000001 Exposant = 4 , en complément à deux il garde la même valeur ( 0100) On remarque que la mantisse est sur 10 bits (1101 0000 01), et sur la machine seulement 8 bits sont utilisés pour la mantisse. Dans ce cas on va prendre les 8 premiers bits de la mantisse 1 0 1 0 0 1 1 0 1 0 0 0 0 1 bit 4 bits 8 bits Remarque : si la mantisse est sur k bits et si elle est représentée sur la machine sur k’ bits tel que k> k’ , alors la mantisse sera tronquée : on va prendre uniquement k’ bits perdre dans la précision . © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
L’ Exposant décalé ( biaisé ) en complément à 2, l’intervalle des valeurs qu’on peut représenter sur p bits : - 2 (p -1) ≤ N ≤ 2 (p -1) -1 Si on rajoute la valeur 2 (p -1) à tout les terme de cette inégalité : - 2 (p -1) + 2 (p -1) ≤ N + 2 (p -1) ≤ 2 (p -1) - 1 + 2 (p -1) 0 ≤ N + 2 (p -1) ≤ 2 p - 1 On pose N’= N + 2 (p -1) donc : 0 ≤ N’ ≤ 2 p -1 Dans ce cas on obtient des valeur positives. La valeur 2p-1 s’appelle le biais ou le décalage © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Exposant Biaisé = Exposant réel + Biais Avec l’exposant biaisé on a transformé les exposants négatifs à des exposants positifs en rajoutons à l’exposant la valeur 2p -1. Exposant Biaisé = Exposant réel + Biais © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Exemple On veut représenter les nombres ( 0,015)8 et -( 15, 01)8en virgule flottante sur une machine ayant le format suivant : Signe mantisse Exposant décalé Mantisse normalisée 1 bit 4 bits 11 bits (0,015)8=(0,000001101)2= 0,1101 * 2-5 Signe mantisse : positif ( 0) Mantisse normalisé : 0,1101 Exposant réel = -5 Calculer le biais : b= 24-1 = 8 Exposant Biaisé = -5 + 8 = +3 = ( 0011)2 0011 1 1 0 1 0 0 0 0 0 0 0 1 bit 4 bits 11 bits © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Signe mantisse : négatif ( 1) Mantisse normalisée : 0,1101000001 - (15,01)8=(001101,000001)2= 0,1101000001 * 24 Signe mantisse : négatif ( 1) Mantisse normalisée : 0,1101000001 Exposant réel = + 4 Calculer le biais : b= 24-1 = 8 Exposant Biaisé = 4 + 8 = +12 = ( 1100)2 1 1100 1 1 0 1 0 0 0 0 0 1 0 1 bit 4 bits 11 bits © ESPRIT 2009 H.JEDIDI & M.ABDALLAH
Fin du premier Chapitre © ESPRIT 2009 H.JEDIDI & M.ABDALLAH