Cours 1 Unisat
Cours 1 Unisat
Cours 1 Unisat
Introduction aux
Microprocesseurs
Table de Matières
1. Rappels ............................................................................................................................... 1
1.1. Codage........................................................................................................................ 1
1.1.1. Notation positionnelle ........................................................................................ 1
1.1.2. Code binaire naturel ........................................................................................... 1
1.1.3. Code BCD/DCB ................................................................................................. 1
1.1.4. Codage des données alphanumériques ............................................................... 2
1.2. Système de numération .............................................................................................. 2
1.2.1. Conversion binaire-décimale.............................................................................. 2
1.2.2. Représentation des nombres négatifs ................................................................. 2
1.2.3. Représentation des nombres fractionnés en virgule fixe.................................... 3
1.3. Logique combinatoire ................................................................................................ 4
1.3.1. Décodeur ............................................................................................................ 4
1.3.2. Multiplexeur ....................................................................................................... 5
1.4. Logique séquentielle .................................................................................................. 5
1.4.1. Bascule RS ......................................................................................................... 5
1.4.2. Bascule RST....................................................................................................... 6
1.4.3. Bascule D ........................................................................................................... 6
1.4.4. Verrou (latch) ..................................................................................................... 6
1.4.5. Registres ............................................................................................................. 6
1.4.6. Sortie à 3 états .................................................................................................... 7
1.4.7. Mémoire ............................................................................................................. 7
1.5. Exercices .................................................................................................................... 8
2. Conception d'un Microprocesseur.................................................................................... 10
2.1. Introduction .............................................................................................................. 10
2.2. Architecture.............................................................................................................. 10
2.2.1. Bus d'adresses et de données............................................................................ 10
2.2.2. Bus de contrôle................................................................................................. 11
2.2.3. Horloge............................................................................................................. 12
2.2.4. Unité arithmétique et logique........................................................................... 12
2.2.5. Registres internes ............................................................................................. 12
2.2.6. Génération d'adresse......................................................................................... 13
2.3. Syntaxe d'instructions............................................................................................... 13
2.4. Jeu d'instructions ...................................................................................................... 14
2.5. Codes opératoires (op-code)..................................................................................... 14
2.6. Exécution de programme ......................................................................................... 15
2.7. Branchement............................................................................................................. 16
2.8. Indicateurs (drapeaux ou flags) ................................................................................ 17
2.9. Branchement conditionnel........................................................................................ 18
2.9.1. Branchement suivant Z..................................................................................... 18
2.9.2. Branchement suivant V .................................................................................... 18
2.9.3. Branchement suivant N .................................................................................... 18
2.10. Registre d'index .................................................................................................... 18
2.11. Architecture retenue ............................................................................................. 19
2.12. Modes d'adressage................................................................................................ 19
2.12.1. Inhérent............................................................................................................. 19
2.12.2. Direct ................................................................................................................ 19
2.12.3. Indexé ............................................................................................................... 20
2.12.4. Immédiat........................................................................................................... 20
2.13. Cycle d'instruction................................................................................................ 20
2.14. Jeu d'instruction complet...................................................................................... 20
2.15. Exemple de programmation ................................................................................. 21
2.16. Exercices .............................................................................................................. 22
3. Perfectionnement de notre processeur.............................................................................. 23
3.1. Notion de Pile........................................................................................................... 23
3.1.1. Architecture...................................................................................................... 24
3.1.2. Jeu d'instruction................................................................................................ 24
3.2. Sous programme....................................................................................................... 25
3.2.1. Mécanisme de sous programme ....................................................................... 25
3.2.2. Instructions relatives au sous programme ........................................................ 25
3.3. Interruption............................................................................................................... 26
3.3.1. Mécanisme de l'interruption ............................................................................. 26
3.3.2. Acquittement de l'interruption.......................................................................... 27
3.3.3. Interruption imbriquée...................................................................................... 27
3.4. Exercice.................................................................................................................... 28
4. Microprocesseur 68000 .................................................................................................... 29
4.1. Les bus...................................................................................................................... 29
4.1.1. Bus de données................................................................................................. 29
4.1.2. Bus d’adresse.................................................................................................... 29
4.2. Registres internes ..................................................................................................... 31
4.2.1. Registres de données ........................................................................................ 31
4.2.2. Registres d’adresse........................................................................................... 32
4.2.3. Compteur de programme.................................................................................. 33
4.2.4. Registre de statut .............................................................................................. 33
4.3. Modes d’adressage ................................................................................................... 34
4.3.1. Adressage registre direct .................................................................................. 35
4.3.2. Adressage immédiat ......................................................................................... 35
4.3.3. Adressage direct ............................................................................................... 36
4.3.4. Adressage registre indirect ............................................................................... 36
4.3.5. Adressage registre indirect avec post-incrémentation...................................... 36
4.3.6. Adressage registre indirect avec pré-décrémentation....................................... 37
4.3.7. Adressage registre indirect avec déplacement ................................................. 37
4.3.8. Adressage registre indirect avec index............................................................. 38
4.3.9. Adressage relatif PC......................................................................................... 38
4.4. Introduction au jeu d’instructions ............................................................................ 38
4.4.1. Instruction de chargement ................................................................................ 38
4.4.2. Opérations arithmétiques.................................................................................. 41
4.4.3. Opérations logiques.......................................................................................... 41
4.4.4. Opérations de branchement.............................................................................. 42
4.4.5. Opérations diverses .......................................................................................... 44
4.5. Pile............................................................................................................................ 45
4.6. Sous programme....................................................................................................... 45
4.6.1. BSR .................................................................................................................. 45
4.6.2. JSR ................................................................................................................... 46
4.6.3. RTS................................................................................................................... 46
4.7. Conclusion................................................................................................................ 46
5. Assembleur du 68000....................................................................................................... 47
5.1. Mise en mémoire...................................................................................................... 47
5.2. Style d'écriture.......................................................................................................... 47
5.3. Etiquette ................................................................................................................... 48
5.4. Définir des constantes .............................................................................................. 48
5.5. Réservation de mémoire........................................................................................... 48
5.6. Exemple.................................................................................................................... 48
6. Exercices .......................................................................................................................... 51
1. RAPPELS
1.1. Codage
Généralement, les bits les plus à gauche sont appelés poids forts ou MSB en anglais (most
significant bit).
Les bits les plus à droite sont appelés poids faible ou LSB en anglais (least significant bit).
10 0001 0000
11 0001 0001
Sur n bits : signe = bit de poids fort (0 : positif, 1 : négatif), n-1 bits = valeur absolue.
Intervalle de valeurs représentées pour n bits : [-2n-1 + 1, 2n-1 - 1]
2
Quelles sont les 2 représentations possibles pour zéro ?
Notations complémentés
Complément à 2 = complément à 1 + 1
-1 111
-2 110
-3 101
Intervalle de valeurs représentées pour n bits : [-2n-1 , 2n-1 - 1]
Notation excédentaire
Ajout au nombre de la valeur d'un excès (souvent translation de 2n-1, ainsi le bit de poids fort
fait office de bit de signe).
Intervalle de valeurs représentées pour n bits avec un excès de 2n-1 : [-2n-1 , 2n-1 - 1]
Intérêt : simplifie toutes les opérations ou les comparaisons (qui se font uniquement sur des
nombres positifs).
En binaire nous avons les mêmes principes. On parle de format. Par exemple le format 2,4
veut dire qu'il y a 2 digits binaires avant la virgule et 4 chiffres après la virgule. Ainsi, nous
interprétons les valeurs données ci-dessous en considérant ce format :
011001 => 01,1001 => 0*21 + 1*20 + 1*2-1 + 0*2-2 +0*2-3 +1*2-4 => 1,5625
001100 => 0,75
3
001000 => 0,5
Pour les nombres négatifs, on considère le complément à 2 :
110010 => -(001110) => -(0,875) => -0,875
111000 => -(001000) => -(0,5) => -0,5
1.3.1. Décodeur
Circuit permettant d'envoyer un signal à une sortie choisie. Il dispose de n lignes d'entrées et
2n lignes de sortie. La table de vérité d'un décodeur "2 vers 4'' (n = 2) est la suivante :
e1 e0 s0 s1 s2 s3
0 0 1 0 0 0
0 1 0 1 0 0
1 0 0 0 1 0
1 1 0 0 0 1
4
1.3.2. Multiplexeur
Circuit permettant de sélectionner une entrée parmi plusieurs. Il dispose de 2n entrées, 1 sortie
et n lignes de sélection.
Voici la réalisation d'un multiplexeur "4 voies'' (n = 2) :
1.4.1. Bascule RS
R S Qi Qi+1
0 0 x x
0 1 x 1
1 0 x 0
1 1 x interdit
5
1.4.2. Bascule RST
L'horloge peut être vue comme la synchronisation de l'odre d'apparition des variables
logiques.
1.4.3. Bascule D
Intérêt : pas d'état instable; mémorisation de l'entrée. La sortie est égale à l'entrée tant que le
signal de contrôle est à 1. Dès que le signal de contrôle passe à zéro, la sortie est verrouillée
indépendant du D.
D0 Q0 D0 Q0
D1 Q0 D1 Q0
D7 Q0 D7 Q0
RESET RESET
Enable Enable
1.4.5. Registres
Quand les sorties prennent les valeurs d'entrée uniquement sur un front montant (ou
descendant) du signal de contrôle, le verrou s'appellera registre. Ceci est schématisé par un
petit triangle sur le signal de contrôle :
6
SET
D0 Q0
D1 Q0
D7 Q0
RESET
Clock
Vcc
D D D D
Q0 Q1 Qn
La tension de ligne S est à 1 si les sorties de toutes les bascules sont en haute impédance. Si
au moins, une des sorties passe à zéro volt, la tension de cette ligne passe à zéro. Avec ce
circuit, quoi qu'il arrive, les bascules ne vont pas griller ! Ce câblage est aussi appelé "et
câblé" car il se comporte comme une porte "et" logique.
1.4.7. Mémoire
Une mémoire est un ensemble de registres précédé par un décodeur qui permet de
sélectionner un des registres. On distingue deux types de mémoire : RAM (mémoire vive)
(Random Acces Memory) et ROM (mémoire morte) (Read Only Memory).
Les ROM se programme une fois et leur contenu n'est pas modifié dans le circuit tandis que
les RAM sont fait pour sauvegarder les données au moment de fonctionnement normal du
circuit.
Le choix d'écriture ou lecture se fait par une entrée souvent appelée R / W . Si le circuit qui se
sert de la RAM veut écrire dans la RAM, il met la tension zéro sur cette broche et pour écrire
5 volts (1 logique).
7
De l'autre côté, il faut aussi des lignes d'adresse qui sont utilisées pour sélectionner un des
registres. Il y souvent une autre entrée (CS) qui sert à sélectionner le boîtier : si cette entrée
n'est pas validée, le boîtier ne réagit pas. Les mémoires sont souvent synchrones car ce sont
un ensemble de registre. On parle des mémoires asynchrones quand un ensemble de verrous
se trouve à l'intérieur de mémoire.
Ci-dessous, un exemple d'un EPROM commercialisé (Am29F010, 128 MO) est présenté.
1.5. Exercices
1- Conversion nombre entier signé vers binaire complément à deux. Pour les valeurs signées
ci-dessous donner si c’est possible la représentation en C’2 sur 8 bits.
100, -18, 128, -128, 18
8
2- Quel est équivalent décimal des valeurs suivantes :
(0111 0000)2 c’est le format binaire signé C’2
(0111 0000)2 c’est le format binaire non signé
(1111 0000)2 c’est le format binaire signé C’2
(1111 0000)2 c’est le format binaire non signé
(0111 0000)2 c’est le format (1,7) signé C’2
(0111 0000)2 c’est le format (1,7) non signé
(1100)2 c’est le format (1,3) signé C’2
(1111 1100)2 c’est le format (1,7) signé C’2
(0000 1100)2 c’est le format (1,7) signé C’2
3- Pour les valeurs décimales ci-dessous donner la représentation binaire à virgule fixe au
format (2,7) (arrondir là où il faut).
0.25, -0.25, 0.27, -0.27, 1.55, -2, -1, 1, 1.375, -1.375.
Quelle sont les valeurs maximale et minimal ?
5- Effectuer l’addition en base 2 et vérifier si le résultat est correct (dans un premier temps
prenez les valeurs signées C’2 et ensuit refaites le même exercice pour les valeurs non-
signée).
1100 + 1010
0100 + 0010
1010 + 0110