Vous êtes sur la page 1sur 41

Architecture des micro-contrôleurs et des microprocesseurs

Architecture des micro-contrôleurs et des


microprocesseurs

Dr. Ing. MOHAMED SASS MOHAMDY

Cours sur Micro-contrôleurs et Microprocesseurs


ESP de Nouakchott
30/01/2021

1/41
Architecture des micro-contrôleurs et des microprocesseurs

Plan du Cours

1 Architecture générale d’un micro-contrôleur

2 Architecture interne du microprocesseur i8086

3 Cycle d’exécution d’une instruction

4 Architecture externe du microprocesseur i8086

2/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture générale d’un micro-contrôleur

I- Architecture générale d’un micro-contrôleur

Un micro-contrôleur est un système à base de microprocesseur, formé


essentiellement de trois éléments suivants :
Une unité CPU (Central Processing Unit) ou microprocesseur.
Une mémoire (ROM et RAM).
Des ports d’entrées/sorties.
Généralement, on utilise des circuits d’interface programmables, pour
mieux organiser la communication avec l’extérieur (périphériques). Ainsi,
on trouve :
Circuit d’interface pour la communication parallèle.
Circuit d’interface pour la communication série.
Contrôleur d’interruptions programmable.

3/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture générale d’un micro-contrôleur

Les différents modules sont interconnectés autour de bus qui assurent la


communication interne et externe du microprocesseur.
Bus : Il s’agit de plusieurs pistes électroniques qui sont reliées au
microprocesseur.

Figure – Architecture d’un micro-computer

4/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture générale d’un micro-contrôleur

Les micro-contrôleurs sont souvent utilisés dans les systèmes embarqués


autonomes, comme :
Téléphonie mobile et GPS.
Transport aérien, maritime etc.
Automobiles.
Contrôleurs des moteurs.
Electroménagers.

5/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture générale d’un micro-contrôleur

Figure – Schéma bloc d’un micro-contrôleur de type 68HC11

6/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture interne du microprocesseur i8086

II- Architecture interne du microprocesseur i8086


II-1- Introduction

Un microprocesseur ou CPU (Central Processing Unit) est formé par les


trois éléments fonctionnels interconnectés suivants :
Ensemble de Registres.
Une Unité Arithmétique et Logique (UAL).
Une unité de commande et de contrôle, qui peut être sous forme
d’un circuit logique câblé ou programmé.
Ensemble de bus de transfert d’informations.

7/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture interne du microprocesseur i8086

Figure – Architecture générale d’un microprocesseur

8/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture interne du microprocesseur i8086

II-2- Éléments de base du microprocesseur i8086

Le microprocesseur d’Intel 8086 est un processeur CISC 16 bits développé


en 1978 par Intel. Le 8086 est à la base de la famille des  x86
 comprenant les célèbres Pentium 80386 et Pentium 80486.

Les caractéristiques principales d’un processeur 8086, sont les suivantes :


Bus de données d’une largeur de 16 bits.
Bus d’adresses de 20 bits, ce qui permet d’adresser un total de 1
Mégaoctet de mémoire.
14 registres de 16 bits, dont un registre d’état contenant des
indicateurs binaires.

9/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture interne du microprocesseur i8086

Le microprocesseur i8086/8088 se compose essentiellement de deux


unités :
Une Unité d’Interface des Bus (UIB) qui se compose d’un compteur
ordinal, du générateur d’adresses physiques, des registres de
segments, d’une pile (file d’attente) et d’un circuit logique de
contrôle. L’UIB assure les taches suivantes :
Contrôle des bus externes.
Elle lit les instructions sans les décoder et les range dans la file
d’attente.
Elle écrit dans la mémoires les résultats que lui fournit l’UE.
Dès qu’un octet est libre dans la file d’attente, l’UIB va chercher une
instruction.
Une UE qui comporte essentiellement l’UAL de 16 bits, qui manipule
les registre généraux de 16 bits aussi. Elle se compose de l’UAL, les
registres généraux, les registres d’index, les registres pointeurs, un
registre d’état et le décodeur d’instructions. L’UE lit les codes
opération dans la pile FIFO (file d’attente) alimentée par l’UIB.

10/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture interne du microprocesseur i8086

