Cours Systemes Micro-Programmes Parti1
Cours Systemes Micro-Programmes Parti1
Cours Systemes Micro-Programmes Parti1
EMIG
SYSTEMES
MICRO-PROGRAMMES
II. Historique
Premiers calculateurs
Les tout premiers calculateurs, ancêtres de l'ordinateur numérique, furent imaginés et réalisés au XVIIe siècle, en
particulier par Wilhelm Schickard, Blaise Pascal et Leibniz. L'appareil de Pascal comportait une série de roues à
dix crans, chaque cran représentant un chiffre de 0 à 9. Les additions et les soustractions s'effectuaient en
tournant les roues dentées d'un certain nombre de crans. Leibniz améliora par la suite cette machine pour lui
permettre d'effectuer aussi des multiplications.
Machine à calculer de Pascal
Au début du XIXe siècle, Joseph-Marie Jacquard conçut un métier automatique en utilisant de fines plaques en
bois perforées qui contrôlaient le tissage de motifs compliqués. Puis, dans les années 1880, le statisticien
américain Hermann Hollerith eut l'idée d'utiliser des cartes perforées, similaires à celles de Jacquard, pour traiter
des données. En utilisant un système où les cartes perforées passaient sur des contacts électriques, il parvint à
compiler des informations statistiques pour le recensement de la population des États-Unis en 1890. En 1896, il
fonda la Tabulating Machine Corporation, qui devint par la suite la société IBM.
Machines différentielle et analytique
Au XIXe siècle, le mathématicien et inventeur britannique Charles Babbage découvrit les principes de
l'ordinateur numérique moderne. Il créa différentes machines, en particulier la machine différentielle et la
machine analytique. Bien qu'elle n'ait jamais été terminée, la machine différentielle était destinée à résoudre des
problèmes mathématiques avec une précision de vingt décimales. Babbage améliora ensuite cette machine pour
concevoir en 1833 la machine analytique, dont une partie seulement fut réalisée. Véritable précurseur de nos
ordinateurs, cette machine aurait été capable de stocker des instructions, d'exécuter des opérations
mathématiques et d'utiliser des cartes perforées comme support de mémoire. La plupart des historiens
considèrent Babbage comme le véritable inventeur de l'ordinateur numérique moderne, même si la technologie
peu avancée de l'époque l'empêcha de réaliser concrètement ses idées. Il fut dont le premier à décrire les
principes d’un calculateur d’application générale (machine pouvant répéter des séquences d’opérations et choisir
une série d’opérations particulière en fonction de l’état du calcul).
Premiers ordinateurs
Les premiers ordinateurs analogiques furent fabriqués au début du XXe siècle. Ils effectuaient leurs calculs grâce
à un système d'axes et d'engrenages. Ce type de machine permettait de fournir des approximations numériques
d'équations difficiles à résoudre autrement. Pendant les deux guerres mondiales, des systèmes analogiques
mécaniques, puis électriques, furent notamment utilisés comme pointeurs de torpille dans les sous-marins et
comme contrôleurs de visée dans les bombardiers.
Ordinateurs électroniques
Dès 1939, un prototype de machine électronique (1er ordinateur binaire à lampes : ABC – Antanasoff
Berry Computer) fut fabriqué aux États-Unis par John Atanasoff et Clifford Berry à l'Iowa State College. Il
comportait une mémoire de 60 mots de 50 bits et une unité arithmétique et logique. Bien que le programme ne
fut pas stocké en mémoire, l’ABC est souvent considéré comme le premier vrai ordinateur. Ce prototype fut
discrètement développé, et éclipsé par la présentation en 1945 de l'ENIAC (Electronic Numerical Integrator And
Computer), ordinateur et intégrateur numérique électronique proposé en 1942 par Presper Eckert et John
Mauchly. L'ENIAC contenait plus de 18 000 tubes à vide, 1500 relais, consommait 170 kW, pesait 30 tonnes,
couvrait une surface de 72 m2. Il était environ 500 fois plus rapide que le Mark 1 (environ 330 multiplications
par seconde). Cependant sa programmation s’effectuait à l’aide de fiches à brancher dans le tableau de
connexions. Le travail de programmation pouvait prendre plusieurs jours.
Pendant la même période, John Von Neumann, consultant sur l’ENIAC, proposa de coder le programme
sous forme numérique et de les enregistrer en mémoire, avec gain en souplesse et rapidité. Il jetait ainsi les bases
de l’architecture de l’ordinateur moderne. Il ne fut cependant pas le premier à réaliser cette machine.
Parallèlement, à Londres, fut mis au point pendant la Seconde Guerre mondiale Colossus, un ordinateur
numérique entièrement électronique. Élaboré par une équipe de scientifiques et de mathématiciens dirigée par
Alan Turing, Colossus fut opérationnel en décembre 1943. Comportant 1 500 tubes à vide, il fut utilisé pour
déchiffrer les messages radio codés des Allemands.
Des querelles entre Eckert, Mauchly et Von Neumann portant notamment sur la paternité de l’idée et
des brevets, retardèrent le projet EDVAC (Electronic Discret Variable Computer). Celui-ci fut devancé en 1948
par un prototype, appelé Manchester Mark 1, puis en 1949 par l’EDSAC (Electronic Delay Storage Automatic
Computer) première machine opérationnelle construite par Maurice Wilkes.
En 1948, William Shockley, John Bardeen et Wlter Brattain inventèrent le transistor bipolaire. Celui-ci
remplaça rapidement les lampes, apportant fiabilité et rapidité aux ordinateurs. À la fin des années 1950 furent
conçus des ordinateurs dits de deuxième génération, la taille et la consommation diminuèrent sensiblement. Le
premier ordinateur utilisant des transistors fut le TRADIC en 1955. A la même époque IBM commercialisa le
premier disque dur (5 disques de 61 cm de diamètre pour 5 Mo). Les mémoires à tore de ferrite étaient
également disponibles. Le PDP-8 de DEC fut le premier mini-ordinateur à être diffusé en grand série (50000
exemplaires).
La troisième génération, à partir de 1970, correspond à l’utilisation des circuits intégrés. L’Intel 4004,
le premier microprocesseur 4 bits, fut en 1971 le premier circuit intégré incorporant unité de calcul, mémoire et
gestion des entrées-sorties. Il comportait 2300 transistors. Le 8008 sortit un an plut tard. Le premier micro-
ordinateur, le Micral N, fut construit en 1973 par une entreprise française R2E. Depuis le début de 1980, le
niveau d’intégration des puces ayant largement progressé en surface et en densité, on parle de quatrième
génération.
j
ei i sj La logique combinatoire
Tableau de
(les sorties sont définies uniquement à partir des commande
variables d'entrée)
i j Interface
ei sj
Automatisme à
Le microprocesseur donne naissance au principe de la logique
programmée. Le fonctionnement n'est plus défini par un ensemble de logique câblée
circuits logiques, câblés entre eux, mais par une suite ordonnée
d'instructions stockées en mémoire et gérées par cet élément.
Nouveau synoptique : Actionneurs
Critères de choix Processus
avantage inconvénient Capteurs
logique câblée rapidité spécificité
logique programmée souplesse lenteur
V. Microprocesseur
V.1 Définition (1)
le microprocesseur, noté aussi M.P.U. (Microprocessor unit) ou encore C.P.U. (Central Processing Unit) est un
circuit intégré complexe réalisé en technologie ULSI (Ultra large scale intégration) capable d'effectuer
séquentiellement et automatiquement des suites d'opérations élémentaires ( fonctions logiques, arithmétiques ,
contrôle de mémoire et contrôle des circuits d’entrées sorties).
V.2 Son rôle
Ce circuit remplit deux fonctions essentielles :
le contrôle du système
Cette fonction se traduit par des opérations de décodage et d'exécution des ordres exprimés sous forme
d'instruction.
Les mots binaires qui sont traités sont des instructions puisqu’ils instruisent le microprocesseur de la fonction à
exécuter. Pour faire fonctionner un système à microprocesseur, il faut prévoir une suite ordonnée d’instructions,
cette suite est appelée programme.
Le programme est logé dans une mémoire externe au microprocesseur, ce dernier reçoit les instructions
séquentiellement est exécute la fonction spécifiée.
Le microprocesseur est le cœur de tout système à microprocesseur. Il n’a aucune utilité fonctionnelle par lui-
même. Il commande les fonctions des autres éléments du système. Il est généralement destiné à commander
plusieurs périphériques (clavier, écran, imprimante, afficheur, moteur, etc.). L’interfaçage avec ces différents
périphériques se fait par l’intermédiaire de circuits d’entrées/sorties.
Circuits d’entrées /
Microprocesseur
Périphériques
Mémoires
Section des Bus de données
sorties
UAL REGISTRES
Bus d’adresses
Section de
COMMANDE et de
SYNCHRONISATION Bus de commandes
L’´élément de base d’un calculateur est constitué par l’unité centrale de traitement (UCT, CPU : Central
Processing Unit). L’UCT est constituée :
• d’une unité arithmétique et logique (UAL, ALU : Arithmetic and Logic Unit) :
c’est l’organe de calcul du calculateur ;
• de registres : zones de stockage des données de travail de l’UAL (opérandes, résultats intermédiaires) ;
• d’une unité de contrôle (UC, CU : Control Unit) : elle envoie les ordres (ou commandes) à tous les autres
éléments du calculateur afin d’exécuter un programme.
La mémoire centrale contient :
• le programme `a exécuter : suite d’instructions élémentaires ;
• les données `a traiter.
L’unité d’entrées/sorties (E/S) est un intermédiaire entre le calculateur et le monde extérieur.
L’unité de transfert est le support matériel de la circulation des données.
Les échanges d’ordres et de données dans le calculateur sont synchronisés par une horloge qui délivre des
impulsions (signal d’horloge) `a des intervalles de temps fixes.
Définition (2)
Un microprocesseur consiste en une unité centrale de traitement (UAL + registres + unité de contrôle)
entièrement contenue dans un seul circuit intégrée. Un calculateur construit autour d’un microprocesseur est un
microcalculateur ou un microordinateur.
Remarque : un circuit intégré qui inclut une UCT, de la mémoire et des périphériques est un microcontrôleur.
Une case mémoire peut être lue ou écrite par le microprocesseur (cas des mémoires vives) ou bien seulement lue
(cas des mémoires mortes).
Le microprocesseur échange des informations avec la mémoire et l’unité d’E/S, sous forme de mots binaires, au
moyen d’un ensemble de connexions appelé bus. Un bus permet de transférer des données sous forme parallèle,
c’est-à-dire en faisant circuler n bits simultanément.
Les microprocesseurs peuvent être classées selon la longueur maximale des mots binaires qu’ils peuvent
échanger avec la mémoire et les E/S : microprocesseurs 8 bits, 16 bits, 32 bits, ...
On distingue trois types de bus :
• le bus d’adresses permet au microprocesseur de spécifier l’adresse de la case mémoire `a lire ou à écrire ;
• le bus de données permet les transferts entre le microprocesseur et la mémoire ou les E/S ;
• le bus de commande transmet les ordres de lecture et d’écriture de la mémoire et des E/S.
Remarque : les bus de données et de commande sont bidirectionnels, le bus d’adresse est unidirectionnel :
seul le microprocesseur peut délivrer des adresses (il existe une dérogation pour les circuits d’accès direct à la
mémoire, DMA).
Registre d’état
Reg. D’instruction
UAL
B C
E F
H L
Unité de COMMANDE et de SP
Décodeur PC
TEMPORISATION
• Une Unité Arithmétique et logique (UAL), qui effectue les différents traitements (opérations
arithmétiques, logiques et test) ;
• Une Unité de Commande (UC), qui va chercher dans la mémoire chaque instruction à exécuter pour la
décoder et générer tous les signaux nécessaires pour l’exécution de l’instruction.
• Des Registres, utilisés pour le stockage provisoire des informations à l’intérieur du microprocesseur.
Cet ensemble est interconnecté au travers de différents bus interne qui relient tous les différents éléments du
microprocesseur.
VI.1.1.1 L'unité Arithmétique et Logique (UAL)
Son rôle :
L’UAL (ALU : Arithmetic and Logical Unit) est l’unité fonctionnelle où sont effectuées les opérations
arithmétiques, logiques et les testes sur les données. Toute instruction qui modifie une donnée fait toujours appel
à l'UAL. La nature de l’opération à mener sur les données est déterminée par les signaux de l’unité de
commande. Les données, qui sont traitées, proviennent soit de la mémoire, soit de l’unité d’E/S. les résultats du
traitement sont transférés dans la mémoire ou à l’unité d’E/S.
L'entrée de L'UAL est connectée au bus interne via :
- Des registres "temporaires".
- Un registre particulier appelé "accumulateur".
La sortie de l'UAL est connectée uniquement à l'entrée de l'accumulateur.
L’UAL comprend au minimum :
• Un additionneur ;
• Un complémenteur (pour la soustraction) ;
• Un décaleur (pour la division et la multiplication) ;
• Des parties logiques diverses.
Noter :
Les deux entrées sont précédées par une mémoire tampon.
On les appelle encore des registres tampons ou verrou. Ces registres permettent de stocker des octets aux entrées
de l'U.A.L. L'UAL étant constitué d'une logique combinatoire, elle est dépourvue de moyen propre de stockage.
Ce type de registre ne peut être manipulé par le programmeur. Il lui est totalement transparent.
L’exécution d’une instruction demande le stockage temporaire de données. La mémoire interne du CPU est
découpée en deux (2) types de registres :
• Les registres visibles pour l’utilisateur qui permettent au programmeur d’optimiser les référence à la
mémoire.
• Les registres de contrôle et de statuts, utilisés par l’unité de commandes pour contrôler l’activité du
CPU et par des programmes du système d’exploitation pour contrôler l’exécution des programmes.
Un registre utilisateur est un registre référençable par les instructions exécutées par le CPU. On trouve
différentes catégories de registres :
- Données : ne peuvent être employés pour le calcul d’adresse ;
- Adresses : souvent dévolus à un mode d’adressage particulier (contenant des valeurs de base ou
d’index) ;
- Conditions (flags) : constitués d’une suite de bits indépendants dont chacun est positionné en fonction
du résultat d’une opération ;
- Autres : n’ont pas de fonction spécifique.
VI.1.1.2.2 Registres de contrôle et de statuts
En général, ces registres ne sont pas visibles pour l’utilisateur. Quatre (4) registres sont essentiels à l’exécution
d’une instruction, ils sont utilisés pour l’échange avec la mémoire principale :
Figure 4 : Accumulateur
Il en est de même pour les déplacements et transferts des données d'un endroit à un autre comme :
- De mémoire à mémoire.
- De mémoire à unités d'entrée-sortie (I/O).
Cette action se fait en deux temps :
Source vers Accumulateur et ensuite Accumulateur vers destination.
Les instructions supportées par un accumulateur sont très nombreuses.
Au niveau de la programmation, il représente une grande souplesse d'utilisation!
Les autres registres ne permettent que des opérations limitées.
Certains microprocesseur, possèdent des accumulateurs de longueur double tel D chez Motorola et HL chez Intel
- dissociés en deux et généralement baptisés individuellement A et B ou H et L respectivement.
Gros avantage présenté par un µp possédant plusieurs accumulateurs : les opérations logiques et arithmétiques se
font entre accumulateurs limitant ainsi les accès (transferts) avec l'extérieur.
C’est un registre sur 8, 16, 32 ou 64 bits selon le microprocesseur.
Appelé encore Compteur Programme (P.C. Program Counter) ou Compteur Ordinal (C.O.)
Son rôle consiste à pointer TOUJOURS le premier octet d'une instruction.
Le programme à exécuter est une succession d'instructions ordonnées (chaque instruction pouvant prend
plusieurs octets!) qui se trouve rangé dans une zone mémoire, généralement à des adresses successives.
Le P.C. "repère" le premier octet de chaque instruction du programme. L’exécution de l’instruction incrémente
automatiquement le compteur ordinal.
Dans le cas où le PC à une taille de 16 bits, cela lui permettrait d'adresser 65536 adresses mémoire soit
64 k octets (le champ mémoire).
Notons que le PC est connecté au bus interne des données.
A la mise sous tension, une valeur particulière est déposée sur le bus d'adresses (Dans le cas du 6809,
cette valeur est $FFFE).
Le contenu des cases mémoires ($FFFE-$FFFF) représente en général l'adresse où se trouve le premier octet de
la première instruction du programme.
!! Le P.C. pointe toujours l'adresse du début de l'instruction suivante. (A retenir, car parfois il est utile de
connaître l'adresse présente.)
Il est possible de recharger le [P.C.] avec une adresse qui ne correspond pas au déroulement séquentiel du
programme. On trouve les détournements conditionnel et inconditionnel.
La figure suivante illustre les différentes étapes d’exécution d’une instruction :
Adresse 1
Pointeur d’Instruction
Exécution
C’est un registre constitué d’un ensemble de bascule qui caractérise l’état de fonctionnement du
microprocesseur. Ces bascules sont affectées après l’exécution d’une instruction. Elles nous renseignent sur les
résultats obtenus après une opération effectuée par l’UAL. après traitement sur les données
L'existence de ces résultats permet d'écrire des programmes avec des branchements conditionnels (nouvelle
adresse dans le C.I.).
En fonction de l'état des bits de ce registre le microprocesseur peut, alors, exécuter des programmes différents.
Le microprocesseur prend en quelque sorte des "décisions".
Les bits les plus couramment utilisés sont :
a- Le bit de retenue (C : Carry)
Ce bit est dans l'état actif lorsqu’une retenue arithmétique est générée ; le huitième bit du résultat de l'opération
génère une retenue dans le cas de mot de 8 bits ( dans le cas de mot de 16 bits ce serait donc le 16ème bit).
b- Le Bit de Débordement ou dépassement ( O : Over flow)
Cet indicateur est utilisé que dans le cas des opérations arithmétiques faisant appel à la représentation qui peut
amener à un résultat erroné.
c- Indicateur de zéro (Z : Zero)
Ce bit est actif lorsque l'opération a pour effet de mettre tous les bits d'un accumulateur ou d'un registre à la
valeur logique 0 (très utilisé pour réaliser des compteurs).
d- Le bit de signe (S )
Information qui indique que le bit le plus significatif (MSB) du contenu de l'accumulateur est un 1 logique.
e- Masque d’interruption (I : Interrupt)
Cet indicateur permet de valider ou inhiber les interruptions provenant des circuits extérieurs. Dans le cas où les
interruptions sont validées le microprocesseur peut être interrompu pour exécuter d’autres tâches (sous
programme d’interruption).
f- Demi-retenue (H : Half carry)
Ce bit est mis à 1 dans le cas d’une retenue du 4ème bit vers le 5ème (du 8ème vers le 9ème pour un 16 bits).
e- Parité (P : Parity)
La plus part des microprocesseurs ne dispose pas de ce bit d’état ; il indique si le nombre de bits à 1 d’un registre
est pair ou impair. P H I S Z O C
Retenue
Débordement
Résultat nul
Résultat négatif
Masque
d’interruption
Demi-retenue
Parité
Figure 7 : Exemple de registre d'état
La pile est une partie de la mémoire RAM adressée par le microprocesseur, elle est utilisée pour faire des
sauvegardes de données (les registres par exemple) lorsque celle est nécessaire.
Le pointeur de pile SP pointe le sommet de cette pile.
La pile est une structure LIFO (Last In, First Out).
Le microprocesseur d’INTEL par exemple utilise deux instructions pour accéder à la pile :
- L’instruction PUSH permet de sauvegarder le contenu d’un registre dans la pile. Le SP est
décrémenté automatiquement avant une opération PUSH ;
Exemple : PUSH AX (AX [SP])
- L’instruction POP permet d’extraire de la pile un contenu d’un registre déjà sauvegardé. Le SP est
incrémenté automatiquement après une opération POP.
Exemple : POP AX ( [SP] AX).
Le Registre d'adresses ou (R.A.) sert d'interface entre le bus des données interne et le bus des adresses.
Il "pilote" le bus d'adresses du microprocesseur.
Son contenu provient de différentes sources :
• Le Compteur d'instruction
• Un registre général
• Un emplacement mémoire
Le contenu du registre d'adresse pointe la zone mémoire utile au microprocesseur.
!! Une fois que le premier octet de l'instruction en cours est décodé...
Le contenu du Compteur d'Instructions est changé (contient l'adresse du début de l'instruction à venir).
Le contenu du Registre d'adresses change! Donc [C.I.] ≠ [R.A.]
Ce changement correspond...
Soit à une incrémentation du contenu afin de lire l'information complémentaire de
l'instruction en cours.
En plus des registres sus-cités, les microprocesseurs peuvent procéder d'autres destinés à faciliter la tâche du
programmeur. On les nomme registres généraux. Leur nombre et leur taille différent selon les microprocesseurs.
Ce ne sont pas des registres puissants (tel un accumulateur) puisqu'ils n'ont pas de liaison directe avec la sortie
de l'U.A.L. Ces registres peuvent néanmoins affecter le Registre d'Etat.
Parfois, ils peuvent constituer couplé par deux - appelé paire de registre (ex : BC chez Intel ou D chez Motorola).
Ainsi, il est possible de réaliser des opérations sur un mot (ex : incrémentation de la paire).
Ils servent généralement de registre intermédiaire dans le calcul.
Exemple : soit à faire le calcul suivant : y=[(x+y)-z] avec x=4000, y=5000 et z=1000.
AX= x = 4000 ; BX= y =5000 ; CX = z =1000.
1ère solution 2ème solution
MOV AX,4000 MOV AX,4000
ADD AX,5000 MOV BX,5000
SUB AX,1000 MOV CX,1000
ADD AX,BX
SUB AX,CX
(Exemple avec le 8086). MOV BX,AX
La logique de contrôle est pilotée par le Registre d'Instruction via le décodeur d'instruction. Il reçoit l’ordre de la
fonction sous la forme d’un code binaire appelé instruction.
Cette unité joue en quelque sorte un rôle d'intendance puisqu'elle décide de la disponibilité du bus à tel ou tel
élément logique. La logique de contrôle possède une architecture complexe et très spécialisée. L'élément central
est représenté par le décodeur d'instructions qui décode les informations (premier octet) stockées dans le R.I.
pour générer les signaux nécessaires à l'exécution de l'instruction.
La logique de contrôle génère sur les lignes de contrôle des niveaux logiques qui activent les différents circuits
environnant tels que mémoires et circuits I/O.
Cette unité fournit, à partir d'un signal de référence qui est l'horloge, tous les signaux de synchronisation utiles au
bon fonctionnement de l'ensemble.
Cette horloge est crée à partir d'un oscillateur interne qui utilise un signal en provenance d'un quartz externe.
Deux actions complémentaires à noter :
Cette unité assure :
Le contrôle de mise sous tension du microprocesseur (initialisation des registres).
8
Horloge
8 256 sélections
Séquenceur
Décodeur
différents circuits
de l’UAL
256
(verrouillage)
Disons pour l'instant, que c'est une requête présentée à la logique de contrôle par des éléments extérieurs
(périphériques).
VI.1.1.4 Bus interne
C’est un ensemble de fils par les quels transitent les informations binaires (données, adresses ou commandes).
Le microprocesseur est relié aux éléments extérieurs (mémoires, E/S,…) par des lignes d’entrées et /ou de
sorties (brochages du circuit intégré).
Ces lignes peuvent être groupées en quatre (4) parties :
- Bus d’adresses
- Bus de données
- Bus de commandes
- Signaux de commandes
En plus de ces 4 groupes, il faut citer les brochages servant pour l’alimentation du microprocesseur.
Ces broches unidirectionnelles permettent d’adresser les mémoires (RAM, ROM) et /ou les circuits
d’entrées sorties. Ces adresses sont fournies par le microprocesseur au bus d'adresse du système. La
taille du bus d’adresse est mesurée en nombres de bits qu’il peut adresser (exemple : 16, 20, 24, 32, 64
bits).
Ce bus est en logique 3 états.
Ces broches sont bidirectionnelles. Elles permettent la communication avec le bus des données interne
du microprocesseur. C’est à travers ce bus que les données transitent entre le microprocesseur et la
mémoire (RAM ou ROM) et les circuits d’entrées sorties.
Il est généralement sur 8, 16, 32 ou 64 bits. Le sens du bus est commandé par les opérations de lecture
et d’écriture.
Dans certain microprocesseur, une partie ou la totalité du bus de données est multiplexé avec quelques
lignes du bus d’adresses. Par exemple dans les cas du microprocesseur 8085 d’INTEL , les bits A0-A7
du bus d’adresses sont multiplexés avec les bits D0-D7 du bus de données. Le 8085 possède une
commande ALE ( Adresse Latch Enable) qui permet de verrouiller l’adresse A0-A7 dans un registre
extérieur.
Il a les mêmes caractéristiques électriques que pour le bus d’adresse, c’est un bus en logique 3 états.
Ce bus est constitué d’un ensemble de lignes destinées à contrôler les opérations sur les mémoires et les
E/S. Les principales commandes sont :
• Lecture mémoire (RD ou READ) ;
• Ecriture mémoire (WR ou WRITE) ;
• Lecture périphérique ;
• Ecriture périphérique.
Certains microprocesseurs disposent seulement des commandes de lecture et écriture mémoire ; dans ce
cas les circuits d’entrées / sorties sont considérés comme des cases mémoires.
Selon les microprocesseurs, il y’a une, deux ou trois alimentations et une masse. Certains
microprocesseurs ne nécessitent qu’une seule alimentation de +5Volts.
Exemple :
Rangement en mémoire :
Tous les microprocesseurs fonctionnent en mode synchrone, c’est à dire que leur travail est cadencé par une
horloge. La vitesse d’exécution d’une instruction dépend de la fréquence de l’horloge. L’exécution d’une
instruction est obtenue par une suite de ‘’micro cycle d’horloge’’ générée par l’unité de commande.
L’oscillateur fournissant le signal d’horloge peut être intégré sur la puce silicium du processeur. Ce n’est
généralement pas le cas pour au moins deux raisons :
Tout d’abord, la fréquence d’oscillation est sensible à la variation de température. Or celle d’un microprocesseur
n’est pas stable. Il serait possible d’observer une dérive fatale, la fréquence augmentant avec la température et la
température augmentant avec la vitesse de fonctionnement.
Cela poserait également des problèmes de synchronisation avec les composants externes au CPU.
Par ailleurs en embarquant une horloge dans la puce du processeur, la fréquence de celui ci serait figée par le
constructeur. Or les galettes de silicium ne sont jamais parfaitement homogènes. Les performances peuvent
varier selon les zones. Le constructeur serait alors obligé d’ajuster la fréquence de l’oscillateur au plus bas, en
prenant un facteur de sécurité. Alors qu’actuellement, les processeurs sont triés et vendus à un prix variant selon
leur vitesse de fonctionnement.
On préfère donc un oscillateur interne synchronisé sur un signale d’horloge externe, souvent fourni par un
oscillateur à quartz.
1. Ceux qui disposent d’un oscillateur intégré dans la même puce, en conséquence il suffit de leur
connecter un quartz ou un réseau RC externe pour fixer la fréquence d’horloge.
R
C Horloge
Horloge
Quartz
CPU
CPU
2. Ceux qui ne disposent pas d’oscillateur intégré dans la puce, en conséquence il est prévu en dehors
du CPU.
Oscillateur
Horloge CPU
Généralement les fabricants des microprocesseurs prévoient des circuits intégrés spécialisés qui permettent de
générer l’horloge.
1. Recherche (Fetch) ;
2. Décodage (Decode) ;
3. Exécution (Execute).
La première phase est la phase d’accès à l’instruction (Fetch), le contenu du compteur Ordinal (PC) est placé sur
le bus d’adresse et une case mémoire est sélectionnée. La mémoire reçoit un ordre de lecture, les données sont
transférées à l’intérieur du microprocesseur vers le registre instruction. Le cycle d’accès Fech est terminé.
Le deuxième cycle est le cycle de décodage (Decode). En effet le contenu du registre d’instruction est décodé
par l’unité de commande : le code de l’instruction est alors identifié.
Pendant que l’instruction est décodée, le pointeur d’instruction est incrémentée de façon à pointer vers
l’instruction suivante, puis le processus de lecture et de décodage des instructions recommence.
L e troisième cycle est le dernier cycle est le cycle d’exécution (Execute), dans cette étape l’unité de commande
génère les signaux appropriés et l’instruction est exécutée. Cette étape est plus ou moins longue suivant la
complexité de l'instruction.
A la suite de chaque instruction, un registre du microprocesseur est actualisé en fonction du dernier résultat :
c’est le registre d’état du microprocesseur. Chacun des bits du registre d’état est un indicateur d’état ou flag
(drapeau).
Toutes ces étapes (lecture de l’instruction, décodage, exécution) sont synchronisées par un séquenceur qui assure
le bon déroulement des opérations :
Pour exécuter le programme contenu dans la mémoire centrale, le séquenceur du microprocesseur exécute lui-
même un programme appelé micro-code, contenu dans une mémoire morte à l’intérieur du microprocesseur.
Le séquenceur est dirigé par une horloge qui délivre un signal de fréquence donnée permettant d’enchaîner les
différentes étapes de l’exécution d’une instruction :
Chaque instruction est caractérisée par le nombre de périodes d’horloge (ou microcycles) qu’elle utilise (donnée
fournie par le fabricant du microprocesseur).
Exemple : horloge `a 5 MHz, période T = 1/f = 0, 2 µs. Si l’instruction s’exécute en 3 microcycles, la durée
d’exécution de l’instruction est : 3 × 0,2 = 0, 6 µs.
L’horloge est constituée par un oscillateur `a quartz dont les circuits peuvent être internes ou externes au
microprocesseur.
La longueur d’une instruction peut être sur 8, 16, 32 ou 64 bits. Dans le cas où la longueur de l’instruction serait
supérieure au mot traité, l’unité de commande doit retourner vers la mémoire pour transférer les mots suivants
successivement à l’intérieur du microprocesseur
Le premier mot de l’instruction contient toujours son code opération (opcode), c’est à dire le code binaire qui
indique la nature de l’opération à exécuter.
Les autres mots représentent généralement les données qui doivent être utilisées par l’instruction. Ces
informations ne sont pas envoyées au décodeur.
Des relations avec l’environnement grâce à des capteurs, des relais, des systèmes
électromécaniques, des convertisseurs A/N et N/A, etc.
Des mémoires de masse : bandes magnétiques, cartes perforées, disques magnétiques souples
et rigides, cassettes magnétiques, disques optiques, etc.
…
Selon leurs principes de fonctionnement les circuits d’E/S peuvent se classer principalement en deux
catégories :
- Les circuits d’E/S parallèles ;
- Les circuits d’E/S séries ;
VIII.1 Circuits d’E/S parallèles
La transmission entre les circuits d’E/S et le périphérique se fait sur un ensemble de fils en parallèle (n
bits).
RAM ROM
Microprocesseur
Bus d’adresses
Bus de données
Bus de commandes
I/O
Périphériques
X. Conclusion
L’arrivée du microprocesseur a provoqué un grand progrès dans la commande et le traitement de
l’information par l’introduction des systèmes à microprocesseur entre autre l’ordinateur.
Le système à microprocesseur est devenu actuellement un outil indispensable.
Noter que nous évoquons ici uniquement les registres qui apparaissent explicitement dans l'écriture
des instructions, et pas les registres intermédiaires.
AH AL
BH BL
IP CS
CH CL
DS
DH DL SS
SI 16
ES
DI
BP + x
SP EU
Interface avec Bus
externe
BUS INTERNE (16 Bits)
Indicateurs ALU
UC
BIU
File d’attente
Fig. 1 : Organisation interne du 8086
a) Les registres généraux de données et d’adresses
Avec ces registres, on peut effectuer les opérations arithmétiques et logiques. Il y a 8 registres à 16 bits chacun (Fig.
2). Les 4 registres AX, BX, CX et DX sont scindés en deux registres de 8 bits chacun.
15 8 7 0
AH AL
Accumulateur
AX
BH BL
Registres
généraux
Base
BX
CH CL
Compteur
CX
DH DL
Donnée
DX
SI Index Source
adressage
Registres
DI Index Destination
BP Pointeur de Base
SP Pointeur de Pile
IP Pointeur d’instructions
FLAGS Registre d’Etats
CS Segment de Code
segmentation
Registres de
DS Segment de Données
ES Segment « Extra »
SS Segment de Pile
Les 4 autres registres sont des registres d’adressages à l’intèrieur d’un segment :
SI : (Source Index) sert comme pointeur pour les opérations sur les chaînes et aux calculs d’adresses.
DI : (Destination Index) sert comme pointeur pour les opérations sur les chaînes et aux calculs d’adresses.
BP : (Base pointer) il a la même fonction que BX. Il sert comme pointeur de base.
SP : (Stack Pointer) pointe le sommet de la PILE de sauvegarde des données de l’utilisateur.
O D I T S Z A P C
Fig. 3 : Registre d’Etat du 8086
C CF (Carry Flag) Indicateur de Retenue : il prend la valeur 1 si le bit de haut niveau a été perdu, sinon il sera mis à zéro.
Exemple 1 : MOV AL, 82H soit 1000 0010
ADD AL,92 H + 1001 0010
1 0001 0100 soit : 14 H dans AL
CF et (CF) = 1 retenue.
Z ZF (Zero Flag) Indicateur de zéro : ZF sera mis à 1 si le résultat de l’opération est zéro et sera mis à 0 dans tous les autres
cas.
S SF (Signe Flag) Indicateur de signe : SF=1 si le résultat est négatif est SF=0 si il est positif.
T TF (Trap Flag) Indicateur de mode pas à pas (Trace) : TF fait effectuer au microprocesseur les instructions pas à pas.
Quant TF est positionné à 1, le 8086 génère une interruption après l’exécution de chaque instruction. TF est mis à 0 lorsque le
registre d’état est envoyé dans la pile.
I IF (Interrupt Flag) Indicateur d’autorisation d’interruption : IF autorise ou interdit les interruptions masquables.
D DF (Direction Flag) Indicateur de direction : il indique que la manipulation d’une chaîne de caractères s’effectue dans le
sens croissant ou décroissant.
O OF (Overflow Flag) Indicateur de dépassement : OF est positionné chaque fois qu’il y’a dépassement avec un nombre
signé. OF = 1 dans le cas où une retenue sera placée dans le bit de haut niveau, mais ne sera pas perdue ; dans les autres cas
OF =0.
Remarque : DF, IF, TF sont des bits de contrôles et non d’états.
c) L’Unité Arithmétique et Logique :
l’UAL réalise le opérations suivantes :
Arithmétiques, Logiques, Incrémentations, Décrémentations, etc.
En plus l’UAL effectue les comparaisons et gère les indicateurs (Flags) qui donnent une idée sur les résultats des
opérations.
d) L’Unité de Commande.
Prend les instructions à partir de la liste d’attente est les transmet à l’unité d’exécution ; pendant ce temps l’Unité
d’Interface Bus continue à remplir la file d’attente de telle façon que la file d’attente soit toujours alimenté et contient toujours
des instructions à exécuter. Pendant que l’Unté d’Exécution exécute une instruction, l’Interface Bus cherche en mémoire les
instructions suivantes et les place dans la file d’attente de 6 octets de profondeur.
Les données circulent entre la mémoire centrale (MC) et l’Unité d’Exécution à travers
l’interface de mémoire.
Le 8086 a un Bus de données de 16 bits. La lecture des mots d’instructions se fait dès qu’il y’a deux
places libres dans la file d’attente, et la lecture des octets se fait dès qu’il y’a une place vide dans la
file d’attente. Quand la file d’attente est vide, l’EU attend que l’Interface de Bus place des instructions
dans la file d’attente. Quand l’Unité d’Exécution effectue un saut dans le programme, le contenu de la
file d’attente est alors effacé et les instructions s’y trouvant ne sont plus à exécuter.
Les Bus d’Adresses et de Données sont multiplexés dans le temps. Un Cycle d’Accès à la mémoire
ou à un Port d’E/S utilise au moins quatre périodes d’horloge (CLK).
Les instructions sont lues et placées avant exécution deux octets par deux octets dans la file d’attente.
A ce moment le bus est inoccupé. L’exécution d’une instruction peut être plus rapide que le
remplissage de la file d’attente.
b) La file d’attente.
Le 8086 dispose d’une file d’attente de 6 (six) octets permettent de stocker les instructions en attente d’exécution.
Cette technique, dite du QUEUE, permet d’augmenter les performances du système. C’est une structure « parallèle »,
permettant une vitesse de traitement appréciable.
c) Les registres de calcul d’adresses (IP et Segments).
Ces quatre registres permettent au microprocesseur d’adresser 256 ko de mémoire. Le 8086 accède aux autres
parties de la mémoire par le changement des contenus des registres segments. Ces registres sont chargés au travers de AX,
parce qu’il n’existe pas d’instructions qui permet de transférer directement les données immédiates dans ces registres. Les
registres de segments sont des registres à usages spéciaux. Le microprocesseur utilise un ou plusieurs registres de segment
pour accéder à la mémoire. Ces registres permettent au programmeur d’accéder simultanément à quatre zones d’adresses
différentes. Chaque zone d’adresse peut contenir jusqu’à 64 ko de données. Ces registres peuvent être lus et modifiés par
programmation.
GND 1 40 VCC
39 AD15
AD14 23 38 A16 /S3
AD13
AD12 4 37 A17 /S4
AD11 5 36 A18 /S5
AD10 6 35 A19 /S6
AD9 7 34 BHE /S7
AD8 8 33 NM/MX
AD7 9 32 RD
AD6 10 31 HOLD
11
8086 30 HOLDA
AD5
AD4 12 29 WR
AD3 13 28 M/IO /S2
AD2 14 27 DT/R /S1
AD1 15 26 DEN /SO
AD0 16 25 ALE
NMI 17 24 INTA
INTR 18 23 TEST
CLK 19 22 READY
GND 20 21 RESET
AD0 – AD15 : (bidirectionnel), Bus multiplexé d’Adresses et de Données ; Bus de Données de 16 bits
et les 16 bits de poids faible du Bus d’Adresses.
A16/S3 – A19/S6 : (sortie), Partie haute du Bus d’Adresses (4 bits de poids forts) et 4 bits d’Etats
multiplexés du processeur.
BHE /S7 : (Byte High Enable) Sélection de l’octet le plus haut sur le bus de données (D8 – D15) et le
bit d’Etat S7. En mode lecture ou en mode écriture (que ce soit en configuration Minimum ou
Maximum) du microprocesseur sur des octets, le signal BHE valide l’octet de poids fort. Si
l’instruction porte sur un octet le microprocesseur indique s’il s’agit de l’octet de poids fort ; si
l’instruction porte sur un mot de 16 bits le microprocesseur lit deux octets.
READY : Entrée/Sortie lente, indique aussi la fin de transfert et synchronise avec la périphérique.
TEST : Broche de test utilisé par l’instruction WAIT pour la synchronisation avec les éléments
externes.
S0, S1, S2 : Bits d’Etats. Le décodage de ces trois bits par le circuit 8288, fournit les signaux sur le
bus de contrôle (Tab. 1).
S0 S1 S2 Type de transfert
0 0 0 Prise en compte d’une interruption.
0 0 1 Sélection du mode lecture d’Entrée/Sortie.
0 1 0 Sélection du mode d’écriture d’E/S.
0 1 1 HALT.
1 0 0 Recherche d’une instruction.
1 0 1 Sélection du mode de lecture de la mémoire
1 1 0 Sélection du mode d’écriture de la mémoire
Tab. 1 : Signaux d’Etats caractérisant un type de transfert.
RQ/ GT0 , RQ/ GT1 : (Request / Grant) Demande d’accès au Bus et autorisation de
fonctionnement en multiprocesseurs.
DT/ R : (Data Transmit/Receive) Contrôle de la direction des transferts pendant les temps T2, T3 et
T4 ; autrement dit : définit le sens de passage des buffers bidirectionnels placés sur le Bus de
Données.
DEN : (Data Enable) Validation du Latch des Données, et activation de ces buffers sur le Bus de
Données.
- DEN = 0 les buffers sont actifs.
- DEN = 1 les buffers sont en haute impédance. Le sens de passage est fixé par les conditions
suivantes :
o DT/ R = 1 le transfert se fait du microprocesseur vers l’extérieur.
Si
o Si DT/ R = 0 le transfert se fait de l’extérieur vers microprocesseur.
ALE : (Adress Latch Enable) Validation du Latch d’Adresses , pendant le temps T1 du Cycle
d’Horloge , il donne le signal de mémorisation de l’adresse dans le Latch.
LECTURE :
Si le microprocesseur désire lire le contenu de la mémoire à une adresse précise, il émettra
cette adresse par les broches d’adressages. Des signaux de contrôle seront émis par d’autres
broches pour indiquer que la fonction est une lecture de la mémoire. Ces signaux sont décodés et la
demande est transférée à la puce appropriée en respectant une limite de temps (fig. 5).
Pendant le cycle T1 :
Le 8086 envoie une adresse sur 16 bits et active les signaux suivants :
• M/ IO : pour sélectionner la mémoire d’E/S.
• DT/ R : pour sélectionner les sens de transfert de l’amplificateur bidirectionnel
8286/8287.
• BHE : pour valider du Bus (poids fort).
Pendant ce cycle les poids d’adresses AD0 – AD15, ainsi que BHE seront stable ; ceci pour
conserver l’information d’adresse et de sélection pendant le transfert. Cette adresse est sauvegardée
dans les registres des puce 8282/8287 validées par le signal ALE.
Pendant le cycle T2 :
• Au début de cycle les lignes d’adresses passent à l’état Haute Impédance et BHE
prend la valeur de 1 ;
• Au même moment RD passe à l’état bas. ;
• En ce moment le microprocesseur sera prêt à recevoir une donnée.
•
Le signal DEN (validation du 8286/8287) passe ensuite à l’état bas autorisant le
chargement de la donnée qui apparaît sur le Bus au milieu du cycle T2, et reste stable
pendant les cycles T3 et T4.
Pendant le cycle T3 :
• Les circuits d’adresses indiquent par l’intermédiaire de la broche (READY) du 8086 que la
donnée est prête.
Pendant le cycle T4 :
• Les lignes DEN , RD , DT/ R reviennent à l’état haut indiquant la fin de la lecture.
ECRITURE :
L’opération d’écriture suit les même étapes que la lecture, à la seule différence que c’est la
ligne WR qui est utilisée à la place de la ligne RD .
Pendant le cycle T2 :
• WR passe à l’état bas et DT/ R reste à l’état haut, pour indiquer qu ‘à ce moment
le microprocesseur 8086 transfère des données vers l’extérieur par l’intermédiaire des
puce 8226 et 8287.
T1 T2 T3 T4 T1
CLK Du prochain cycle
M/IO
ALE
AD15-AD0
WR
Vcc
MN/MX
M/IO
INTA Pour le Contrôle
RD
du bus
WR
8086 DT/R
DEN STB
ALE
OE
8282
BHE
AD0-AD15
A16-A19
STB
STB
8286
Après l’exécution d’un sous-programme d’interruption, l’instruction IRET restaure CS, IP et le registre d’états.
Les indicateurs IF et TF retrouvent leurs états d’origines.
L’adresse sur 20 bits avec des nombres de 16 bits est réalisée par :
+
15 0
Adresse Physique Adresse envoyée sur le Bus
• rapidité d'exécution
• code compact (peu d'octets)
• on peut absolument tout faire
• on peut optimiser les calculs
Le mode d’adressage caractérise la façon dont est obtenue l’adresse des opérandes d’une instruction. Plus un
microprocesseur offre de mode d’adressage, plus le programme sera puissant.
On ajoute le déplacement au contenu de SI ou DI. Ce déplacement est sur 5 ou 16 bits et se passe dans DS.
EA = (SI) : indirect indexé
EA = (DI) : indirect indexé
EA = (SI) + déplacement : indirect indexé et déplacement
EA = (DI)+ déplacement : indirect indexé et déplacement
Corrige le résultat binaire d'une multiplication en 2 nombres ASCII en un nombre décimal BCD
Exemple :
MUL AL, BL ;avec AL=37H et BL=39H donne AX=0C3FH
AAM ;donne AX=0603H (soit 7x9=63 en décimal)
SHR destination, (1 ou CL) : Décalage logique à droite non signé de la donnée destination de n bits avec
retenue
0 CF
SAL destination, (1 ou CL) : Décalage arithmétique à gauche signé de la donnée destination de n bits avec
retenue (utilisez SHL à sa place même fonction)
SAR destination, (1 ou CL) : Décalage arithmétique à droite signé de la donnée destination de n bits avec
retenue
CF
ROR destination, 1 (ou CL) : Rotation droite de donnée destination de n bits sans retenue
CF
RCL destination, compteur (ou CL) : Rotation gauche de donnée destination de n bits avec retenue
CF
RCR destination, compteur (ou CL) : Rotation droite de donnée destination de n bits avec retenu
CF
LOOPx déplacement
Saut conditionnel a IP + déplacement tant que CX <>0 + CX=CX-1
CALL opérande Appel d'un sous-programme direct ou indirect avec retour sur RET
L’opérande est l’adresse qui indique où le contrôle doit être transférer. Le contexte (CS et IP ou IP) est empilé.
Stockage d’une donnée de l’accumulateur dans une chaîne de données pointée par ES:DI et
décrémentation de DI (si DF=1) ou incrémentation de DI (si DF=0) de 1 (STOSB) ou 2 (STOSW)
HLT Pas d'opérande : Arrêt du microprocesseur; réactivé par une interruption INT (non masquée),NMI.
LOCK Pas d'opérande : Préfixe d'activation du signal LOCK pour verrouillage l’accès externe aux bus durant
l'instruction suivante.
WAIT Pas d'opérande : Met le microprocesseur en attente tant qu'il est occupé.
GND 1 40 VCC
AD14 2 39 AD15
AD13 3 38 A16 /S3
5 36 A18 /S5
AD11
6 35 A19 /S6
AD10
34 BHE /S7
AD9 7
AD8 8 33 NM/MX
AD7 9 32 RD
AD5 11 30 HOLDA
AD4 12 29 WR
NMI 17 24 INTA
INTR 18 23 TEST
CLK 19 22 READY
GND 20 21 RESET
Brochage du 8086
Caractéristiques du MC68000 :
• Registres de données et d’adresses de 32 Bits
• 8 Mo de mémoires adressable directement
• 56 Instructions Puissantes
• Entrées/ sorties par instructions mémoires
• 14 modes d’adressages
• 2 MIPS (million d’instructions par seconde) à 20MHz
• Existant dans les fréquences suivantes 8, 10, 12, 16 & 20 MHz (MC68HC000 et MC68EC000)
• Existant dans les fréquences suivantes 10, 16 & 20 MHz (MC68SEC000)
• Existant dans les fréquences suivantes 8, 10, 12 & 16 MHz (MC68HC001)
D1
D2
D3
D4
D5
D6
D7
A1
A2
A3
A4
A5
A6
POINTEUR DE PILE UTILISATEUR A7
POINTEUR DE PILE SYSTEME A’7
Notons également le rôle particulier des deux registres d’adresse A7 et A7 bis, encore appelé USP (user stack
pointer) et SSP (supervisor stack pointer). SP ou A7 contient l’adresse du pointeur de pile relatif au mode
courant, c’est-à-dire utilisateur ou superviseur.
• Pointeur de pile utilisateur ( A7) (USP : User Stack Pointer). Le microprocesseur utilise le registre A7,
comme pointeur de pile. Lorsque le bit S=0, le pointeur de pile est utilisé comme pointeur de pile
superviseur.
• Un registre de pile système (superviseur) de 32 bits (A7) (SSP : Supervisor Stack Pointer). Quand le bit
S du registre d’état vaut 1, le pointeur de pile est utilisé comme pointeur de pile superviseur. Le rôle du
pointeur de pile est de contenir l’adresse du début de la zone mémoire dans laquelle les informations
sont rangées. Cette zone de mémoire peut être utilisée par le système comme par l’utilisateur.
• PC ou program counter
Il contient l’adresse de la prochaine instruction à exécuter.
31 23 0
COMPTEUR ORDINAL
15 8 7 0
T S I2 I1 I0 X N Z V C
Fig. Registre d’Etats
C’est le registre d’état (CCR), qui comporte des bits indicateurs ou flags. Seuls les cinq premiers bits de l’octet
utilisateur sont significatifs pour le programmeur. Ces indicateurs (Flags) renseignent le programmeur sur l’état
du processeur et par conséquent sur le résultat après traitement d’une instruction arithmétique ou logique.
X, N, Z, V, C : indicateurs arithmétiques qui peuvent avoir des sens différents selon les opérations…
Z Zero zéro
N negative bit de poids fort ou de signe
C Carry retenue
X Extend retenue non signée
V pverflows overflow signé
Exemple : pour un move, seul N et Z sont affectés mais pas C et V. Pour une opération arithmétique N, Z, C, V
sont affectés.
C : Carry (retenue) : ce bit est positionné lors d’une opération arithmétique. Les manipulations de données et
opérations logiques n’affectent pas C.
V : Overflow (débordement) : ce bit est l’indicateur de débordement. Il est positionné à 1 si le résultat (en
complément à 2) d’une opération arithmétique déborde.
Lors de manipulation d’instructions de chargement, stockage et opérations logiques, l’indicateur V sera
positionné à 0.
Z : Zero (Zéro: résultat nul) : Z est mis à 1, si le résultat de l’opération exécutée est nul. Si le résultat de
l’opération n’est pas nul, Z est positionné à 0.
N : Négatif : si N est positionné à 1, le résultat de l’opération exécutée est négative.
X : Extension : cet indicateur est sollicité par le processeur lors d’opérations d’addition et soustraction en
décimal.
S : Status (état du processeur) : S = 1 (mode superviseur) autorise le programmeur à accéder à toutes les
ressources logicielles et matérielles. Il peut utiliser toutes les instructions du 68000, adresser les mémoires de
données et de programme et solliciter les pointeur de pile superviseur et utilisateur.
S = 0 : fige le processeur en mode utilisateur.
T : mode Trace (ou Pas – à – Pas) : après chaque instruction, le microprocesseur teste de manière interne le bit
T du registre d’états.
Si T = 0, le microprocesseur passe à l’instruction suivante.
Si T = 1, le microprocesseur exécute un programme dont le début est pointé par le vecteur TRACE, de
plus par combinaison du mode TRACE et l’instruction HALT, l’exécution du programme peut se faire pas à pas
(cycle par cycle).
I0, I1, I2 : masque d’interruption : l’utilisateur peut masquer une demande d’interruption jusqu’à un certain
niveau grâce aux 3 bits : I0, I1, I2. La priorité se fait dans le sens ascendant.
Exemple : I0 =0, I1=0 et I2=1 soit I2I1I0 100 qui correspond à la valeur décimale 4.
Une interruption de nivaux inférieur ou égal sera ignorée, par contre une interruption de niveau 5,6 et 7 sera prise
en considération.
Le mode de fonctionnement du processeur 68000 est déterminé par l’état logique du bit S.
Si S = 1 , le processeur fonctionne en mode superviseur.
Si S = 0 , le processeur fonctionne en mode utilisateur.
Les privilèges réservés au mode superviseur sont plus importants que ceux du mode utilisateur.
Sortie FC0 AS
d’état FC1 R/W Contrôle
du µp FC2 UDS de bus
LDS Asynchrone
68000 DTACK
Contrôle E
de bus VMA
BR Contrôle
synchrone VPA
BG d’arbitrage
BGACK du bus
• A1 – A23 : lignes d’adresses (sortie) : le bus d’adresses est non multiplexé, permet d’adresser 8 Mo de
mémoire .
• D0 – D15 : lignes de données (bidirectionnelles, trois états) : 16 lignes bidirectionnelles non
multiplexées, assurant le transfert des données de 16 ou de 8 bits ( D0-D7). D0-D7 étant utilisé aussi
pour véhiculer le numéro du vecteur d’interruption.
• AS : Adress Strobe (sortie , trois états) : indique la validation de l’adresse, informe la périphérie que
l’adresse présente sur le bus d’adresse est électriquement stable.
• R/ W : Read/ Write (sortie, 3 états) : lecture ou écriture, fixe la voie d’échange sur le bus de données.
• UDS : Upper Data Strobe (sortie) : identifie l’octet haut de données de 16 bits.
• LDS : Lower Data Strobe (sortie) : identifie l’octet bas de données de 16 bits.
UDS LDS RW D15–D8 D7–D0
Haut Haut — Pas données valides Pas données valides
Bas Bas Haut Données Bits 15–8 valides Données Bits 7– 0 valides
Haut Bas Haut Pas données valides Données Bits 7– 0 valides
Bas Haut Haut Données Bits 15–8 valides Pas données valides
Bas Bas Bas Données Bits 15–8 valides Données Bits 7– 0 valides
Haut Bas Bas Données Bits 15–8 valides Données Bits 7– 0 valides
Bas Haut Bas Données Bits 15–8 valides Données Bits 7– 0 valides
• DTACK : Data Transfer Acknowledge (sortie) : le processeur est informé qu’il y’a transfert de
données sur le bus.
• BR : Bus Request (entrée) : indique au processeur qu’un dispositif externe réclame le bus.
• BG : Bus Grant (sortie) : fournie l’accord du 68000 pour q’un dispositif externe prenne possession du
bus. Le 68000 prévient son environnement qu’il va céder le bus à la fin du cycle en cours.
• BGACK : Bus Grant Acknowledge : confirme au 68000 que le dispositif externe est en possession du
bus.
• IPL0 , IPL1 , IPL2 : Interrupt Priority Level (entrées) : permettent au processeur de connaître le
niveau de priorité d’une interruption.
Niveau Etat de la ligne de Niveau d’interruption
d’interruption contrôle masquée demandée
demandée IPL2 IPL1 IPL2
0 Haut Haut Haut Pas d’interruption demandée
1 Haut Haut Bas 0–1
2 Haut Bas Haut 2–0
3 Haut Bas Bas 3–0
4 Bas Haut Haut 4–0
5 Bas Haut Bas 5–0
6 Bas Bas Haut 6–0
7 Bas Bas Bas 7–0
Niveaux d’interruptions et valeur du masque
• BERR : Bus Error (entrée) : Bus erreur déclenche la Trap « BUS ERROR » dans le cas d’un anomalie
matérielle. Ce signal est généré par un circuit MMU (Memory Management Unit) . Elle informe le
processeur de l’anomalie lors de l’exécution du cycle en cours.
• RESET : (bidirectionnelle) :
o En entrée, il permet d’initialiser le processeur et son environnement. Le STACK système et le
compteur de programme sont chargés
o En sortie, initialise exclusivement l’environnement du processeur. Le traitement de ce signal
n’affecte pas les registres internes du processeur
• HALT : (bidirectionnelle )
o En entrée, indique l’arrêt du processeur et son initialisation.
o En sortie, indique une anomalie qui provoque l’arrêt du processeur.
• E : Enable (sortie) : permet la synchronisation de l’organe externe avec le processeur. Ce signal est
généré à partir d’un horloge interne au 68000 et représente une référence temps pour synchronisation
des circuits.
• VPA : Valid Peripheral Adress : indique au processeur qu’il est en communication avec un
périphérique synchrone.
• VMA : Valid Memory Adress : en sortie, indique l’adresse sur le bus est valide en fonctionnement
synchrone.
• FC0, FC1, FC2 : Function Code (sortie, 3 états) : l’état de fonctionnement du processeur superviseur
ou utilisateur, et utilisateur, et si l’information est de type donnée ou programme. Ces sorties
permettent de multiplier les capacités d’adressages.
Code de la fonction sortie Temps du cycle
FC2 FC1 FC0
Bas Bas Bas Réservé / Non défini
Bas Bas Haut Donnée utilisateur
Bas Haut Bas Programme utilisateur
Bas Haut Haut Réservé / Non défini
Haut Bas Bas Réservé / Non défini
Haut Bas Haut Donnée superviseur
Haut Haut Bas Programme superviseur
Haut Haut Haut Confirmation d’interruption
Sorties des Codes Fonctions
Vue du
dessous
Exemple :
MOV.W D1, $0020 * D1 : source et $0020 : destination . les 16 bits de poids faible du registre
de donnée D1 sont transférés vers l’emplacement de destination dont l’adresse est $0020.
NOT D1 * Complémente à 1 le contenu du registre D1
EXG D1, D2 * Echange les contenus de D1 et D2.
Exemple :
MOV.W A1, $21FE * A1 : source et $21FE : destination (AE). Le mot de poids faible du registre
d’adresse est transféré vers l’emplacement destination dont l’adresse est $21FE.
Le registre d’adresse peut spécifier la destination ; dans ce cas la taille ne peut être que le mot ou le long mot,
mais pas l’octet.
Exemple :
MOV.W $1000, A1 * transfert du contenu de l’emplacement dont l’adresse est $1000
vers l’emplacement destination.