INSTITUT NATIONAL POLYTECHNIQUE DE TOULOUSE ECOLE NATIONALE SUPERIEURE D’ELECTROTECHNIQUE, D’ELECTRONIQUE, D’INFORMATIQU...
148 downloads
2346 Views
2MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
INSTITUT NATIONAL POLYTECHNIQUE DE TOULOUSE ECOLE NATIONALE SUPERIEURE D’ELECTROTECHNIQUE, D’ELECTRONIQUE, D’INFORMATIQUE, D’HYDRAULIQUE ET DES TELECOMMUNICATIONS
DEPARTEMENT D’ELECTRONIQUE - TRAITEMENT DU SIGNAL
COURS ET TRAVAUX PRATIQUES DE MICROPROCESSEUR
M.CATTOEN
Janvier 2003
-0-
TABLE DES MATIERES
INTRODUCTION..................................................................................................................................................3 CHAPITRE I..........................................................................................................................................................5 PRINCIPES GENERAUX DES CALCULATEURS NUMERIQUES .............................................................5 INTRODUCTION..................................................................................................................................................5 I-1 FONCTION MEMOIRE.................................................................................................................................8 I-1-1 DEFINITIONS ....................................................................................................................................................8 I-1-2 ORGANISATION DES MEMOIRES ........................................................................................................................8 I-1-2-1 Organisation par bits...............................................................................................................................8 I-1-2-2 Organisation par mots...........................................................................................................................10 I-1-3 CLASSIFICATION DES MEMOIRES ....................................................................................................................11 I-1-3-1 Mémoires mortes ...................................................................................................................................11 I-1-3-2 Mémoires vives ......................................................................................................................................13 I-1-3-3 Association de mémoires .......................................................................................................................16 I-1-3-4 Autres types de mémoire........................................................................................................................17 I-2 L'UNITE DE TRAITEMENT ......................................................................................................................20 I-2-1 STRUCTURE INTERNE .....................................................................................................................................20 I-2-1-1 Rôle de l'ALU.........................................................................................................................................21 I-2-1-2 Registres de données .............................................................................................................................22 I-2-1-3 Registres d'adresses...............................................................................................................................22 I-2-1-4 Unité de commande ...............................................................................................................................23 I-2-2 ASPECT LOGICIEL ...........................................................................................................................................24 I-2-2-1 Classification des instructions ...............................................................................................................24 I-2-2-2 Format des instructions .........................................................................................................................24 I-2-2-3 Modes d'adressage ................................................................................................................................24 I-2-2-4 Instructions de saut................................................................................................................................28 I-3 LES ORGANES D'ENTREE-SORTIE........................................................................................................30 I-3-1 FONCTIONS DE BASE ......................................................................................................................................30 I-3-1-1 Isolation-Mémorisation .........................................................................................................................30 I-3-1-2 Synchronisation .....................................................................................................................................30 I-3-1-3 Adressage des organes d'E/S .................................................................................................................31 I-3-1-4 Adaptation du format des informations .................................................................................................32 I-3-2 PROCÉDURES D'ÉCHANGE ..............................................................................................................................32 I-3-2-1 Mode programmé par test de mot d'état................................................................................................33 I-3-2-2 Mode programmé par interruption........................................................................................................33 I-3-2-3 Mode en "accès direct mémoire (DMA)"...............................................................................................37 CHAPITRE II ......................................................................................................................................................41 ETUDE DE MICROPROCESSEURS ET D'ORGANES D'ENTREE-SORTIE ..........................................41 II-1 LE MICROCONTROLEUR 8051 ..............................................................................................................41 II-1-1 ORGANISATION EXTERNE .............................................................................................................................41 II-1-1-1 Chronologie des échanges avec la mémoire ........................................................................................42 II-1-2 ORGANISATION INTERNE ..............................................................................................................................45 II-1-3 LES INSTRUCTIONS DU 8051 .........................................................................................................................48 II-1-4 MODES D'ADRESSAGE ...................................................................................................................................48 II-1-4-1 Mode implicite......................................................................................................................................48 II-1-4-2 Mode immédiat.....................................................................................................................................49
-1-
II-1-4-3 Mode direct ..........................................................................................................................................49 II-1-4-4 Mode indirect .......................................................................................................................................49 II-1-4-5 Mode indexé .........................................................................................................................................49 II-1-4-6 Mode relatif ..........................................................................................................................................49 II-1-4-7 Opérations spéciales ............................................................................................................................50 II-2 L'INTERFACE PARALLELE 8255 (PROGRAMMABLE PERIPHERAL INTERFACE PPI) ........53 II-2-1 PRESENTATION DU CIRCUIT ..........................................................................................................................53 II-2-1 MODES DE FONCTIONNEMENT ......................................................................................................................54 II-3 LES TRANSMISSIONS SERIE..................................................................................................................57 II-3-1 GENERALITES ...............................................................................................................................................57 II-3-1-1 Communications asynchrones..............................................................................................................57 II-3-1-2 Communications synchrones................................................................................................................58 II-3-2 EXEMPLE D'INTERFACE SERIE : L'ACIA MC 6850........................................................................................59 II-3-2-1 Présentation du circuit (Fig.II-3-2)......................................................................................................59 II-3-2-2 Fonctionnement....................................................................................................................................61 CHAPITRE III.....................................................................................................................................................65 III-1 DESCRIPTION DU MATERIEL DE TRAVAUX PRATIQUES................................................................65 III-2 DESCRIPTION DE LA CARTE MICR0CONTROLEUR 8051..................................................................66 III-3 DESCRIPTION DE LA PLAQUETTE DE TP-CNA...................................................................................67 III-4 TRAVAIL A REALISER..............................................................................................................................69 III-4-1 Utilisation de l’environnement MUVISION ...........................................................................................69 III-4-2 Exercices de programmation..................................................................................................................70 III-4-3 Sortie d’informations..............................................................................................................................71 III-4-4 Conversion analogique-numérique ........................................................................................................72 III-4-5 Acquisition de données...........................................................................................................................73 BIBLIOGRAPHIE...............................................................................................................................................75 ANNEXES ............................................................................................................................................................76
-2-
INTRODUCTION L'apparition des microprocesseurs date du début des années 1970. A cette époque, deux événements favorables sont apparus : - le concept de "LSI (Large Scale Integration)" permettant d'intégrer plusieurs milliers de portes sur un même substrat, - l'arrivée à maturité de la technologie MOS caractérisée par sa faible consommation. La conjugaison de ces événements a permis de regrouper une unité centrale d'ordinateur dans un seul circuit intégré appelé "microprocesseur". Depuis, une multitude de composants de ce type sont apparus au sein de familles provenant essentiellement de grands constructeurs américains : Intel, Motorola, Advanced Micro Devices (AMD), Texas Instruments,... et japonais : NEC, Mitsubishi,... Grâce aux progrés de l’intégration, l'augmentation des performances a porté sur : - la vitesse de fonctionnement, - la largeur des mots traités (8, 16, 32, 64 bits), - le nombre et la complexité des opérations réalisables. L’intégration a également permis de rassembler le microprocesseur et les éléments associés (mémoire, organes d’entrée-sortie,...) au sein d’un seul circuit appelé
-3-
"microcontrôleur". Ce type de composant s’est répandu dans un très grand nombre de domaines (télécommunications, télévision, électro-ménager, hifi...). L'objectif de ce cours est double : présenter les notions de base nécessaires à la compréhension des systèmes utilisant des microprocesseurs et réaliser des travaux pratiques permettant de programmer en langage machine (assembleur) une application d’acquisition de données. Ce document est divisé en 3 chapitres. Le premier chapitre présente les principes généraux de fonctionnement des éléments constituant les calculateurs numériques. Le deuxième chapitre est consacré principalement à l'étude du microcontrôleur 8051 et du circuit d’interface parallèle 8255 (PPI) qui seront mis en oeuvre dans les travaux pratiques. Le troisième chapitre présente le matériel utilisé en travaux pratiques ainsi que les différents programmes d’application à réaliser. En annexe sont fournies des spécifications techniques détaillées des composants utilisés et des informations sur le matériel et le logiciel utilisés en travaux pratiques.
-4-
CHAPITRE I PRINCIPES GENERAUX DES CALCULATEURS NUMERIQUES INTRODUCTION I-1 FONCTION MEMOIRE I-1-1 Définitions I-1-2 Organisation des mémoires I-1-2-1 Organisation par bits I-1-2-2 Organisation par mots I-1-3 Classification des mémoires I-1-3-1 Mémoires mortes I-1-3-2 Mémoires vives I-1-3-3 Association de mémoires I-1-3-4 Autres types de mémoire
INTRODUCTION Le fonctionnement d'un calculateur numérique fait appel à 2 fonctions essentielles : - le stockage de l'information, - le traitement de l'information. Cette information doit pouvoir circuler sous forme électrique ; elle devra donc être codée. La plus petite quantité d'information (unité) est appelée BIT. Elle correspond à la notion de "variable booléenne ou binaire" qui ne peut prendre que les valeurs 0 ou 1. L'échange d'informations entre 2 éléments (émetteur et récepteur) s'effectue par une liaison électrique (ligne) (Fig.I-1-1). Si l'on considère le cas d'un conducteur unique, l'information provient des combinaisons des états successifs de la ligne au cours du temps : ici l'on parle de liaison "série". Le débit d'informations est exprimé en bits/seconde ou "bauds". Source
Symbole
1 0
Charge E
R
courant
Emetteur
Récepteur
Figure I-1-1 Il est plus avantageux d'associer plusieurs conducteurs en "parallèle". Cette association prend le nom de "bus". A un instant donné, l'état du bus est décrit par un mot binaire pouvant prendre n = 2N valeurs où N est le nombre de lignes juxtaposées. Il est commun d'utiliser des groupements de 8 fils, ce qui conduit à la définition de l'"octet".
-5-
Si l'on considère 2 sous-ensembles reliés par un bus, l'information peut circuler dans un sens (bus unidirectionnel) ou dans les 2 sens (bus bidirectionnel). Dans le premier cas, il s'agit de la liaison entre un émetteur et un récepteur (Fig.I-1-2-a). Dans le second, chaque sous-ensemble peut être configuré soit en émetteur, soit en récepteur (Fig.I-1-2-b). Ici, une ligne supplémentaire est nécessaire pour fixer le sens des échanges. Elle commande le multiplexage interne des liaisons (utilisation d'éléments de type "3 états") (Fig.I-1-2-c). On doit veiller à ce qu'en aucun cas 2 éléments configurés en émetteur commandent l'état du bus simultanément. Dans le cas général, plusieurs sous-ensembles peuvent être connectés sur un même bus, ce qui permet de minimiser le nombre d'interconnexions.
Symbole E
R
E
4
R
a) Bus uni-directionnel
Symbole E/R
E/R
E/R
4
E/R
b) Bus bi-directionnel commande 3 états
c) Multiplexage pour liaison bi-directionnelle
Figure I-1-2 Un calculateur numérique se présente de façon générale comme suit : une unité de traitement (UT) travaille sur des données stockées dans un bloc "mémoire" (MEM). L'introduction des données et la récupération des résultats s'effectuent par l'intermédiaire d'un organe "d'entrée-sortie" (E/S) (Fig.I-1-3). Les liaisons entre ces éléments s'effectuent par des bus.
-6-
EXTERIEUR
BUS
BUS E/S
UT
MEM
Figure I-1-3 Nous analyserons successivement ces 3 fonctions dans ce premier chapitre.
-7-
I-1 FONCTION MEMOIRE I-1-1 Définitions Une mémoire est un ensemble de cellules élémentaires qui stockent chacune un bit. Le nombre de cellules est appelé "capacité" de la mémoire. A chaque cellule sont associées 2 informations (Fig. I-1-4) : - une adresse (numéro) permettant de désigner la cellule, - une donnée représentée par son état. Mémoire Cellules
Adresse :
Données :
numéro de
Contenu
la cellule
de la cellule
Figure I-1-4 La possibilité d'accéder à une cellule quelconque en fournissant son adresse est appelée "accès aléatoire". On distingue un mode de lecture permettant de connaître l'état de la cellule sélectionnée et un mode d'écriture permettant d'imposer son état. Ces 2 modes sont définis par l'état d'une ligne de lecture-écriture (Read/Write : R/W). Note : la plupart des mémoires à semi-conducteur sont à accès aléatoire. Par contre les mémoires dites "de masse" qui ne sont pas décrites ici (disques, bandes, mémoires à bulles,..) sont à accès séquentiel. I-1-2 Organisation des mémoires I-1-2-1 Organisation par bits Soit n la capacité de la mémoire. Généralement on a : n = 2N, où N représente le nombre de lignes d'adresse. Ainsi, avec N=8 on peut adresser 28 = 256 cellules élémentaires. * Fonctionnement en lecture Chaque cellule peut être lue indépendamment si l'on connecte sa sortie à une entrée d'un multiplexeur (n --> 1). Les entrées de sélection du multiplexeur reçoivent l'adresse. -8-
La réalisation la plus simple pour la cellule est une simple connexion à 1 ou à 0 selon l'état à lui donner (solution câblée). Dans ce cas, la mémoire est dite à lecture seule. Si l'on désire pouvoir modifier le contenu de la cellule, il faut remplacer la cellule précédente par un élément dont l'état peut changer ; une bascule de type D par exemple possède cette propriété. Un schéma possible d'organisation pour synthétiser une mémoire à lecture et écriture (N=2) est présenté (Fig.I-1-5). CK
E D
Q
CK CK D
D
D E M U X
R/W Q
M U X
CK D
Cellule de base
ADR.
Q S
Q
CK
2
D
Q
Figure I-1-5 * Fonctionnement en écriture La sélection de la cellule dont on veut fixer l'état s'effectue par un démultiplexeur. En fonction de la valeur de l'adresse, le signal d'écriture est aiguillé vers l'entrée d'horloge de la cellule choisie parmi les 4. La donnée présente sur l'entrée D est alors transférée dans la bascule sélectionnée. * Association en série Un exemple d'association de 2 mémoires en série est présenté (Fig.I-1-6).
-9-
E E1
N
ADR
R/W
D E M U X
E2 M E M
M E M
1
2
S1
MUX
S2
AN+1 S
Figure I-1-6 Cette structure peut être étendue à un nombre de mémoires élémentaires en puissance de 2 par l'utilisation de multiplexeurs et démultiplexeurs de taille adaptée. I-1-2-2 Organisation par mots Cette organisation est obtenue en mettant en parallèle des mémoires de 1 bit (Fig.I-17). ENTREE ADR
N
R/W SORTIE
Figure I-1-7 * Problème de la sélection des cellules Dans la réalisation précédente, la sélection des cellules s'effectue de façon "linéaire". Lorsque le nombre de bits augmente, la taille des multiplexeur et démultiplexeur croît de la même façon, ce qui pose des problèmes de réalisation technologique. Il est alors plus judicieux d'opérer une sélection matricielle. Ainsi le bus d'adresse de dimension N est, par exemple, divisé en 2 bus de dimension N/2. Les cellules sont disposées sous la forme d'une matrice de dimension 2N/2*2N/2. Une cellule est sélectionnée à l'intersection d'une ligne et d'une colonne (Fig.I-1-8) par un opérateur logique de type "ET".
-10-
N/2 DECODEUR
ADRESSE
N/2
colonne
ligne
D E C O D E U R
sélect. MUX./DEMUX donnée
DONNEE
Figure I-1-8 I-1-3 Classification des mémoires Les mémoires sont principalement divisées en 2 classes : - les mémoires "mortes" (Read Only Memory ou ROM), - les mémoires "vives" (Random Access Memory ou RAM). I-1-3-1 Mémoires mortes Les mémoires mortes sont caractérisées par le fait qu'elles sont à lecture seulement. L'état de chaque cellule est déterminé par son forçage à 1 ou à 0 réalisé par exemple par la présence ou l'absence d'une connexion. On est amené à établir une seconde classification selon la technologie utilisée : - mémoire programmable par masque également appelée ROM, - mémoire programmable électriquement (Programmable Read Only Memory ou PROM), - mémoire programmable électriquement et effaçable optiquement (Erasable Programmable Read Only Memory ou EPROM), - mémoire programmable et effaçable électriquement (Electrically Erasable Programmable Read Only Memory ou EEPROM). Un exemple de réalisation de ROM est présenté (Fig.I-1-9). Chaque cellule est constituée d'une diode mise en service à l'intersection d'une ligne et d'une colonne. C'est au moment de la métallisation (étape finale de la fabrication de la mémoire) que la connexion est réalisée ou non selon l'état à donner à la cellule.
-11-
D E C O D E U R 2 --> 4
ADRESSES MULTIPLEXEUR
4-->1
SORTIE
Figure I-1-9 Le principe des PROM est similaire, mais la connexion est réalisée par un fusible (Fig.I-1-10-a). Toutes les cellules sont initialement dans le même état (fusibles intacts). Dans une phase de "programmation", les cellules devant avoir l'état opposé à l'état initial sont sélectionnées successivement et un courant d'intensité élevée est appliqué afin de fondre le fusible. Ces cellules ne pourront plus changer d'état par la suite. Le principe des EPROM est analogue, mais la connexion est réalisée par un transistor à effet de champ (Fig.I-1-10-b). La technologie utilisée est de type "MOS à grille flottante" (Fig.I-1-11). Cellule PROM à fusibles
Cellule EPROM
Fus
(a)
(b)
Figure I-1-10
-12-
AL
AL
source
SiO2 P+
drain
grille flottante SUBSTRAT N
P+
Figure I-1-11 A l'état initial la connexion est établie car le transistor est conducteur. Pour bloquer le transistor, on applique une tension supérieure à la tension de claquage de la jonction PN ; des électrons de forte énergie sont alors injectés dans la grille flottante. Une fois la tension disparue, ces électrons restent prisonniers car la grille est entourée d'isolant. Pour changer l'état des cellules, seule une exposition de la mémoire au rayons ultraviolet permet d'extraire les électrons prisonniers dans la grille et ainsi de remettre la mémoire dans son état initial pour une nouvelle programmation. Ici il s'agit d'un effacement global de la mémoire. Dans le cas des EEPROM, la cellule est plus complexe car elle doit permettre l'évacuation des charges stockées dans la grille. Le retour à l'état initial (effacement) est réalisé par l'application d'une tension de "déprogrammation". L'effacement est sélectif. Notes : - une variante de ces mémoires est connue sous le nom de mémoire "FLASH". - dans les mémoires programmables, les temps d'écriture ou d'effacement sont beaucoup plus grands que les temps d'accès à l'information en lecture. I-1-3-2 Mémoires vives Les mémoires vives également appelées RAM permettent un accès aléatoire à chaque cellule aussi bien en lecture qu'en écriture. On distingue ici deux types fonctionnant selon des principes différents : - les mémoires statiques (SRAM), - les mémoires dynamiques (DRAM). * Mémoires statiques Ici chaque cellule est constituée par un élément bistable (Flip-Flop) (Fig.I-1-12-a). Une fois mise dans un certain état par l'opération d'écriture, la cellule reste dans cet état jusqu'à une écriture de l'état opposé ou jusqu'à disparition de la tension d'alimentation. Une mémoire statique comprend 3 bus (Fig.I-1-12-b) : - un bus d'adresse (entrée), - un bus de donnée (entrée, sortie ou entrée-sortie), - un bus de commande (lecture-écriture (R/W), sélection de boîtier (/CS)). Le rôle du signal de sélection est le suivant : - s'il est actif, la mémoire fonctionne selon le mode déterminé par la ligne d'écriture-lecture,
-13-
- s'il est inactif, l'écriture est impossible, et en lecture, le bus de donnée est mis en haute impédance. LIGNES DE DONNEES
Adresse
VCC
Donnée SRAM
R/W Sélection(/CS) VSS LIGNE DE SELECTION a)
b)
Figure I-1-12 Une grandeur importante est le temps d'accès de la mémoire caractérisé par le temps qui s'écoule entre l'application d'une adresse et la disponibilité en sortie d'une donnée valide. Ce temps détermine la fréquence maximum d'utilisation de la mémoire. La période minimum est appelée temps de cycle. Les chronogrammes typiques d'une SRAM sont présentés (Fig.I-1-13). T cycle (écriture)
T cycle (lecture)
ADRESSE
ADRESSE T AS
TCS
SELECTION (/CS)
SELECTION (/CS) T accès (sélection) DONNEE
invalide
TH valide
ECRITURE (R/W) T SU
TH
T accès (adresse) DONNEE
(R/W = 1)
valide
Figure I-1-13 TSU et TH sont respectivement le temps de pré-établissement (Setup) et le temps de maintien (Hold) nécessaires pour assurer que la donnée soit correctement prise en compte. Nous noterons que le temps de cycle est égal au temps d'accès. * Mémoires dynamiques Les mémoires dynamiques fonctionnent selon un principe différent. Chaque cellule est constituée d'un condensateur dont la charge représente l'état (Fig.I-1-14-a). Une fois chargé, le condensateur ne peut se décharger que dans une résistance très élevée (technologie MOS). La constante de temps de décharge de l'ordre de quelques mS impose de "rafraîchir" chaque cellule par un accès périodique en écriture ou en lecture.
-14-
Sélection de ligne
Adresse Entrée Ligne de bit
Sortie DRAM
R/W Condensateur de stockage
/RAS /CAS
a)
b)
Figure I-1-14 La disposition interne des cellules est toujours matricielle. Du fait du nombre élevé de lignes d'adresse nécessaire à l'adressage d'un grand nombre de cellules, il devient nécessaire de multiplexer les adresses lignes et colonnes pour diminuer le nombre de connexions du boîtier mémoire. L'organisation externe d'une mémoire dynamique (Fig.I-1-14-b) est très voisine de celle d'une mémoire statique, si ce n'est la présence de 2 lignes de validation : - sélection de ligne (Row Adress Select /RAS), - sélection de colonne (Column Adress Select /CAS). On notera l'absence de lignes de sélection de boîtier, la sélection effective de la mémoire étant réalisée par les validations successives de /RAS et de /CAS. D'autre part, la seule activation de /RAS rafraîchit simultanément toutes les cellules d'une ligne dont le numéro est fourni sur le bus d'adresse. Il existe certains cycles spéciaux tels que : - mode "page" permettant un accès rapide aux éléments d'une même ligne, - rafraîchissement par séquence "/CAS avant /RAS" utilisant un compteur interne, - lecture-modification-écriture, - etc... Un chronogramme typique d'opérations de lecture et d'écriture d'une DRAM est présenté (Fig.I-1-15).
-15-
T cycle
T cycle
RAS
RAS
T crp
CAS ADR. ligne
T crp
CAS colonne
ADR.
ligne
colonne T su
DONNEE
Th
T rac T cac
valide
T su
valide
DONNEE
Th
T su
LECTURE
Th
ECRITURE
Figure I-1-15 On notera que dans les mémoires dynamiques le temps de cycle est différent du temps d'accès à cause du temps de "préchargement (Tcrp)". Seul le temps de cycle fixe la fréquence maximum de fonctionnement de la mémoire. I-1-3-3 Association de mémoires La plupart des boîtiers de SRAM possède un bus de données bidirectionnel et une ou plusieurs lignes de sélection. Lorsqu'il y a plusieurs lignes de sélection, la mémoire est activée quand toutes les lignes sont actives simultanément (opérateur ET logique interne). Une mémoire non sélectionnée a son bus de données à l'état haute impédance en lecture et n'est pas modifiée par une opération d'écriture. Ceci permet d'associer en série plusieurs boîtiers en reliant ensemble les bus d'adresse, de donnée et de lecture-écriture. Les lignes d'adresse supplémentaires sont décodées par un démultiplexeur qui commande les lignes de sélection des boîtiers (Fig.I-1-16). Dans le cas des mémoires dynamiques, le principe d'association reste le même, le démultiplexage se faisant soit sur les lignes /RAS, soit sur les lignes /CAS (Fig.I-1-17).
-16-
N
ADR.
SRAM
SRAM
SRAM
R/W ADR. SUP DONNEE D E M U X
SELECT.
Sélections
Figure I-1-16 N
ADR. R/W
N
ADR. DRAM
DRAM
R/W
DRAM
DRAM
/RAS
/CAS
ADR. SUP
ADR. SUP
/CAS.
D E M U X
DONNEE
/RAS.
D E M U X
DRAM
DRAM
DONNEE
Figure I-1-17 I-1-3-4 Autres types de mémoire * Mémoires non volatiles Cette RAM garde son contenu même après coupure de l'alimentation du système dans lequel elle est installée. On trouve 2 concepts : - maintien de la tension d'alimentation par une pile ou une batterie associée en "tampon" avec l'alimentation de la mémoire. La technologie est de type CMOS pour obtenir une consommation très réduite (quelques micro-ampères) durant la phase de maintien. - association d'une EEPROM et d'une RAM dans un même boîtier. Ce concept permet de cumuler les avantages des 2 technologies. L'utilisateur travaille avec une RAM dont le contenu est sauvegardé dans l'EEPROM au moment de la coupure et restitué à la mise sous tension. * Mémoires à double accès On en distingue 2 sortes : - Mémoire double port
-17-
Il s'agit essentiellement d'une SRAM possédant 2 bus d'accès indépendants (adresse, donnée, commande) et des lignes supplémentaires indiquant les conflits d'accès en écriture à la même cellule. Ce type de mémoire est utilisé pour le partage et l'échange de données entre 2 systèmes. - Mémoire vidéo ou VRAM Il s'agit d'une DRAM à laquelle est associé un registre à décalage dont la longueur est égale à celle d'une ligne de la matrice mémoire (Fig.I-1-18). En plus des cycles classiques propres aux DRAM, il existe des cycles spéciaux de transfert mémoire-registre et registremémoire. Ce type de mémoire est particulièrement bien adapté à la réalisation de mémoires d'images ou de plans graphiques. 256 colonnes signaux DRAM partie VRAM
256 lignes
Transfert
TRF partie
signaux VIDEO
Transfert
DRAM
E
VIDEO
H
S REGISTRE
Figure I-1-18 * FIFO (First In - First Out) Constitué autour d'une RAM à double accès, ce "registre" possède 2 compteurs d'adresses internes (pointeurs), l'un désignant la case à écrire, l'autre celle à lire (Fig.I-1-19). Les lignes d'adresse ne sont pas accessibles à l'extérieur : le type d'accès est ici séquentiel ou série. En plus des lignes de donnée, d'écriture et de lecture, on trouve les lignes d'indication de "registre vide" et "registre plein". La première signale l'égalité des pointeurs, la seconde que le pointeur d'écriture "rattrape" celui de lecture. Ces lignes permettent de gérer correctement le transfert d'informations entre 2 systèmes qui peuvent travailler à des fréquences différentes (asynchronisme). Il existe également des lignes permettant de "cascader" plusieurs FIFO pour obtenir de plus grandes capacités.
-18-
MEMOIRE DONNEES
DONNEES
Pointeur écriture
FIFO ECRITURE
LECTURE
"PLEIN"
"VIDE"
Figure I-1-19
-19-
Pointeur lecture
I-2 L'UNITE DE TRAITEMENT I-2-1 Structure interne I-2-1-1 Rôle de l'ALU I-2-1-2 Registres de données I-2-1-3 Registres d'adresses I-2-1-4 Unité de commande I-2-2 Aspect logiciel I-2-2-1 Classification des instructions I-2-2-2 Format des instructions I-2-2-3 Modes d'adressage I-2-2-4 Instructions de saut I-2-1 Structure interne L'unité de traitement (U.T.) est l'élément central du calculateur numérique. Elle possède des fonctions pour effectuer des opérations sur des données numériques (mots de donnée ou d'adresse) et des éléments de stockage interne. La première fonction est réalisée par une Unité Arithmétique et Logique (ALU). La seconde est réalisée par des registres. Parmi ceux-ci on distingue : - des registres de données, - des registres d'adresse, - un registre d'état contenant différents "indicateurs" caractéristiques des événements qui se produisent lors de l'exécution de chaque opération. Le contenu de la mémoire est composé de 2 types d'information : - un programme comprenant une suite d'instructions, - des données devant être traitées par le programme. Chaque instruction est codée sous forme binaire ; l'unité de traitement doit donc en assurer le décodage pour déduire les opérations élémentaires à effectuer. Pour cela elle dispose d'un registre d'instruction qui présente à une unité de commande (U.C.) ou "séquenceur", le mot codant l'instruction courante. Sous l'action d'une horloge, l'U.C. élabore les commandes nécessaires à l'exécution de l'instruction. Dans le cas général, elle tient également compte du contenu du registre d'état où sont enregistrés certains résultats liés au déroulement des instructions (dépassements, résultats nuls,...). Les données et les adresses sont véhiculées par des bus en général de formats différents : - le bus de données fixe la longueur du mot échangé avec la mémoire,
-20-
- le bus d'adresse détermine la capacité maximale d'adressage du système, c'est à dire le nombre maximum de mots de la mémoire associée (ex : 16 bits "adressent" 64 Kmots). Dans certains cas, ces 2 bus sont multiplexés sur un seul bus. Une logique externe doit alors effectuer le démultiplexage. Un certain nombre de signaux pour la gestion des échanges avec la mémoire et les organes d'entrée-sortie sont rassemblés dans un "bus de commande". L'architecture interne d'une unité de traitement peut être schématisée par la figure I-21. UNITE DE TRAITEMENT MICROCOMMANDES U.C.
INSTRUCTION
ETAT
REGISTRE(S)
PC
REGISTRE(S)
DE ALU D'ADRESSE
DONNEE BUS INTERNE
BUS D'ADRESSE
BUS DE DONNEE
BUS DE COMMANDE
HORLOGE
Figure I-2-1 I-2-1-1 Rôle de l'ALU Comme son nom l'indique, cette unité peut exécuter 2 types d'opérations. - Opérations arithmétiques Elles incluent l'addition et la soustraction qui sont des opérations de base (une soustraction est une addition avec le complément à deux), la multiplication et la division. Les données traitées sont considérées dans des représentations "entières". Les opérations plus complexes (sinus, log, exp,..) peuvent être obtenues à partir des 4 opérations (par exemple par développement limité). Elles sont réalisées dans une unité de calcul spécialisée (FPU : Floating Point Unit) qui traite des données en représentation en "virgule flottante". - Opérations logiques
-21-
Ces opérations sont effectuées bit à bit sur les bits de même poids de 2 mots (Fig.I-22). On trouve : ET, OU, OU exclusif, PAS,... N-1
0
N-1
0
N-1
0
A B
OPERATIONS : ET,OU,XOR
C
Figure I-2-2 Un autre type d'opérations concerne les décalages et rotations (droite et gauche). Ces différentes opérations diffèrent par la façon d'entrer et de sortir les bits de poids extrêmes (Fig.I-2-3). Elles sont utilisées par exemple pour effectuer la multiplication et la division à partir de l'addition et la soustraction. N-1
0
C
N-1 0
0
0
C
Décalages logiques N-1
0
C
N-1
0
0
C
Décalages arithmétiques
C
N-1
N-1
0
0
C Rotations
Figure I-2-3 Après chaque opération effectuée dans l'ALU, le registre d'état contient un certain nombre d'informations liées à leur exécution. On trouve généralement : signe du résultat, résultat nul, dépassement de capacité (retenue ou Carry (C)), etc.. I-2-1-2 Registres de données Il s'agit de registres d'usage général recevant des opérandes, des résultats intermédiaires ou des résultats. Ils évitent des appels fréquents à la mémoire, réduisant ainsi les temps de calcul. Les registres de données remplissent souvent la fonction d'accumulateur, permettant des opérations du type : ACCU F(OPERANDE)-> ACCU, avec F() : opération logique ou arithmétique. I-2-1-3 Registres d'adresses
-22-
Ces registres servent à gérer l'adressage de la mémoire. Parmi ceux-ci, un registre est fondamental dans l'exécution du programme : le compteur ordinal (Program Counter). Il contient l'adresse de l'instruction courante. De façon générale, les instructions sont rangées séquentiellement en mémoire, ce qui implique un adressage séquentiel de celles-ci par incrémentation d'adresse. Un programme élémentaire comprend les étapes suivantes : - initialisation du PC avec l'adresse de début de programme, - envoi du contenu du PC sur le bus d'adresse, lecture du contenu de la case adressée par PC et transfert dans le registre d'instruction (phase de recherche ou "Fetch"), - décodage de l'instruction par l'U.C., - exécution de l'instruction, - incrémentation du PC, - etc... Le contenu du PC peut cependant être modifié conditionnellement ou non par des instructions de rupture de séquence. * Registres d'index ou pointeurs Ces registres sont plus spécialement adaptés au traitement des éléments d'un tableau. Ils sont en général munis de propriétés d'incrémentation et de décrémentation. Un cas particulier de pointeur est le pointeur de pile (Stack Pointer SP). Ce registre permet de stocker des données ou des adresses selon le principe du "Dernier Entré Premier Sorti" ou "LIFO" (Last In First Out). Dans certain cas, la pile est contenue dans l'U.T., mais la plupart du temps elle est située en mémoire. Nous analyserons son mécanisme ultérieurement. I-2-1-4 Unité de commande Il s'agit essentiellement d'un automate exécutant les différentes séquences propres à chaque instruction. Cet automate peut être réalisé de plusieurs façons : - de façon câblée, par les éléments classiques de la logique séquentielle (portes, bascules, ..), - de façon microprogrammée, par l'utilisation de réseaux combinatoires non simplifiés ou PROMS (modèle de Wilkes). Dans ces 2 cas, le jeu d'instructions est fixe. Si l'utilisateur a accès au contenu des PROMS, le système est "microprogrammable". La plupart des unités de traitement sont microprogrammées et d'instructions fixes.
-23-
donc à jeux
I-2-2 Aspect logiciel I-2-2-1 Classification des instructions Les instructions peuvent porter soit sur les données, soit sur les adresses. Dans le premier cas, il s'agit d'un traitement essentiellement effectué dans l'ALU, par exemple : addition, décalage, opérations logiques, transfert U.T. mémoire, etc... Dans le deuxième cas, il s'agit de la gestion du PC : possibilité de fixer arbitrairement ou conditionnellement l'adresse de la prochaine instruction (saut), d'"appeler" une suite d'instruction, puis de continuer en séquence (sous-programme). I-2-2-2 Format des instructions De façon générale une instruction est composée de 2 informations : - le code-opération indiquant le type d'opération à effectuer, - la désignation des opérandes, c'est à dire des données sur lesquelles doit s'appliquer l'opération. Dans la plupart des cas, l'instruction présente en mémoire contient ces 2 informations dans des mots consécutifs. Le nombre d'instructions (jeu d'instructions) est directement lié au format du codeopération. Ainsi un octet permet de distinguer au maximum 256 instructions différentes. I-2-2-3 Modes d'adressage Une opération se présente sous la forme générale suivante : (Opérande source 1) F (Opérande source 2) --> Destination On parle alors de "machines à 3 adresses". Pour éviter de spécifier systématiquement ces 3 adresses à chaque opération, les opérandes sources ou/et destination sont contenus dans les registres internes de l'U.T. Ainsi, la plupart des U.T. spécifient une seule adresse selon : (Registre N) F (Opérande) --> (Registre N) Les façons de désigner les opérandes constituent les "modes d'adressage". On rencontre principalement les modes suivants : * Adressage implicite Ici les opérandes sont désignés dans le code-opération ; les données concernées se trouvent dans les registres internes de l'U.T. (Fig.I-2-4). *********** -24-
Format :
* CODE-OP * *********** MEMOIRE PC
CODE OP
UT opération interne
IMPLICITE
Figure I-2-4 * Adressage immédiat L'opérande est fourni explicitement, soit dans le code-opération, soit immédiatement après le code-opération (Fig.I-2-5). Format :
************* ************ * CODE-OP * * VALEUR * ************* ************ MEMOIRE PC UT
CODE OP opérande
IMMEDIAT
Figure I-2-5 * Adressage absolu ou étendu L'opérande est trouvé à l'adresse fournie à la suite du code-opération (Fig.I-2-6). Format :
************ * CODE-OP * ************
************ * ADRESSE * ************
-25-
MEMOIRE PC
CODE OP
UT
ADR.
ADR
opérande
ETENDU
Figure I-2-6 * Adressage indirect Ici, on peut distinguer 2 types (Fig.I-2-7) : - par registre : l'opérande est trouvé à l'adresse pointée par le registre, celui-ci étant désigné dans le code-opération (mode implicite), - par la mémoire : l'opérande est trouvé à l'adresse contenue dans la case mémoire dont l'adresse est indiquée à la suite du code-opération. Format :
************ * CODE-OP * ************
************************** * ADRESSE DE L'ADRESSE * ************************** MEMOIRE
MEMOIRE PC
CODE OP
PC
UT
CODE OP
UT
REGISTRE
ADR1 ADR1
ADR2
ADR2
opérande
opérande
INDIRECT(registre)
INDIRECT(mémoire)
Figure I-2-7 * Adressage indexé et relatif L'opérande est trouvé à une adresse calculée de la façon suivante : - un pointeur fournit une adresse dite "de base", - la valeur indiquée à la suite du code-opération est appelée "déplacement (offset)", - l'adresse de l'opérande est obtenue en additionnant la base au déplacement. Ce déplacement peut être exprimé en valeur signée et le pointeur peut être un registre d'index ou le PC lui-même (Fig.I-2-8).
-26-
************ * CODE-OP * ************
Format :
***************** * DEPLACEMENT * ***************** MEMOIRE PC
CODE OP
UT
DEPL.
INDEX DEPL. opérande INDEXE
Figure I-2-8 * Adressage auto-indexé Le calcul de l'adresse est identique au cas précédent, mais le registre concerné est modifié. Plusieurs cas sont possibles : - la nouvelle base est égale à l'adresse calculée, - le pointeur est incrémenté ou décrémenté après ou avant l'opération. Ce type d'adressage est utilisé par le mécanisme de pile (Figure I-2-9). MEMOIRE PC
MEMOIRE
CODE OP
PC
UT
CODE OP
UT (1) SP
SP avant
(2)
SP (2)
SP
SP
après
SP avant
EMPILEMENT (PUSH)
(1)
après
DEPILEMENT (PULL)
Figure I-2-9 Le SP désigne le sommet de la pile : - l'empilement consiste à stocker l'information à l'adresse pointée par le SP, puis à décrémenter la valeur du SP, - le dépilement consiste à incrémenter le SP, puis à lire l'information pointée par le SP. Note : l'ordre de ces opérations peut être inversé dans certaines machines.
-27-
I-2-2-4 Instructions de saut Le déroulement "normal" d'un programme est une suite d'opérations correspondant à des instructions rangées séquentiellement en mémoire et adressées par incrémentation du PC. Pour rompre ce type de séquence on doit disposer d'instructions de "saut" (Fig.I-2-10). Il existe 2 types de saut : - le saut inconditionnel, - le saut conditionnel. Dans le premier cas, le PC est chargé avec l'adresse spécifiée dans l'instruction (plusieurs modes d'adressage sont possibles). La prochaine instruction sera exécutée à partir de cette adresse. Dans le deuxième cas, le déroulement du programme dépend du test d'une condition (état d'un bit du registre d'état) : - si la condition est réalisée, le saut s'effectue, - si la condition n'est pas réalisée, le programme continue en séquence. MEMOIRE PC UT
MEMOIRE
CODE OP
PC UT
ADR
CODE OP ADR (CODE OP)
ADR
(CODE OP)
ETAT
PC
ADR avant
après
(CODE OP)
avant
SAUT INCONDITIONNEL (étendu)
condition PC non réalisée condition PC réalisée après
SAUT CONDITIONNEL
Figure I-2-10 * Sous-programme Lorsqu'un même programme est utilisé plusieurs fois, il serait maladroit de réécrire ce programme à chaque fois qu'on en a besoin. Il faut donc que ce programme soit "appelable" de plusieurs endroits en mémoire et qu'après son exécution, le déroulement reprenne à l'instruction suivant celle d'appel. Ce programme particulier prend alors le nom de "sous-programme". La seule différence avec un programme "normal" est la présence à la fin du sous-programme d'une instruction spéciale appelée "Retour de Sous-Programme (RTS)". Il est nécessaire de mémoriser l'adresse de retour à chaque appel. On doit donc réserver, soit dans l'unité de traitement, soit en mémoire, un emplacement pour stocker automatiquement cette information à chaque appel de sous-programme. -28-
Si l'on désire que, pendant l'exécution du sous-programme on puisse appeler un autre sous-programme et ainsi de suite, il est nécessaire de pouvoir stocker autant d'adresses de retour qu'il y a de sous-programmes appelés (niveaux de sous-programmes). La gestion du stockage de ces adresses ne peut se faire que par le mécanisme de pile (Dernier Entré - Premier Sorti). La taille de la pile fixe le nombre maximum de niveaux admissibles (Fig.I-2-11). MEMOIRE PC
CODE OP
MEMOIRE APPEL
(CODE OP)
(1)
ADR
sous-
(CODE OP)
ADRET
ADR
MEMOIRE
(2)
(1) SP
(2) ADRET
programme
RETOUR
RTS PILE
APPEL DE SOUS-PROGRAMME
Figure I-2-11 La figure I-2-12 illustre l'imbrication de sous-programmes et montre les états successifs de la pile au cours des phases d'exécution des programmes et des sousprogrammes. MEMOIRE (1)
SP (2)
SP
MEMOIRE SP
MEMOIRE
MEMOIRE
MEMOIRE
XXXX
ADR1
ADR2 SP ADR1
ADR2 ADR1 SP
ADR2 ADR1
PILE
PILE
PILE
PILE
PILE
(1)
(2)
(3)
(4)
(5)
ADR1 (3)
ADR2 (5)
(4)
IMBRICATION DE SOUS-PROGRAMMES
Figure I-2-12
-29-
I-3 LES ORGANES D'ENTREE-SORTIE I-3-1 Fonctions de base I-3-1-1 Isolation-Mémorisation I-3-1-2 Synchronisation I-3-1-3 Adressage des organes d'E/S I-3-1-4 Adaptation du format des informations I-3-2 Procédures d'échange I-3-2-1 Mode programmé par test de mot d'état I-3-2-2 Mode programmé par interruption I-3-2-3 Mode en "accès direct mémoire (DMA)" I-3-1 Fonctions de base I-3-1-1 Isolation-Mémorisation L'échange d'informations avec l'environnement (entrée-sortie) se fait à l'aide d'organes spécialisés dont les fonctions élémentaires sont les suivantes : - isolation du bus de donnée du monde extérieur, - mémorisation des valeurs transmises pendant le temps nécessaire à leur prise en compte. Ces 2 fonctions sont réalisables par des registres aussi bien en entrée qu'en sortie ; on parle de "portes d'entrée-sortie" (Input-Output Port). En sortie, ces fonctions sont réalisées par un registre de type "D" (Fig.I-3-1-a). En entrée, généralement seule la fonction isolation est réalisée par un élément "tampon 3 états" (Fig.I-3-1-b). C'est alors au périphérique de maintenir la donnée stable sur le bus externe pendant la durée de sa prise en compte. E/S
E/S
BUS DONNEE
BUS DONNEE
BUS EXTERNE D
BUS EXTERNE
Q
/CS
CK ECRITURE
LECTURE a)
b)
Figure I-3-1 I-3-1-2 Synchronisation
-30-
Des lignes de dialogue doivent indiquer qu'une donnée est disponible en entrée ou en sortie. Ces lignes peuvent être considérées comme des entrées "normales" de données ou bien comme des lignes spécialisées. L'occurrence d'un événement externe se manifeste par un changement d'état de la ligne de dialogue (front). Si ce changement est bref, il peut ne pas être détecté par l'U.T. C'est la raison pour laquelle il est nécessaire de mémoriser cet événement dans une bascule. Un mécanisme de synchronisation peut être le suivant (Fig.I-3-2) : - l'U.T. met initialement à 0 la bascule (RAZ), - un front externe met à 1 celle-ci, - en testant l'état de la bascule, l'U.T. peut savoir si un événement a eu lieu.
CK
VERS BUS DONNEE
évènement externe
Q
D
1
CLEAR LECTURE RAZ
Figure I-3-2 En général, les états des différentes bascules de synchronisation sont regroupés dans un registre d'état. Un échange de données entre un organe d'E/S et un périphérique nécessite en général 2 lignes de dialogue : l'une indiquant la transmission d'une donnée (validation) par l'émetteur, l'autre indiquant que le récepteur à pris en compte cette donnée (acquittement) (Fig.I-3-3). Validation
Validation
E/S
DONNEES
PERIPH.
E/S
DONNEES
Acquittement
Acquittement
SORTIE DE DONNEES
ENTREE DE DONNEES
Figure I-3-3 I-3-1-3 Adressage des organes d'E/S Deux possibilités sont principalement utilisées à l'heure actuelle : - Concept "INTEL" (Fig.I-3-4-a)
-31-
PERIPH.
Les organes d'E/S et la mémoire sont adressés par le même bus d'adresse, mais validés en écriture ou en lecture par des signaux distincts. L'espace d'adressage des E/S est plus petit que l'espace mémoire, ce qui n'est pas gênant, étant donné le nombre restreint de liaisons externes nécessaires à un système. Pour activer ces E/S, des instructions spéciales sont nécessaires (IN, OUT). - Concept "MOTOROLA (Fig.I-3-4-b) Les organes d'E/S sont considérés comme des positions mémoire où l'on lit (Entrée) ou écrit (Sortie) des données. L'avantage de cette approche est que l'on peut utiliser le jeu d'instructions complet de l’U.T. pour manipuler les informations provenant de ces organes. L'inconvénient est que la zone d'E/S de petite dimension "empiète" sur l'espace total adressable normalement réservé à la mémoire. écriture lecture
MEM
zone mémoire
lect/ecr
MEM
MEM E/S
U.T.
U.T.
zone mémoire adressable
MEM
écriture lecture
E/S
E/S
zone E/S b)
a)
Figure I-3-4 I-3-1-4 Adaptation du format des informations Les organes d'E/S sont également chargés de transformer les informations parallèles véhiculées sur le bus de donnée, sous une forme compatible avec celles des unités périphériques utilisées. Les 2 principaux modes de transmission sont les transmissions "parallèles" et les transmissions "séries". Dans ce dernier cas, les organes d'E/S assurent les transformations parallèle-série (sortie) ou série-parallèle (entrée). I-3-2 Procédures d'échange La transmission d'une donnée entre un émetteur et un récepteur ne peut s'effectuer correctement que si ce dernier est prêt à la recevoir. Ceci implique que le système émetteur doit être informé de l'état de disponibilité du récepteur. La manière d'informer l'U.T. de l'état du périphérique est fonction du mode de transfert choisi.
-32-
Il existe 2 modes de transfert : - mode programmé utilisant les procédures de test de mot d'état ou d'interruption, - mode en "Accès Direct Mémoire (DMA)". I-3-2-1 Mode programmé par test de mot d'état L'organe d'E/S fournit un mot d'état indiquant les informations suivantes : - le périphérique est prêt à émettre ou à recevoir (Ready), - le périphérique a envoyé une donnée, - une erreur s'est produite pendant la transmission (série). Le programme de transfert est donc une boucle dont la structure est présentée (Fig.I-35). (1)
MEMOIRE
Ev. UT
Lecture mot d'état
(1)
E/S
prêt ?
N (3)
O
(2)
(2) et (3)
Transfert donnée
Figure I-3-5 Remarque : dans ce programme, l'U.T. teste l'état du périphérique jusqu'à ce que ce dernier soit prêt ; elle se synchronise sur la vitesse de celui-ci. I-3-2-2 Mode programmé par interruption L'inconvénient du premier mode est le ralentissement de l'U.T. qui est "asservie" à un périphérique dont la vitesse est souvent très faible. Un mode dans lequel le périphérique informe l'U.T. qu'il est disponible semble préférable. Mais, dans ce cas, il faut pouvoir interrompre le fonctionnement de l'U.T., exécuter le programme de transfert avec l'E/S, puis reprendre le programme qui était exécuté avant l'interruption sans avoir perdu d'informations. * Mécanisme des interruptions - Définitions Si le déroulement d'un programme peut être suspendu, puis repris, ce programme est interruptible.
-33-
Si l'U.T. peut, par une instruction, inhiber ou autoriser la prise en compte d'interruptions, les interruptions sont masquables. - Fonctionnement avec une source d'interruption (Fig.I-3-6) Les 2 conditions suivantes sont à respecter : - l'instruction en cours ne doit pas être perturbée, - l'état de l'U.T. doit être inchangé lorsque le programme interrompu reprend son déroulement. La première condition impose de terminer l'exécution de l'instruction en cours avant la prise en compte de l'interruption. La deuxième impose une sauvegarde de l'état de l'U.T. au moment de l'interruption, et une restitution à la fin du programme d'interruption. L'état de l'U.T. est également appelé "contexte". Dans certains cas, seuls les contenus du PC et du registre d'état sont sauvegardés. La sauvegarde des registres utilisés dans le programme d'interruption doit être prise en charge dans ce programme. L'adresse de début du programme d'interruption peut être fournie de plusieurs manières : - elle peut être contenue dans un "vecteur d'interruption" situé dans une adresse fixe en mémoire : le branchement à ce programme s'effectue donc par un saut indirect, - elle peut être fournie par l'organe d'E/S au moment de la prise en compte de l'interruption. A la fin du programme d'interruption, l'U.T. revient à l'exécution du programme initial par l'exécution d'une instruction de "retour d'interruption (RTI)". Ceci est réalisé automatiquement en restituant le contexte, puisque ce dernier inclut le contenu du PC. Bien entendu, la zone mémoire de sauvegarde ne doit pas être modifiée par le programme d'interruption. Demande IT (1)
PROGRAMME
MEMOIRE
Ev. UT
(3)
PROG. D'INTERRUPTION Sauvegarde
E/S
(2)
(2) (3)
(1) Interruption Restitution
Figure I-3-6
-34-
RTI
Note : le programme d'interruption est assimilable à un sous-programme, le moment et donc le lieu de l'appel n'étant pas prévisibles. - Fonctionnement avec plusieurs sources d'interruption Le mécanisme de fonctionnement précédemment décrit reste valable, mais deux problèmes supplémentaires sont à résoudre : - l'U.T. doit pouvoir identifier la source d'interruption avant d'exécuter un programme d'interruption spécifique à cette source, - dans le cas où plusieurs interruptions arrivent simultanément, il faut pouvoir régler le conflit : c'est la hiérarchisation des interruptions. Plusieurs cas liés au matériel sont rencontrés : - chaque E/S est connectée à une ligne d'interruption différente (Fig.I-3-7-a). L'U.T. identifie directement l'organe demandeur ; un vecteur est affecté à chaque ligne. Lorsque plusieurs demandes ont lieu simultanément, une règle de priorité est établie de façon interne. - toutes les E/S sont connectées à une entrée d'interruption commune (Ou câblé). Plusieurs solutions peuvent être adoptées : - solution logicielle (Fig.I-3-7-b ). L'U.T. entreprend à chaque interruption une scrutation séquentielle des registres d'état des organes d'E/S émetteurs d'interruption (Polling Sequence) suivant l'ordre de priorité décroissante. Cette recherche s'arrête lorsque un émetteur est identifié ; ce dernier est nécessairement celui qui a la plus haute priorité relative. Un saut au programme correspondant à l'organe identifié réalise une vectorisation programmée. Cette méthode peut être trop lente dans certaines applications. - solution matérielle. Plusieurs variantes sont possibles : - un circuit "contrôleur d'interruption" est utilisé. Il s'apparente à un codeur de priorité. Il fournit directement le numéro du vecteur d'interruption ou bien l'adresse de l'interruption de la source la plus prioritaire (Fig.I-3-7-c). - les organes d'E/S sont connectés entre-eux (chaînage ou "daisy chain"). En cas de simultanéité d'interruption, la disposition des éléments dans la chaîne établit la priorité (Fig.I3-7-d).
-35-
IT
IT1 U.T.
E/S
U.T.
E/S
E/S
MEM
E/S
IT2
MEM
VECT1 VECT2
VECT
(a)
(b) acq
U.T.
IT
U.T.
IT
E/S CONTROL.D'IT
MEM
E/S
MEM E/S
E/S
VECT1 VECT2
VECT1 VECT2
(c)
(d)
Figure I-3-7 Lorsque un programme d'interruption a été effectué, l'U.T. doit prendre en compte les interruptions de niveau inférieur qui étaient présentes ou qui ont eu lieu depuis le traitement de la première interruption. Comme un programme d'interruption peut être lui-même interrompu, l'imbrication des interruptions est similaire à celle des sous-programmes : une pile est donc nécessaire pour sauvegarder les contextes correspondant à chaque niveau d'interruption. De façon générale, les organes d'E/S peuvent être programmés pour activer les lignes d'interruption au moment de l'apparition d’événements particuliers : - périphérique prêt à recevoir, - réception d'une donnée, - fin de transmission (pour une transmission série par ex.), - erreur dans la transmission, - etc... La désactivation de la ligne d'interruption se fait automatiquement par la prise en compte (lecture ou écriture) des données au niveau de l'organe d'E/S émetteur de la demande.
-36-
* Autres types d'interruption On trouve : - les commandes d'initialisation (RESET) qui sont non masquables et de priorité maximum. Elles servent à démarrer le système en plaçant dans le PC l'adresse de la première instruction à exécuter. Ici, l'opération de sauvegarde de contexte n'est pas nécessaire. - les interruptions logicielles qui permettent la sauvegarde automatique du contexte et l'appel de fonctions prédéfinies. A chaque interruption est associé un numéro ou type désignant un vecteur (mémoire d'indirection) dans une table. I-3-2-3 Mode en "accès direct mémoire (DMA)" Ce mode permet le transfert de blocs de données entre la mémoire et le périphérique sans passer par l'U.T (Fig.I-3-8). Mémoire Adresse de début
EXTERIEUR Bloc
E/S
Adresse de fin
Figure I-3-8 Pour cela, un circuit appelé contrôleur de DMA, prend en charge les différentes opérations. On distingue principalement 2 modes de transfert : - mode "adresse implicite" ou "à 1 adresse", - mode "adresse explicite" ou "à 2 adresses". Dans le premier cas, l'échange s'effectue directement entre l'organe d'E/S et la mémoire. Le contrôleur de DMA dispose de l'adresse en mémoire du bloc à transférer. Il commande directement l'organe d'E/S lors du transfert grâce à des lignes de dialogue (Fig.I-39-a). Dans le deuxième cas, le transfert s'effectue en 2 étapes (cas d'un transfert en entrée) : - transfert de l'organe d'E/S vers le contrôleur, - transfert du contrôleur vers la mémoire.
-37-
Ici le contrôleur contient les 2 adresses concernées. Dans ce cas, des transferts peuvent être effectués de mémoire à mémoire (Fig.I-3-9-b). BUS ADRESSE
MEM
DMA
E/S
BUS DONNEE BUS ADRESSE
BUS ADRESSE (a)
MEM
DMA
MEM
E/S (MEM)
DMA
(b)
BUS DONNEE
E/S (MEM)
BUS DONNEE
Figure I-3-9 Une procédure d'échange possible dans le premier mode est la suivante (entrée de données) (Fig.I-3-10) : - le circuit d'E/S informe le contrôleur de DMA qu'il a reçu une donnée (1), - le contrôleur demande à l'U.T. une mise à l'état haute impédance de ses bus (bus request) (2), - dès que l'U.T. a libéré les bus, elle avertit le contrôleur (bus grant) (3), - le contrôleur effectue alors les opérations suivantes (4): - positionnement de l'adresse mémoire, - lecture de la donnée de l'organe d'E/S, - écriture de cette donnée en mémoire. BUS ADRESSE R/W
MEM
(2)
UT
(1)
DMA (3)
IRQ BUS DONNEE
Figure I-3-10
-38-
E/S (4)
EXT
Le contrôleur dispose de registres internes programmables indiquant l'adresse de début de bloc et le nombre de transferts à effectuer. Les transferts sont réalisés à des adresses successives par incrémentation du registre d'adresse et s'arrêtent lorsque le nombre programmé est atteint. A ce moment, l'U.T. est avertie de cet événement, soit par lecture du mot d'état du contrôleur, soit par une interruption issue de celui-ci. Note : le contrôleur de DMA peut gérer des transferts de donnée avec plusieurs organes d'E/S. Pour cela, il dispose de plusieurs "canaux" (lignes de dialogue et registres). Des règles de priorité doivent être utilisées pour régler les conflits de demande de transfert (priorités fixe ou tournante). * Modes de DMA - Arrêt de l'U.T. ( Fig.I-3-11-a) Pendant tout le transfert, l'U.T. est arrêtée et ses bus sont en haute impédance. Notons que le temps d'attente pour la prise en compte des bus peut être assez long, car l'U.T. doit terminer l' instruction en cours avant de libérer les bus qu'elle commande. - Vol de cycles (Fig.I-3-11-b) Pour éviter l'arrêt complet de l'U.T., on peut lui dérober des cycles en agissant sur la forme de l'horloge associée. Durant ces cycles, on effectue des transferts DMA. Une conséquence est le ralentissement de l'exécution du programme. Note : pour certaines U.T. de structure dynamique, il existe un intervalle de temps maximum entre 2 tops horloge, ce qui limite le nombre de cycles consécutifs que l'on peut dérober et donc la vitesse de transfert DMA. - Accès multiplexé ou "transparent" (Fig.I-3-11-c) En examinant les chronogrammes d'accès de l'U.T. à la mémoire, on s'aperçoit que certaines périodes sont disponibles car l'U.T. effectue un travail interne. On peut donc en profiter pour effectuer un accès DMA. Ici la mise à l'état haute impédance ne peut être réalisée : un multiplexage des bus est nécessaire. Notons que le programme n'est pas ralenti par le transfert DMA mais que le temps d'accès des mémoires utilisées doit être réduit par rapport à une utilisation normale.
-39-
1 cycle Horloge
Demande DMA a)
Acquittement
U.T.
U.T.
DMA
DMA
DMA
U.T.
1 cycle Horloge
Cycles volés
b) Horloge U.T.
U.T.
U.T.
DMA
DMA
DMA
U.T.
1 cycle Horloge c) DMA
U.T.
DMA
U.T.
DMA
U.T.
DMA
Figure I-3-11
-40-
U.T.
DMA
U.T.
DMA
U.T.
CHAPITRE II ETUDE DE MICROPROCESSEURS ET D'ORGANES D'ENTREESORTIE II-1 LE MICROCONTROLEUR 8051 II-1-1 Organisation externe II-1-1-1 Chronologie des échanges avec la mémoire II-1-2 Organisation interne II-1-3 Les instructions du 8051 II-1-4 Modes d'adressage II-1-4-1 Mode implicite II-1-4-2 Mode immédiat II-1-4-3 Mode direct II-1-4-4 Mode indirect II-1-4-5 Mode indexé II-1-4-6 Mode relatif II-1-4-7 Opérations spéciales Le microcontrôleur 8051 est un microcontrôleur 8 bits ayant un bus d'adresse de 16 bits. Il appartient à une famille possédant des variantes qui diffèrent par des ressources internes diverses (ROM, RAM, organes d’E/S,...). II-1-1 Organisation externe L’organisation externe du 8051 est présentée sur la figure II-1-1.
Figure II-1-1
-41-
Le 8051 est relié à son environnement par 40 broches dont le rôle est explicité cidessous (E : entrée, S : sortie, E/S entrée-sortie) : Broches XTAL1 XTAL2 RESET ALE /PSEN /EA VCC VSS P0.7-P0.0 P1.7-P1.0 P2.7-P2.0 P3.7-P3.0
Sens E S E S S E/S E E E/S E/S E/S E/S
Signification entrée horloge sortie horloge Initialisation Adress Latch Enable Program Store Enable CPU Memory Separate alimentation 5V masse Port 0 Port 1 Port 2 Port 3
Les broches de certains ports ont un rôle particulier dans le fonctionnement du 8051 : - le port 0 est utilisé comme bus d’adresse de poids faible A7-A0 multiplexé avec le bus de données D7-D0, - le port 2 est utilisé comme bus d’adresse de poids fort A15-A8, - le port 1 peut véhiculer les signaux suivants : - T2 entrée Timer 2 (80C154), - T2EX entrée flag Timer 2 (80C154), - le port 3 véhicule les signaux suivants : - RXD entrée série, - TXD sortie série, - /INT0 entrée d’interruption 0, - /INT1 entrée d’interruption 1, - T0 entrée Timer 0, - T1 entrée Timer 1, - /WR signal d’écriture, - /RD signal de lecture. II-1-1-1 Chronologie des échanges avec la mémoire Le 8051 est un µP synchrone, c'est à dire que tous les échanges avec la mémoire se font en synchronisme avec une horloge. Un cycle comprend 12 périodes horloge et 6 états S1-S6. Selon la nature de l’accès, différents chronogrammes sont observables. Le chronogramme de la recherche d’une instruction en mémoire externe (fetch) est présenté (Fig.II-1-2).
-42-
Figure II-1-2 Le chronogramme de la lecture d’une donnée en mémoire externe est présenté (Fig.II1-3).
Figure II-1-3 Le chronogramme de l’écriture d’une donnée en mémoire externe est présenté (Fig.II1-4).
-43-
Figure II-1-4
-44-
II-1-2 Organisation interne Le modèle simplifié du 8051 est présenté à la figure II-1-5. 7 SP
PILE
4 bancs de 8 registres 8 bits
0
B
R0 R1 R2 R3 R4 R5 R6 R7
ACCU
A
ETAT
PSW
15
8 7
0
PC
PCH
PCL
INDEX
DPH
DPL
Figure II-1-5 Le 8051 possède une RAM interne de 128 octets (ou 256 selon le modèle) et un ensemble de registres appelés SFR (Special Function Register). Parmi ces registres, on distingue : - 4 registres de 8 bits : 1 accumulateur (A ou ACC), 1 registre (B), 1 registre d'état (PSW), 1 pointeur de pile (SP), - 2 registre de 16 bits : 1 compteur ordinal (PC), 1 pointeur de données (DPTR). Voici le détail des bits du registre d'état PSW : Bit n°
7 CY
6 AC
5 F0
4 RS1
3 RS0
2 OV
1 F1
0 P
CY : Carry Flag (retenue) AC : Auxilliary Carry Flag (retenue auxiliaire) F0 : Flag 0 (utilisateur) RS1 : Register Bank Selector bit 1 RS0 : Register Bank Selector bit 0 OV : Overflow Flag F1 : Flag 1 (utilisateur) P : Parity Flag La RAM interne possède des emplacements pouvant être utilisés comme registres. Ainsi la zone (00-1F) peut contenir 4 bancs de 8 registres (R7-R0). Chaque banc est sélectionnée par les bits RS1 et RS0 de PSW selon la table de vérité suivante :
-45-
RS1 0 0 1 1
RS0 0 1 0 1
Sélection Banc 0 (00-07) Banc 1 (08-0F) Banc 2 (10-17) Banc 3 (18-1F)
Le 8051 possède en outre : - 2 registres associés aux interruptions : IP et IE, - 1 registre associé au contrôle d’alimentation : PCON, - 6 registres associés aux timer : TMOD, TCON, TH0, TL0, TH1,TL1, - 2 registres associés aux liaisons série : SCON et SBUF. L’architecture plus détaillée du 8051 est présentée sur la figure II-1-6.
Figure II-1-6
-46-
La figure II-1-7 détaille le rôle des bits de IE et la figure II-1-8 celui de IP.
Figure II-1-7
Figure II-1-8 La figure II-1-9 détaille le rôle des bits de TCON.
Figure II-1-9
-47-
Le tableau suivant donne l’état des différents registres après un RESET. PC A B PSW SP DPTR P0-P3 IP IE TMOD TCON TH0 TL0 TH1 TL1 SCON SBUF PCON
0000H 00H 00H 00H 07H 0000H FFFFH XXX00000B 0XX00000B 00H 00H 00H 00H 00H 00H 00H XXH 0XXXXXXXB
II-1-3 Les instructions du 8051 Le 8051 peut exécuter des instructions portant sur : - des échanges de données entre la mémoire et les registres internes, - des opérations logiques ou arithmétiques sur l'accumulateur, - des opérations booléennes au niveau de l’octet et au niveau du bit, - des manipulations sur les registres, - des ruptures de séquences (sauts inconditionnels ou conditionnels). Les instructions comprennent 1, 2 ou 3 octets successifs suivant les modes d'adressage. Le premier octet contient le code opération ; le deuxième ou les deux suivants sont des données ou des adresses. II-1-4 Modes d'adressage Le 8051 possède 6 modes d'adressage : - le mode implicite, - le mode immédiat, - le mode direct, - le mode indirect, - le mode indexé, - le mode relatif. II-1-4-1 Mode implicite Il comprend les instructions portant sur les registres internes du 8051. Exemple :
-48-
Opération A + 1 -> A
Mnémonique Instruction en hexadécimal INC A 04
II-1-4-2 Mode immédiat Les instructions en mode immédiat ont 2 octets. Le premier est le code opération. Le deuxième est la donnée sur laquelle porte l'opération. Exemple : valeur->A
MOV A ,#valeur
74 valeur
II-1-4-3 Mode direct Le mode direct porte sur la valeur contenue dans l’adresse fournie à la suite du code opération. Exemple : (adresse)->A MOV A ,adresse
E5 adresse
Remarque : l’adresse fournie concerne la RAM interne. II-1-4-4 Mode indirect Le mode indirect porte sur la valeur désignée soit par l’adresse contenue dans un registre, soit par celle de l’adresse fournie à la suite du code opération. Exemples : - par registre ((R1))->A ((DPTR))->A - par adresse ((adresse))->A
MOV A ,@R18 bits (RAM interne) MOVX A,@DPTR 16 bits (RAM externe) MOV A,@adresse
8 bits (RAM interne)
II-1-4-5 Mode indexé L'adresse mémoire est calculée en additionnant la valeur contenue dans l’accumulateur à l'adresse contenue dans le pointeur de donnée. ((DPTR+A))->A
MOVC A,@A+DPTR
II-1-4-6 Mode relatif Les ruptures de séquence se font grâce à des sauts (jump) inconditionnels (adressage absolu) ou conditionnels (adressage relatif). Pour les sauts conditionnels, le test sur la condition exigée se fait sur certains bits du registre d'état PSW, des divers registres ou sur la valeur de l’accumulateur. Il s'agit de sauts relatifs (au PC), c'est-à-dire calculés à partir de l'adresse qui contient l'instruction de saut : Exemple :
-49-
Saut conditionnel si A=0 (JZ : Jump If Zero) (code opération : 60) PC JZ PC+1 OFFSET K PC+2 XX (instruction suivante) ........................ . --> PC+2+K INSTRUCTION DU SAUT K est un nombre signé en complément à 2 : de 0 à 7F de 80 à FF
K = 0 à + 127 -> saut positif ou nul K = - 128 à - 1 -> saut négatif
Exemples : Saut positif
Saut négatif
PC 60 PC+1 03 PC+2 | PC+3 | PC+4 | PC+5 0007 xx 0008 xx 0009 xx
xx 10 03
1000 Avant CALL
0009 03
- contenu du PC :
xx 10 03
120A Avant RET