II-3- Registres du microprocesseur i8086

Certains d’entre eux sont affectés à des opérations d’ordre général et sont
accessibles au programmeur à tout moment. Nous disons alors qu’il s’agit
de registres généraux.
D’autres registres ont des rôles bien plus spécifiques et ne peuvent pas
servir à un usage non spécialisé. Les registres du 8086 se décomposent en
4 grandes familles :
1 Compteur de programme (Pointeur d’instruction IP).
2 Registres à utilisation générale.
3 Registre d’adresses.
4 Registre d’état.

11/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture interne du microprocesseur i8086

Figure – Architecture interne du microprocesseur i8086

12/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture interne du microprocesseur i8086

II-3-1- Registre Compteur de programme (Pointeur


d’instruction IP)

Le registre compteur (IP) stocke l’adresse de la prochaine instruction


à exécuter par le microprocesseur.
Instruction Pointer IP ou Compteur de Programme, contient
l’adresse de l’emplacement mémoire où se situe la prochaine
instruction à exécuter. Autrement dit, il doit indiquer au processeur
la prochaine instruction à exécuter.
Le registre IP est constamment modifié après l’exécution de chaque
instruction afin qu’il pointe sur l’instruction suivante.

13/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture interne du microprocesseur i8086

II-3-2- Registres à utilisation générale

Chacun de ces registres est décomposé de deux parties : une partie


 haute  et une partie  basse  de 8 bits, ce qui permet au

microprocesseur de manipuler des données sur 8 ou 16 bits :

Figure – Registres à utilisation générale

14/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture interne du microprocesseur i8086

Le registre AX ou accumulateur :
AX est décomposable en AH et AL. Il est principalement utilisé lors
d’opérations arithmétiques et logiques.
Toutes les opérations de transferts de données avec les
entrées-sorties ainsi que le traitement des chaı̂nes de caractères se
font dans le registre AX.

Registre BX (Registre de la base) :


BX est décomposable en BH et BL.
BX est la plupart du temps utilisé comme opérande dans les calculs.
BX est utilisé aussi pour l’adressage de données dans une zone
mémoire différente de la zone code : En général il contient une
adresse de décalage par rapport à une adresse de référence). (Par
exemple, l’adresse de début d’un tableau).

15/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture interne du microprocesseur i8086

Registre CX (Registre compteur) :


CX est décomposable en CH et CL.
Lors de l’exécution d’une boucle on a souvent recours à un compteur
de boucles pour compter le nombre d’itérations, le registre CX est
utilisé comme compteur lors des instructions de boucle ou structure
itératives.

Registre DX (Registre de données) :


DX est décomposable en DH et DL.
Tout comme AX, DX est utilisé pour les calculs arithmétiques et
notamment dans la division et la multiplication.
DX est surtout utilisé pour contenir le numéro d’un port
d’entrée/sortie pour adresser les interfaces d’E/S.

16/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture interne du microprocesseur i8086

II-3-3- Registre d’adresses


A)- Registres pointeurs et d’index

Ces registres sont plus spécialement adaptés au traitement des éléments


dans la mémoire. Ils sont en général munis de propriétés d’incrémentation
et de décrémentation.

Figure – Registres pointeurs et d’index

17/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture interne du microprocesseur i8086

Les pointeurs SP et BP (Stack pointer et base pointer).


SP : pointe sur le sommet de la pile de données.
Le registre SP permet de pointer la pile pour stocker des données ou
des adresses selon le principe du ”Dernier Entré Premier Sorti” ou
”LIFO” (Last In First Out).
BP : pointe sur la base de la pile de données.
Le registre BP a un rôle proche de celui de BX, mais il est
généralement utilisé avec le segment de pile.
La pile est une zone mémoire qui stocke l’information avec le
principe LIFO, ils présentent un décalage par rapport à la base (le
registre SS).

18/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture interne du microprocesseur i8086

Registre SI (indexe de source) :


SI permet de pointer la mémoire il forme en général un décalage (un
offset) par rapport à une base fixe (le registre DS).
SI sert aussi pour les instructions de traitement des chaı̂nes des
caractères, en effet il pointe sur le caractère source.

Registre DI (indexe de destination) :


