Académique Documents
Professionnel Documents
Culture Documents
Un système embarqué peut être vu comme l'ensemble des sous composantes ou sous- systèmes
suivants. Ce ‘’tout’’ forme un système embarqué complet de stockage, d’échange et de traitement
de l’information :
• Système Physique (hardware/matériel) : Interfaces avec l'environnement extérieur au produit
(capteurs, actionneurs et antennes).
• Système Électronique Analogique (hardware/matériel) : Conditionnement et mise en forme des
signaux de mesure et de contrôle (chaîne d'instrumentation) ainsi que des chaînes de
communication.
• Système Électronique de Puissance (hardware/matériel) : Mise en forme et dimensionnement des
entrées électriques d’énergie (redresseur, hacheurs flyback, forward, etc). Stockage de l'énergie
électrique sur système embarqué autonome (batterie).
• Système Électronique Numérique (hardware/matériel) : Stockage numérique des données
(mémoire donnée) et des programmes (mémoire programme). Traitement des données par
exécution du programme puis mise en forme de l'information (processeur). Interfaces numériques
de communication et d'échange avec l’extérieur (fonctions périphériques).
• Système Informatique (software/logiciel et firmware/micrologiciel) : Couche système (système
d'exploitation du matériel), couche bibliothèque (utilitaires et fonctionnalités pour les applications)
et couche applicative (missions de supervision du système appliquées à des besoins spécifiques
voire problématiques de calcul).
I. Introduction
I.1. Chaîne de traitement de l’information
Exemple de chaîne de traitement de l’information
µC en boite
Architecture globale de µC
Différence en µP et µC
Domaine d’application de µP et µC
II. DIVERSITÉ DES ARCHITECTURES PROCESSEUR
II.1 Architectures modernes
II.2 Applications
Les microcontrôleurs (MCU, Microcontroller Units) sont les processeurs les plus répandus dans
notre environnement.
Les microcontrôleurs sont des processeurs dédiés à la supervision des systèmes électroniques. Ils
contrôlent leur environnement via leurs interfaces et leur firmware embarqué développé pour une
application spécifique.
Ils ciblent des marchés où les applications sont faible coût, faible consommation, faible
encombrement et gros volumes de production.
II.3 Familles de MCU
Il existe un très grand nombre de solutions MCU chez différents fondeurs, permettant de
résoudre un cahier des charges.
• Opérations de transcodage
2.1.3. Code BCD
• Certains processeurs supportent ce codage et permettent de réaliser des opérations
simples (addition, soustraction).
• Decimal Codé Binaire : on code chaque digit décimal (base 10) en binaire sur 4 bits :
Son principal intérêt est qu’il permet de travailler avec le système décimal sur un
microprocesseur qui, à la base, ne comprend que le binaire. Il permet également
d’afficher à l’aide d’un simple transcodage (BCD - 7 segments) les valeurs.
2.2. Entiers relatifs
• … -4, -3, -2, -1, 0, 1, 2, 3, 4, …
• Convention : on utilise le bit de poids fort (de rang n-1) comme bit de signe.
∗ 0 : nombre positif
∗ 1: nombre négatif
2.2.1. codage amplitude-signe
• La représentation est constituée du bit de signe (codée sur 1 bit) et de la valeur absolue du
nombre codée sur (n-1 bits). Ilest possible de coder des valeurs dans l’intervalle
2 ≤ X ≤ 2 (2.2)
Exemple :
n bits x F et xBF
• Cette représentation présente des inconvénients pour le calcul sur machine
:– 0 peut avoir deux représentations : +0 ou -0. Par convention, on écarte la deuxième
possibilité.
– Pour réaliser une addition ou une soustraction, il faut tester le signe des opérandes
afin de savoir quelle opération doit être réellement effectuée. Une comparaison des
valeurs absolues peut également être nécessaire, ce qui complique la réalisation de
l’opérateur de calcul.
⇒ Cette représentation n’est pas employée par les opérateurs de calcul des machines
numériques.
2.2.2. codage en complément à 𝟐𝒏
• Soit un nombre X ≥ codé sur n-1bits et avec le bit de poids fort à 0 (bit de signe). On
a
𝑋+𝑋 =2 𝑋 + 1 = 2 − 𝑋 = −𝑋 𝑚𝑜𝑑𝑢𝑙𝑜 2
• La représentation en complément à 𝟐𝒏 (ou complément à la base ou complément à 2)
d’un nombre X se définit comme suit :
– Si le nombre est positif ou nul, le nombre est codé sur n-1bits, le bit de poids fort (le
signe) valant 0.
– Si le nombre est négatif, le code correspond au complément à 2 de la valeur absolue
du nombre :
𝐶𝑉(|𝑋|) = 2 − |𝑋| = |𝑋| + 1
Le codage aboutit à une représentation avec le bit de poids fort (le signe) égal à 1
.∗ Pour retrouver la valeur absolue du nombre :
CV(CV(X )) X .
∗ méthode rapide à partir du code binaire de la valeur absolue : en partant des poids
faibles, on recopie les bits à "0"jusqu’au premier "1" rencontré. On recopie ce "1". On
complémente tous les bits suivants.
– La valeur (décimale) d’un nombre représenté en complément à 2 est :
Exemple pour n = 4 :
• Remarques :
– Le bit de poids fort représente le signe, bien qu’il fasse partie intégrante du codage du
nombre.
– Il n’existe qu’une représentation du zéro.
• Intérêt de la représentation complémentaire: l’addition et la soustraction peuvent
être traités par le même opérateur.
S X Y X n Y X CV Y (2.7)
∗ Un simple additionneur binaire permet de réaliser l’addition ou la soustraction.
∗ Problèmes liés au débordement de la capacité de codage : il est possible de générer
un indicateur de débordement (V).
2.3. Opérations sur les entiers
• Opérations arithmétiques : addition, soustraction, multiplication et division. Sur
certains microprocesseurs les deux dernièresopérations sont émulées.
• Opérations logiques : AND, OR, XOR.
• Opérations de décalage logique ou arithmétique et rotation – gauche ou droite.
• Opération de comparaison : cela revient à faire une soustraction qui positionne les
indicateurs NZVC, mais sans résultat.
3. Représentation des nombres réels dans un format limité à n bits
Contrairement aux nombres entiers, il est impossible de représenter exactement, sur un
nombre fini de bits, une valeur réelle quelconque. On introduit, au moment du codage,
une erreur de troncature.
3.1. Codage en virgule flottante
• Principe de la représentation en virgule flottante : cela consiste à représenter un
nombre réel sous la forme
𝑋 = ±𝑚𝐵 (3.1)
avec la base de représentation, la mantisse (la partie significative du nombre) et
l’exposant. La représentation est dite
si 1 ≤ m < .
• En binaire ( = 2), le format de représentation de et est fini. Exemple : 1 ≤ m < 2
codé sur p = 3 bits, - 1 ≤ e ≤ 2
• La norme IEEE P754∗ Cette norme propose deux formats de représentation pour un
nombre sous la forme X .M 2 : un format simple précision sur 32 bits et un format
double précision sur 64 bits.
Le bit de signe suit la convention habituelle. Les intervalles de valeurs codables sont :
L’exposant négatif est plus petit en valeur absolue que l’exposant positif afin que des
opérations telles que ne provoquent pas un débordement du format de codage
(overflow). Le fait que l’opération ne soit pas codable (débordement inférieur de
capacité ou underflow) est considéré comme non critique, le résultat pouvant alors être
approximé par 0.
∗ La norme admet les conventions de représentation suivantes,
Le brochage (DIP) est donné sur la figure ci-dessus (vue du dessus, noter l'encoche supérieure
permettant de repérer l'orientation). Les noms entre parenthèses correspondent à une
2ème/3ème fonctionnalité de la broche. Ces fonctionnalités sont configurables (activables) de
manière logicielle. Les broches indispensables pour câbler un ATMEGA
– VCC +5V (fonctionne jusqu'à 2.7V)
– GND masse
– RESET Réinitialisation du microcontrôleur (actif a l'état BAS, A CONNECTER A +5V pour
fonctionnement)
– XTAL1/XTAL2 Quartz ou entrée d'horloge (freq<16MHz sous 5V)
Pour citer quelques-unes des fonctionnalités
– PA0, PA1...PA7 Port A : Entrées Sorties
– PBx,PCx,PDx Port B,C,D : 8 Entrées Sorties pour chaque port
– ADC0, ADC7 Seconde fonctionnalité du port A = Entrée analogique
– /SS,MOSI,MISO,SCLK Entrée/sortie série synchrone SPI (PB4/PB7)
– INT0/INT1/INT2 Entrée d'interruption du processeur par un événement externe
– RXD/TXD Liaison série Asynchrone RS232 (communication PC)
– ...
L'architecture interne du microcontrôleur est donnée figure suivante. Elle est représentative des
microcontrôleurs AVR. Suivant le microcontrôleur (ATMEGA, tiny) certains périphériques
disparaîtront ou apparaîtront, mais sans changer la structure interne.
Au centre à gauche : la CPU, c'est le coeur du microcontroleur, c'est la CPU qui exécute les
instructions. On y reconnaît l'architecture Harvard avec ses mémoires données (SRAM) et
programme (PROGRAM FLASH) séparées.
En haut et en bas : les 4 ports d'entrées sorties A B C D : On peut y remarquer les doubles
fonctionnalités des broches. Par exemple les 8 broches du port A sont également connectées au
bloc de conversion analogique numérique (MUX&ADC).
A droite les blocs fonctionnels de contrôles du microcontrôleur et de certains périphériques :
– TIMER,
– clock source,
– contrôleur d'interruption (INTERRUPT)
– liaisons séries TWI, USART, SPI
– ....
Enfin au milieu : un bus permettant le transfert de données entre les périphériques/mémoires et la
CPU
II. ORGANISATION MEMOIRE
Les CPU AVR contiennent plusieurs types de mémoires :
– la mémoire dédiée aux programmes, cette mémoire est de type FLASH, elle conserve les
programmes (ici le programme qu'exécutera le microcontrôleur) même en absence
d'alimentation.
– la mémoire RAM qui contient les données, cette mémoire est de type SRAM. La SRAM perd
les données en absence d'alimentation.
– La mémoire EEPROM, qui contient des données mais conserve ces données si l'alimentation
est coupée. Son fonctionnement est similaire à celui d'un périphérique.
– 2 zones supplémentaires sont assimilables à de la mémoire :
– les 32 registres de travail R0 à R31
– les 64 registres I/O
Les registres sont des « cases mémoires » spécifiques qui peuvent etre spécialisés pour une
utilisation particulière (PC, SP, ...)
II.1 Mémoire programme
Un programme microcontrôleur est composée d'une suite d'instructions assembleurs (le langage
du microcontrôleur est appelé son « jeu d'instructions ») qui sont exécutées les unes après les
autres. Ces instructions sont « flashées » dans le microcontrôleur lors de la programmation de
celui-ci. Elles sont stockées dans la zone de mémoire appelée PROGRAM MEMORY en
mémoire FLASH.
Les instructions du jeu d'instruction AVR ont une largeur de 16 ou 32 bits, la mémoire
programme d'un ATMega 16 est de 16koctets = 8192 mots de 2 octets. Une instruction occupe 1
ou 2 mots de 2octets=16bits soit 16 ou 32 bits suivant les instructions.
Ces instructions sont donc stockées à des adresses allant de 0 à 8191 soit 0x0000 à 0x1FFF en
hexadécimal. Ces adresses sont représentables par un nombre binaire de 13 bits (213 = 8192).
Le registre PC = Program Counter est un registre spécial qui stocke toujours l'adresse de la
prochaine instruction à exécuter.
Pour l'ATMega16 qui dispose de 8192 =213 adresses pour stocker des instructions, seuls les
13 bits de poids faible de PC sont utilisés.
Lors de l'exécution d'une instruction : PC est incrémenté de 1 unité ou remplacé par l'adresse
d'une nouvelle instruction (cas des sauts).
II.1.1 Registres génériques
Les microcontrôleurs AVR disposent de 32 registres génériques directement reliés à l'unité de
calculs arithmétiques et logiques (ALU) en charge de l'exécution de ce type d’instructions
(ADD, SUB, OR, AND, etc...).
Ces registres sont notés R0 à R31. L'ALU ne travaillent QUE sur ces 32 registres.
Exemples d'instructions :
ADD R21,R25
Additionne le contenu 8 bits du registre R25 au contenu de R21.
R25 est appelé registre source (Rs), R21 est le registre de destination (Rd)
Le mnémonique de ADD est ADD Rd,Rs
Il est a noté que le contenu de R25 n'a pas été modifié par l'instruction, le résultat est placé dans
la destination R21, ce qui a détruit son contenu initial
ANDI R21,0x0F
Réalise un « ET logique » bit a bit entre 0x0F (0000 1111) et le contenu de R21.
ANDI = AND Immédiat car la valeur 0x0F est disponible immédiatement (l'ALU n'a pas à aller
la prendre dans un registre)
II.1.2 Les registres IO
Les microcontrôleurs AVR disposent de 64 registres I/O, numérotés 0x00 à 0x3F. Ces registres
permettent de :
– Contrôler les périphériques d'entrée/sortie,
– Contrôler certains modes de fonctionnement du processeur
1 registre particulier concerne le fonctionnement général du processeur.
Le Status REGister SREG est le registre de statut du processeur (n° 0x3F sur l'ATMega16):