DI permet aussi de pointer la mémoire il présente un décalage par
rapport à une base fixe (DS ou ES).
DI sert aussi pour les instructions de traitement des chaı̂nes des
caractères, il pointe alors sur la destination.

19/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture interne du microprocesseur i8086

B)- Registres de segmentation

Le microprocesseur i8086 possède quatre registres segments de 16 bits


chacun : CS (code segment), DS (Data segment), ES (Extra segment ou
segment supplémentaire) et SS (Stack segment).
Ces registres sont chargés de sélectionner les différents segments de la
mémoire en pointant sur le début de chacun d’entre eux. Chaque
segment de mémoire ne peut excéder les 65535 octets.

Figure – Registres de segmentation

20/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture interne du microprocesseur i8086

Le registre CS (code segment) :


Il pointe sur le débit du segment qui contient les codes des
instructions du programme en cours.
Si la taille du programme dépasse les 65535 octets alors on peut
diviser le code sur plusieurs segments (chacun ne dépasse pas les
65535 octets) et pour basculer d’une partie à une autre du
programme il suffit de changer la valeur du registre CS et de cette
manière on résout le problème des programmes qui ont une taille
supérieure à 65535 octets.

Le registre DS (Data segment) :


Le registre segment de données pointe sur le segment des variables
globales du programme.
La taille ne peut excéder 65535 octets (si on a des données qui
dépassent cette limite, on utilise la même astuce citée dans la
remarque précédente mais dans ce cas, on change la valeur de DS).

21/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture interne du microprocesseur i8086

Le registre ES (Extra segment) :


Le registre de données supplémentaires ES est utilisé par le
microprocesseur, lorsque l’accès aux autres registres est devenu
difficile ou impossible pour modifier des données, de même ce
segment est utilisé pour le stockage des chaı̂nes de caractères.

Le registre SS (Stack segment) :


Le registre SS pointe sur la pile : la pile est une zone mémoire ou on
peut sauvegarder les registres ou les adresses ou les données pour les
récupérer après l’exécution d’un sous programme ou l’exécution d’un
programme d’interruption.
En général, il est conseillée de ne pas changer le contenu de ce
registre car on risque de perdre des informations très important
(exemple les passages d’argument entre le programme principal et le
sous programme).

22/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture interne du microprocesseur i8086

II-3-4- Registre d’état

Le Registre d’état  flags  contenant 9 indicateurs binaires :

Figure – Bits du registre d’état

CF : Indicateur de retenue. Il est mis à 1 lorsqu’il y a eu une retenue


lors d’un calcul.
PF : Indicateur de parité. Il est mis à 1 lorsque le résultat d’une
opération contient un nombre pair de 1.

23/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture interne du microprocesseur i8086

AF : Indicateur de retenue auxiliaire, qui indique s’il y a une retenue


au niveau du bit numéro 3 du résultat de la dernière opération.
ZF : Indicateur de zéro. Il est mis à 1 lorsque le résultat d’une
opération vaut 0.
SF : Indicateur de signe. Il représente le signe du résultat d’une
opération (0 = positif, 1 = négatif).
TF : Indicateur de fonctionnement en mode pas à pas.
IF :Indicateur d’autorisation d’interruption.
DF : Indicateur de direction d’augmentation ou de décrémentation
des registres DI et SI.
OF : Indicateur de débordement. Il est mis à 1 lorsqu’un
débordement arithmétique a eu lieu (lorsque le résultat d’une
opération ne peut tenir sur 16 bits).

24/41
Architecture des micro-contrôleurs et des microprocesseurs
Cycle d’exécution d’une instruction

III- Cycle d’exécution d’une instruction

Le cycle d’exécution d’une instruction dans un microprocesseur i8086,


peut être principalement, divisé en 4 phases :

Phase 01 : Chargement de l’instruction vers la file d’attente


L’unité UIB est chargée de chercher et mettre le code d’instruction à
exécuter dans la file d’attente des instructions. Elle commence par
activer le compteur du programme (Pointeur d’instruction : IP), et
mettre son contenu, qui représente l’adresse mémoire de l’instruction
à exécuter, sur le bus d’adresse et envoyer en même temps un signal
de lecture (RD) vers la mémoire pour mettre le contenu de la case
mémoire adressée sur le bus des données.

25/41
Architecture des micro-contrôleurs et des microprocesseurs
Cycle d’exécution d’une instruction

Elle fait maintenant une opération d’écriture de la donnée mémoire


obtenue, dans sa destination, qui est le file d’attente des instructions
à exécuter.

Figure – Recherche de l’instruction à exécuter

26/41
Architecture des micro-contrôleurs et des microprocesseurs
Cycle d’exécution d’une instruction

Phase 02 : Décodage de l’instruction et chargement des opérandes :


La file d’attente dans 8086 (ou le registre d’instruction dans le cas de
8085), contient maintenant à son sommet, le premier mot de
l’instruction qui peut être codée sur plusieurs mots.
Ce premier mot contient le code opératoire qui définit la nature de
l’opération à effectuer (addition, rotation,...) et le nombre de mots
de l’instruction.
1 L’unité de commande transforme l’instruction en une suite de
commandes élémentaires nécessaires au traitement de l’instruction.
2 Si l’instruction nécessite une donnée en provenance de la mémoire,
l’unité de commande récupère sa valeur sur le bus de données.
3 L’opérande est stockée dans un registre.

27/41
Architecture des micro-contrôleurs et des microprocesseurs
Cycle d’exécution d’une instruction

On peut imaginer par exemple l’utilisation de deux multiplexeurs à


l’entrée du l’UE qui doivent être activés pour laisser passer les deux
opérandes à l’UE.

Figure – Décodage de l’instruction et chargement des opérandes

28/41
Architecture des micro-contrôleurs et des microprocesseurs
Cycle d’exécution d’une instruction

Phase 03 : Exécution de l’instruction


À cet instant, le décodeur d’instruction doit activer l’élément
d’exécution concerné. Ceci se fait maintenant, en décodant la partie
du code total de l’instruction, qui représente l’opération proprement
dite.
Phase 04 : Chargement du résultat de traitement dans sa destination
Il s’agit d’une opération d’écriture d’une donnée qui existe à cet
instant sur le bus des données interne, dans sa destination. L’adresse
de cette dernière destination présente une partie du code total de
l’instruction. Cette opération d’écriture est assurée par l’UIB.

29/41
Architecture des micro-contrôleurs et des microprocesseurs
Cycle d’exécution d’une instruction

La Mise à jour du registre d’état :


Le registre est mis à jours systématiquement en fonction du résultat
de chaque opération exécutée de l’UE.
Ceci est à fin de permettre au concepteur du programme de savoir
les résultats des différents tests possiblement demandés
(Comparaisons, signe, zéro, interruption acceptée ou non, . . . ).

Figure – Exécution de l’instruction et mise à jour de certains registres


30/41
Architecture des micro-contrôleurs et des microprocesseurs
Cycle d’exécution d’une instruction

La Mise à jour du compteur de programme :


Le compteur du programme s’incrémente systématiquement dès qu’il
y’a un octet vide de la file d’attente d’instructions.
Le cycle de l’instruction est fermé et il est déjà recommencé par
l’UIB avant que l’UE termine son exécution.
En effet, Avec le microprocesseur 8085, le traitement des
instructions se passait comme suit :
Extraction des instructions par l’UIB.
Exécution des instructions.
Extraction des nouvelles instructions.

31/41
Architecture des micro-contrôleurs et des microprocesseurs
Cycle d’exécution d’une instruction

Lorsque l’exécution d’une instruction est terminée, l’UE reste inactif


un court instant, pendant que l’UIB extrait l’instruction suivante.
Pour remédier à ce temps d’attente, le prétraitement ou traitement
pipeline à été introduit dans le 8086/8088.
Pendant que l’UE exécute les informations qui lui sont transmises,
l’instruction suivante est chargée dans l’UIB.Les instructions qui
suivront sont placées dans une file d’attente.
Lorsque l’UE a fini de traiter une instruction l’UIB lui transmet
instantanément l’instruction suivante, et charge la troisième
instruction en vue de la transmettre à l’UE. De cette façon, l’UE est
continuellement en activité.

32/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture externe du microprocesseur i8086

IV- Architecture externe du microprocesseur i8086

Le microprocesseur i8086 peut fonctionner en deux modes différents :


Mode minimal et mode maximal.
a) Mode minimal (MN/MX = 1) :
Dans ce mode, c’est le 8086 qui gère lui-même ses bus et les restrictions
sont apportées par une incapacité à utiliser les coprocesseurs ou
processeurs associés et à être employé en multitraitements.
b) Mode maximal (MN/MX = 0) :
Dans ce mode, le 8086 peut travailler avec d’autres processeurs et
coprocesseurs.

33/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture externe du microprocesseur i8086

Figure – Architecture externe du microprocesseur 8086

34/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture externe du microprocesseur i8086

Signaux utilisés uniquement pour les deux mode minimum et maximum :

Nom de la broche Numéro Direction Utilisation


GND 01 et 20 Entrée Liée à la masse
Vcc 40 Entrée Alimentation par une source
CLK 19 Entrée Impulsions d’horloge
INTR 18 Entrée Demande d’interruptions
masquables
NMI 17 Entrée Demande d’interruptions
non masquables
RESET 21 Entrée Elle permet l’initialisation
du processeur
READY 22 Entrée Pour synchroniser le transfert
entre le processeur et
un périphérique lent

35/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture externe du microprocesseur i8086

TEST 23 Entrée Pour synchroniser le processeur


sur un événement extérieur à la
rencontre de l’instruction WAIT
RD 32 Sortie Le processeur met RD à un état
active = 0 lorsqu’il veut lire de la
mémoire ou de l’un des ports d’E/S.
BHE /S7 : BHE 34 Sortie Elle valide l’octet supérieur du
bus données : (D8-D15)
BHE /S7 : S7 34 Sortie Une sortie pour indiquer la
reconnaissance d’une interruption
MN/MX 33 Entrée Si MN/MX = 1, le processeur fonctionne
en mode minimal et si = 0 le processeur
fonctionne en mode maximal

36/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture externe du microprocesseur i8086

Signaux utilisés uniquement pour mode minimum :

M/IO 28 Sortie Le processeur met M/IO à 1 lorsqu’il veut


accéder à la mémoire et à 0 lorsqu’il veut
accéder à un ports d’E/S
WR 29 Sortie Le processeur met WR à un état active = 0 lorsqu’il
veut écrire en mémoire ou dans un ports d’E/S.
DEN 26 Sortie Pour indiquer qu’une donnée est disponible
sur le bus multiplexé AD0-AD15
ALE 28 Sortie Pour indiquer qu’une adresse est disponible
sur le bus multiplexé AD0-AD15 et sur A16–A19
DT/R 27 Sortie pour contrôler le sens de transfert des données
HOLD 31 Entrée Pour demander au processeur les bus
HLDA 31 Sortie Cession des bus par le processeur
INTA 31 Sortie Pour indiquer l’accusé de réception
d’une interruption

37/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture externe du microprocesseur i8086

Signaux utilisés uniquement pour mode maximum :

S0 S1 S2 26, 27 et 28 Sortie Pour indiquer le cycle en cours.


LOCK 29 Sortie Elle interdit aux autres processeurs
l’usage du bus local. Son état
actif est commandé par le préfixe
LOCK en tête d’une instruction

Figure – Signaux utilisés en mode maximal


38/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture externe du microprocesseur i8086

A16/S3-A19/S6 38 à 35 Sortie Bus bidirectionnel, multiplexé.


A16-A19 : Partie haute
d’une adresse.
S6 : Cette broche est = 0.
S5 : = état du flag (I).
S3 et S4 : Code représentant
le registre de segment utilisé.

Figure – Signaux utilisés en mode maximal

39/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture externe du microprocesseur i8086

QS0, QS1 25 et 24 Sortie Pour indiquer l’opération


effectuée sur la file d’attente.
RQ/GT0, RQ/GT1 31 à 30 Sortie RQ : utilisé par un coprocesseur
pour une demande de bus local.
GT :réponse du 8086 qui donne
le bus en déconnectant l’UIB.
RQ/GT0 est plus prioritaire
que RQ/GT1.

Figure – Signaux utilisés en mode maximal

40/41
Architecture des micro-contrôleurs et des microprocesseurs
Architecture externe du microprocesseur i8086

Merci pour votre attention

41/41

Vous aimerez peut-être aussi