Vous êtes sur la page 1sur 20

Architecture des Ordinateurs


Travaux Pratiques
David Panzoli & Christophe Calmettes
david.panzoli@univ-jfc.fr
christophe.calmettes@univ-jfc.fr

Année 2016–2017

Table des matières


1 Manipulation de circuits intégrés et premiers circuits combinatoires [séances 1 et 2] . p. 2
2 UAL avec Logisim [séances 3 et 4]. . . . . . . . . . . . . . . . . . . . . . p. 5
3 Bascules et Registres [séance 5] . . . . . . . . . . . . . . . . . . . . . . . p. 8
4 Circuits séquentiels [séance 6]. . . . . . . . . . . . . . . . . . . . . . . . p. 10
5 Compteurs [séance 7] . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 12
6 Bus de données [séance 8] . . . . . . . . . . . . . . . . . . . . . . . . . p. 13
7 Mémoires [séance 9] . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 14
8 Unité centrale [séances 10 et 11] . . . . . . . . . . . . . . . . . . . . . . p. 16
9 Synthèse d’un micro-processeur [séance 12] . . . . . . . . . . . . . . . . . . p. 19

Les questions précédées du signe ^ sont à préparer à la maison. Cette préparation,


nécessaire au bon déroulement des travaux, sera prise en compte dans l’évaluation de
l’Unité d’Enseignement.
Architecture des Ordinateurs – TP no 1

1 Manipulation de circuits intégrés et premiers circuits com-


binatoires [séances 1 et 2]
Introduction
Les circuits utilisés fonctionnent en logique positive :

– la valeur logique 1 (niveau logique haut – H : High level) est matérialisée par un potentiel
électrique de +5 Volts ;
– la valeur logique 0 (niveau logique bas – L : Low level) est matérialisée par un potentiel électrique
de 0 Volts (référentiel masse).

Il est nécessaire, avant l’utilisation de tout circuit, de connaı̂tre les correspondances de ses broches
(entrées, sorties, alimentation). Les datasheets (tutoriels) des circuits disponibles en salle de TP
sont accessibles sur les ordinateurs.

Les entrées (respectivement les sorties) des circuits logiques réalisés dans les deux premières séances
seront matérialisées par des interrupteurs (respectivement des LEDs).

1.1 Première utilisation d’un circuit intégré


Réaliser le câblage d’une porte logique NAND et vérifier son fonctionnement. Pour cela, les étapes
suivantes devront être réalisées :
1. le circuit intégré comportant des portes NAND est le 7400 ; à l’aide du datasheet correspon-
dant, faire l’apprentissage du circuit et de ses broches ;
2. câbler le circuit sur la platine Labdec en idendifiant précisément l’alimentation, les entrées (à
connecter à des interrupteurs) et la sortie (à connecter à une LED) ;
3. tester le circuit réalisé.

1.2 Contrôle de parité


Il s’agit ici de réaliser un circuit combinatoire à 3 entrées et une sortie qui assure le contrôle de la
parité : si le nombre d’entrées égales à 1 est pair la sortie prendra la valeur 0, sinon la sortie vaudra 1.

Nous noterons e0 , e1 et e2 les entrées du circuit et s sa sortie.


1. ^ établir la table de vérité du circuit combinatoire ;
2. ^ montrer que l’expression booléenne de ce circuit s’écrit :

s = e0 e1 e2 + e0 e¯1 e¯2 + e¯0 e¯1 e2 + e¯0 e1 e¯2

2
Architecture des Ordinateurs – TP no 1

3. ^ montrer, en utilisant les outils de l’algèbre de Boole (notamment le théorème de De Morgan),


que cette expression est équivalente à :

s = e0 ⊕ e1 ⊕ e2

4. câbler le circuit sur la platine Labdec en choisissant les circuits intégrés nécessaires (portes
XOR–7486) ;
5. tester le circuit réalisé. Faire valider le bon fonctionnement.

1.3 Maximum
Le circuit combinatoire à réaliser doit renvoyer en sortie le maximum de deux entiers codés chacun
sur 2 bits.

1. ^ combien d’entrées et de sorties sont nécessaires pour répondre au cahier des charges ?
Choisir un nom pour chacunes de ces variables ;
2. ^ établir la table de vérité du circuit combinatoire ;
3. ^ calculer l’expression booléenne simplifiée de chaque sortie à l’aide d’une Table de Karnaugh ;
4. câbler le circuit sur la platine Labdec en choisissant les circuits intégrés nécessaires (portes
AND–7408, OR–7432, XOR–7486 et NOT–7404) ;
5. tester le circuit réalisé. Faire valider le bon fonctionnement.

1.4 Détection du nombre de 1


On souhaite réaliser un circuit combinatoire qui, à partir d’un nombre compris entre 0 et 7 (en base
10), détermine le nombre de 1 présents dans son écriture binaire (base 2).
1. ^ combien d’entrées sont nécessaires ? Justifier.
2. ^ combien de sorties sont nécessaires ? Justifier.
3. ^ choisir un nom pour chacune de ces variables et établir la table de vérité du circuit ;
4. ^ calculer l’expression booléenne simplifiée des sorties à l’aide d’une Table de Karnaugh ;
5. câbler le circuit sur la platine Labdec en choisissant les circuits intégrés adéquats ;
6. tester le circuit réalisé. Faire valider le bon fonctionnement.

1.5 Décodeur et Afficheur 7 segments


On veut réaliser partiellement un décodeur DCB (Décimal Codé Binaire) 7 segments. Il s’agit d’un
circuit qui reçoit, en entrée, 2 bits codant un chiffre décimal (0 à 3) et délivre, en sortie, 7 signaux
destinés à commander un afficheur constitué de 7 segments qui, allumés ou éteints, dessinent un
chiffre (un segment est allumé lorsque le signal de commande correspondant est au niveau haut).
1. ^ Faire l’étude complète de ce système combinatoire ;
2. Le réaliser et faire vérifier le bon fonctionnement.

3
Architecture des Ordinateurs – TP no 1

Figure 1 – Décodeur DCB 7 segments et exemples d’affichage

1.6 Soustracteur 2 bits


Le circuit intégré à utiliser est ici un additionneur 74283. La fonction à réaliser est une soustraction
de deux nombres A et B codé chacun sur 2 bits.
1. prendre connaissance du datasheet de l’additionneur (entrées, sorties, retenues d’entrée et de
sortie,. . .) ;
2. ^ faire un rappel sur le codage en complément à 2 ;
3. ^ à partir de la question précédente, proposer une solution qui permette, à partir d’un addi-
tionneur, de calculer une soustraction ;
4. la mettre en œuvre pour les nombres A et B (codés sur 2 bits). Faire valider le bon fonction-
nement.

1.7 Utilisation du comparateur 7485


En utilisant un comparateur (7485) et un additionneur (74283), réaliser un circuit – comprenant en
entrée un entier codé sur 4 bits – qui détermine si son entrée égale son complément à 2 : la sortie
vaut 1 en cas d’égalité, 0 sinon.
Faire valider le bon fonctionnement.

1.8 Utilisation de multiplexeurs 74151


On souhaite réaliser un circuit à deux entrées A et B de 2 bits chacune et une sortie sur 3 bits (2
bits de sortie plus une éventuelle retenue) permettant d’effectuer soit la somme somme A+B soit A
XOR B. Un fil de commande supplémentaire C permettra de choisir entre la somme (C=0) et XOR
(C=1).
Faire valider le bon fonctionnement.

4
Architecture des Ordinateurs – TP no 2

2 UAL avec Logisim [séances 3 et 4]


Introduction
Logisim sera le logiciel utilisé pour la suite des Travaux Pratiques.
Avant de se lancer dans la résolution des problèmes, il faut s’assurer que Logisim est correctement
installé sur sa machine.

2.1 Additionneur
1. ^ faire l’étude d’un additionneur complet de 2 nombres A et B de 1 bit chacun. L’additionneur
doit comporter 3 entrées (le code de A, le code de B et la retenue d’entrée Ci ) et 2 sorties
(le résultat codé sur 1 bits et la retenue de sortie Co ).
Le mettre en œuvre en séance ;

2. ^ Sur la base des enseignements de Numération & Codage du premier semestre, effectuer
l’opération d’addition suivante (en posant les retenues) :

1 1 1 0
+ 0 1 1 1

^ Identifier, pour chaque opération élémentaire (sur une colonne), quelles sont les retenues
d’entrée et de sortie ;
3. Associer 4 additionneurs du type précédent pour réaliser un additionneur complet de deux
nombres de 4 bits chacuns.

2.2 Réalisation d’une UAL


Le but de cet exercice est de câbler une Unité Arithmétique et Logique (UAL) de 1 bit sous la forme
de logique câblée classique. Cette UAL est complète, i.e. elle comporte des entrées et des sorties
(voir figure 2) qui permettent de tenir compte des reports et des retenues résultant éventuellement
des opérations. Ceci permet l’association directe de n UAL identiques (par de simples liaisons sans
autres opérateurs), afin de constituer une UAL de n bits. On construira donc une UAL en tranches

5
Architecture des Ordinateurs – TP no 2

qui ramène la compréhension du système de n bits à celle du système de 1 bit. L’UAL complète
de 1 bit devra comporter 5 entrées et 2 sorties. Deux des entrées définissent un code de sélection
(S1 et S0) qui doit permettre de commander 4 opérations différentes effectuées sur les 3 autres
bits d’entrée A, B et Ci. Les deux sorties, R et Co donnent les bits qui constituent le résultat de
l’opération.

A B

Co Ci
UAL 2
S1−0

R
Figure 2 – Entrées et Sorties de l’UAL

Les signaux Ci et Co correspondent aux retenues :

– Ci : report d’entrée (Carry in) prend en compte un bit de résultat partiel venant d’une éventuelle
autre UAL identique la précédant ;
– Co : report de sortie (Carry out) donne avec R le résultat de l’opération et peut servir de liaison
à une autre UAL suivante.

Le code S1 S0 de sélection conditionne l’opération à réaliser comme suit :

S1 S0 opération
1 0 ADD : A + B + Ci ; résultat sur R et Co (co report)
1 1 SUB : A − B − Ci ; résultat sur R et Co (co retenue)
0 1 XOR : OU EX entre A et B ∀Ci ; résultat sur R, Co = 0
0 0 AND : ET entre A et B ∀Ci ; résultat sur R, Co = 0
La structure d’une UAL de 4 bits est représentée sur la figure 3
1. ^ Sur la base des enseignements de Numération & Codage du premier semestre, effectuer
l’opération de soustraction suivante (en posant les retenues) :

1 0 1 0
- 0 1 1 1

2. Réaliser sous Logisim le circuit du soustracteur complet 1bit permettant de faire la soustraction
S = A - B, et prenant en compte les retenues entrante Ci et sortante Co .

6
Architecture des Ordinateurs – TP no 2

A B
4 4

A3 B3 A2 B2 A1 B1 A0 B0
Co Ci
UAL UAL UAL UAL

R3 2 R2 2 R1 2 R0 2
S1−0

R
Figure 3 – UAL 4 bits

3. Réaliser l’UAL 1 bit qui associe les 4 circuits ADD, SUB, XOR et AND.
4. Réaliser l’UAL 4 bits en associant 4 blocs UAL 1bit. Tester le circuit.

7
Architecture des Ordinateurs – TP no 3

3 Bascules et Registres [séance 5]


3.1 Bascules RS et D
1. ^ Le schéma de la bascule D est reporté sur la figure 4. Décrire les entrées, les sorties et
donner la table de transition de la bascule.

preset

D Q

Cp Q̄

clear
Figure 4 – Bascule D et table de vérité

2. Dans Logisim, câbler une bascule R-S asynchrone. Vérifier son fonctionnement ;
3. Modifier la bascule R-S créée précédemment pour en faire une bascule synchrone. Dans une
bascule synchrone, une entrée Cp est utilisé pour synchroniser les changements d’états ;
4. En utilisant la bascule créée précédemment, câbler enfin une bascule D.
Vérifier son fonctionnement et comparer votre bascule à celle fournie par Logisim (catégorie
Memory ).

3.2 Registre parallèle


1. En utilisant 4 bascules D, câbler dans Logisim un registre 4 bits à lecture et écriture parallèle
(la lecture et la modification de l’information porte sur les 4 bits simultanément). Deux com-
posants de type bouton seront utilisés, un comme générateur d’impulsion pour la commande
d’écriture (Cp), et un autre pour la remise à zéro du registre (Clear). Le contenu du registre
sera affiché sur un afficheur 7-segments (composant Hex Digit Display ) ;

E 4 Reg 4
Q

Cp clear

Figure 5 – Registre parallèle

8
Architecture des Ordinateurs – TP no 3

3.3 Registre série


1. Réaliser puis câbler un registre de 4 bits à lecture et écriture série. Prévoir la possibilité d’effacer
l’information qui contient (i.e. mettre le registre à zéro) ;
2. Transformer le registre créé précédemment pour en faire un compteur de Johnson. Remplacer
le bouton de la commande d’écriture par une horloge (composant Clock) et tester les différents
paramètres de fréquence de l’horloge (menu Simulate).

9
Architecture des Ordinateurs – TP no 4

4 Circuits séquentiels [séance 6]


4.1 Multiplieur
1. ^ Donner ci-dessous le schéma logique correspondant au circuit multiplieur vu en travaux
dirigés. Ce circuit possède 3 registres de 4 bits : R0, R1 et R2. Au départ, R0 et R1 contiennent
les nombres à multiplier, R2 est vide (valeur 0). À chaque front montant d’un signal d’horloge
H, le circuit réalise en parallèle les opérations R1 ← R1 − 1 et R2 ← R2 + R0, jusqu’à ce
que R1 soit nul. R2 contient alors le résultat de la multiplication.

2. Utiliser l’outil d’analyse combinatoire de Logisim pour créer un circuit décrémenteur 4 bits
dont la sortie S correspond à l’entrée décrémentée E de 1, soit S = E − 1.
3. À l’aide des composants adéquats et du décrémenteur, réaliser le circuit multiplieur sous
Logisim et tester en effectuant plusieurs multiplications.

4.2 Algorithme d’Euclide


1. ^ Donner ci-dessous le schéma logique correspondant au circuit pgcd vu en travaux dirigés. Il
permet à partir de 2 registres A et B de calculer le plus grand diviseur commun pgcd(A, B)
en mettant en œuvre l’algorithme d’Euclide, qui s’écrit comme suit :
tant que a 6= b faire
si a > b alors
a ← a - b;
sinon
b ← b - a;

10
Architecture des Ordinateurs – TP no 4

Un signal d’horloge H sera utilisé pour marquer chaque itération de l’algorithme. Une sortie
S sera positionnée à 1 lorsque le résultat a été calculé.

2. Implanter le circuit avec Logisim et vérifier que pgcd(15, 12) = 3, pgcd(60, 85) = 5 et
pgcd(84, 56) = 28 ;

4.3 Pair/impair
1. Implanter avec Logisim un circuit permettant d’exécuter l’algorithme suivant :
tant que a 6= 1 faire
si a est pair alors
a ← a / 2;
sinon
a ← a + 1;

4.4 Incrémenteur-décrémenteur
1. Modéliser un circuit avec Logisim qui utilise une horloge et un additionneur pour incrémenter
la valeur d’un registre 4 bits de 0 à F (de manière cyclique).
2. Modifier ce circuit pour en faire un décompteur qui décrémente la valeur du registre.
3. Enrichir à présent le circuit pour en faire un compteur-décompteur : Lorsque le compteur
atteint la valeur F, il devient un décompteur jusqu’à atteindre la valeur 0. Ensuite, il redevient
à nouveau un compteur, et ainsi de suite. Le sens de comptage (comptage ou décomptage)
pourra être stocké dans une bascule D.

11
Architecture des Ordinateurs – TP no 5

5 Compteurs [séance 7]
5.1 Compteur cyclique 7 états
1. ^ Réaliser un compteur cyclique synchrone à 7 états en utilisant des bascules D dont le code
de comptage est le suivant : 6→1→4→7→5→2→3→0.
2. Ajouter un signal de commande INIT0 permettant d’initialiser le compteur à l’état 0 et un
signal de commande INIT5 permettant d’initialiser le compteur à l’état 5

5.2 Association de compteurs


1. Réaliser un compteur synchrone cyclique à 10 états où le mode de comptage est le mode
binaire naturel, soit de 0 à 9. Afficher l’état du compteur grâce à un afficheur héxadécimal.
2. Combiner 3 compteurs à 10 états pour faire un compteur à 1000 états (i.e. de 0 à 999).

5.3 Compteur/décompteur
1. Réaliser un compteur synchrone à partir de bascules D dont le code de comptage est le suivant :
0 → 1 → 2 → 3 → 4 → 5 → 5. . . (une fois arrivé à l’état 5 le compteur y stationne)
2. Réaliser un décompteur synchrone à dont le code de comptage est le suivant : 5 → 4 → 3 →
2 → 1 → 0 → 0. . . (une fois arrivé à l’état 0 le décompteur y stationne)
3. En utilisant les deux questions précédentes concevoir un compteur configurable ayant une
entrée PM. Si PM=1 le compteur se comporte comme dans la question 1. Si PM=0 le
compteur se comporte comme dans la question 2. La valeur du compteur sera visualisée dans
un afficheur héxadécimal.
4. Enrichir votre compteur configurable pour qu’il passe automatiquement du mode compteur
au mode décompteur lorsqu’il atteint la valeur maximale (5), et réciproquement du mode
décompteur au mode compteur lorsqu’il atteint la valeur minimale (0).

12
Architecture des Ordinateurs – TP no 6

6 Bus de données [séance 8]


6.1 Bus
1. Connecter sur un bus de données de largeur 4 deux entrées et un afficheur héxadécimal. Vérifier
que le positionnement des deux entrées provoque un court-circuit dans le bus.
2. Modifier votre montage en intégrant des portes 3 états entre les sources de données et le bus.
Vérifier que l’on peut désormais positionner la valeur sur le bus à partir de l’une ou l’autre des
entrées.

6.2 Bus et registres


1. Positionner sur un bus de largeur 4 une entrée permettant d’envoyer des valeurs dans le bus
et un afficheur héxadécimal pour les visualiser.
2. Connecter sur le bus 3 registres de 4 bits que l’on appellera R0 , R1 et R2 . On utilisera des
portes 3 états pour isoler toutes les sources du bus.
3. En utilisant les commandes de barrière de bus et les commandes d’écriture des registres,
montrer expérimentalement que l’on peut entrer une valeur dans n’importe quel registre et
que l’on peut transférer le contenu de n’importe quel registre dans n’importe quel autre registre.

6.3 Bus, registres et additionneur


On considère le circuit suivant permettant d’effectuer l’addition des valeurs contenues dans 2 registres
parmi R0 , R1 et R2 et d’enregistrer le résultat dans 1 registre parmi R0 , R1 et R2 .
1. ^ Donner le chemin de données de ce circuit.
2. ^ Indiquer la suite des commandes (contrôle de barrière de bus, signal d’écriture, etc.)
nécessaires à l’addition R2 = R1 + R0 .
3. Réaliser le montage du circuit en utilisant un additionneur 4 bits.

13
Architecture des Ordinateurs – TP no 7

7 Mémoires [séance 9]
7.1 Réalisation d’un module SRAM élémentaire
1. ^ Donner le schéma d’un module SRAM qui contient 4 mots de 4 bit. Le module comptera 2
entrées de commandes : R/W̄ (1 = lecture, 0 = écriture) et Cl, une entrée d’adresse A1−0
et un bus entrées/sorties de données D3−0 .
2. Réaliser le circuit correspondant sous Logisim, en utilisant les composants suivants : décodeur
2→4, registres 4 bits et barrières de bus.
3. Tester la lecture et l’écriture dans le module en greffant sur le bus de données un afficheur
hexadécimal et une entrée 4 bits.

7.2 Utilisation du module ROM de Logisim


1. On considère un circuit composé

14
Architecture des Ordinateurs – TP no 7

– une mémoire de type ROM de 16 mots de 4 bits,


– un registre CP (compteur de programme) relié au bus d’adresse A3−0 de la mémoire,
– un registre RI (registre d’instruction) relié au bus de données D3−0 de la mémoire,
– un additionneur
et permettant d’effectuer indéfiniment :
(a) RI ← Mémoire (CP) //RI reçoit le contenu de la mémoire à l’adresse CP
(b) CP ← CP + 1
Réaliser ce circuit avec Logisim.
2. Écrire un contenu quelconque dans les 16 mots de la SRAM qui constituera un programme.
En utilisant un signal d’horloge pour donner la cadence du circuit, vérifier que l’on obtient bien
successivement les ”instructions” du programme de la mémoire dans le registre d’instruction
RI.

7.3 Permutations dans la mémoire


1. On dispose d’un module RAM contenant 16 mots de 4 bits, dont les valeurs sont chargées
manuellement. Ce module est relié à un bus de données sur lequel on greffe un registre R de
4 bits.
2. Réaliser et tester sous Logisim le montage du circuit permettant, sous les impulsions d’une
horloge, de permuter des valeurs aléatoirement dans la mémoire. Chaque permutation sera
opérée en 2 temps :
(a) lecture d’un mot de la RAM à une adresse aléatoire enregistrement dans R.
(b) choix d’une adresse aléatoire dans la RAM et enregistrement depuis R.
Note : pour la génération des adresses aléatoires, on utilisera le module de génération aléatoire
de Logisim.

15
Architecture des Ordinateurs – TP no 8

8 Unité centrale [séances 10 et 11]


8.1 Décodeur et séquenceur
Nous considérons dans cet exercice un circuit composé de 2 registres 4 bits (R0 et R1). On souhaite
que ce circuit puisse avoir 2 types de fonctionnalités :
– La première consiste à faire la somme de R0 et R1 et de mettre le résultat dans R0 ou R1
– La seconde consiste à initialiser R0 ou R1 à une valeur égale à 0, 1, 2 ou 3.

1. Représenter un circuit (le chemin de données) qui permet de réaliser ces 2 fonctionnalités

Voici maintenant le jeu d’instructions de l’assembleur que nous allons utiliser (toutes les instructions
sont codées sur 4 bits) :
Instruction Description
ADD dst Cette instruction ajoute le contenu des registres R0 et R1 et stocke le résultat
dans le registre dst. Le codage de cette instruction est le suivant : le premier
bit vaut 0 (pour indiquer qu’il s’agit de l’instruction ADD), le bit suivant
vaut soit 0 (si dest = R0) soit 1 (si dest=R1). Les 2 bits suivants valent 00.
Exemple : l’instruction 0100 représente l’instruction ADD R1 et permet donc
le transfert du contenu de R0+R1 vers R1.
MOV dst val Cette instruction initialise à val le registre dst. Le codage de cette in-
struction est le suivant : le premier bit vaut 1 (pour indiquer qu’il s’agit de
l’instruction MOV), le bit suivant vaut soit 0 pour R0 soit 1 pour R1. Les 2
bits suivants codent la valeur val. Par exemple, l’instruction 1110 représente
l’instruction MOV R1 2 et permet donc de mettre à 2 le registre R1.
2. Quel est le programme assembleur qui permet d’initialiser R0 et R1 à 3 puis de mettre la
somme dans R1 ?

3. Écrire un programme qui permet de mettre la valeur 7 dans le registre R0

4. Concevoir un décodeur d’instruction qui possède 1 entrées sur 4 bits pour recevoir une in-
struction et 2 sorties : add et mov.

16
Architecture des Ordinateurs – TP no 8

5. Concevoir ensuite le séquenceur associé permettant l’exécution des instructions lues à partir
d’une entrée 4 bits et exécutés lors de l’appui sur un bouton. Remarque : On ajoutera dans le
séquenceur une entrée activation qui permettra de synchroniser les sorties du séquenceur
sur le bouton de validation d’exécution de la commande.

8.2 Compteur de programme et registre d’instruction


On souhaite désormais construire un microprocesseur (rudimentaire) qui va lire et exécuter un pro-
gramme en langage machine stocké dans un module ROM (mémoire du programme) et qui manipule
des données dans une mémoire RAM (mémoire des données).

Le microprocesseur est construit sur une architecture 8 bits qui est composée des éléments suivants :
– La mémoire de données (6= de la mémoire programme), composée de 16 mots de 8 bits.
– Deux registres 8 bits R0 et R1 pouvant être chargés depuis la mémoire des données.
– RES, un autre registre contenant le résultat de R0+R1 et pouvant envoyer son contenu vers la
mémoire de données.
– Un “clavier” permettant d’écrire dans la mémoire de données des mots binaires de 0 à 7.
1. Construire le circuit avec Logisim en utilisant les composants disponibles (mémoires, registres,
barrières de bus, etc). Identifier et nommer les différents fils d’entrée permettant de piloter ce
circuit.

17
Architecture des Ordinateurs – TP no 8

Nous associons à ce circuit le jeu d’instructions (sur 8 bits) suivant :


Instruction Description
SET val adr Positionne à la valeur val le mot mémoire situé à l’adresse adr. L’instruction
SET débute avec le bit 0. Les 3 bits suivants permettent de coder val et
les 4 derniers permettent de coder adr. Exemple : SET 5 1 = 01010001
correspond à mettre la valeur 5 dans le mot 1 de la mémoire des données
LOAD reg adr Cette instruction lit le mot mémoire désigné par adr et le stocke dans le
registre reg (R0 ou R1). L’instruction LOAD commence par les 3 bits 100. Le
bit suivant code le registre reg (0=R0, 1=R1) et les 4 derniers bits codent
adr. Exemple : LOAD R0 6 = 10000110 charge dans le registre R0 le contenu
du mot mémoire 6.
STORE adr Cette instruction charge dans le mot mémoire désigné par adr le registre
RES. L’instruction STORE débute par les 3 bits 101. Le bit suivant est inutilisé
et les 4 derniers bits codent adr. Exemple : STORE 9 = 101Φ1001 signifie
charge dans le mot mémoire 9 le contenu du registre RES.
ADD Cette instruction fait la somme des registres R0 et R1 et met le résultat dans
le registre RES. L’instruction ADD commence par les 2 bits 11, les 6 bits de
poids faibles n’étant pas utilisés.

Pour lire et exécuter des programmes stockés dans une mémoire de programme, nous ajoutons à
notre circuit les éléments suivants :
– Deux registres : CP (compteur de programme) et RI (registre d’instruction)
– Un module mémoire ROM dans lequel est stocké le programme
2. Concevoir le circuit permettant de lire le programme et d’envoyer successivement les instruc-
tions dans le registre d’instruction.
3. Concevoir un décodeur d’instruction qui possède 1 entrée 8 bits pour recevoir une instruction
en provenance de RI et 4 sorties : SET, LOAD, STORE et ADD.
4. Concevoir ensuite le séquenceur permettant l’exécution des instructions lues dans le RI et
décodées.
5. Pour tester votre microprocesseur, écrire un programme permettant d’effectuer le calcul suivant
et de stocker le résultat dans la mémoire : 3 × 5 + 2 × 6

18
Architecture des Ordinateurs – TP no 9

9 Synthèse d’un micro-processeur [séance 12]


Dans ce dernier exerice, on synthétise les connaissances des séances précédentes pour construire
un micro-processeur capable d’exécuter un programme simple. Ce micro-processeur comprend les
composants suivants :
– Une mémoire RAM permettant de stocker le programme (segment de programme) et offrant une
zone de stockage des données (segment de données) à l’usage du programme.
– Une UAL capable d’effectuer un ensemble d’opérations arithmétiques ou logiques et permettant
de positionner des drapeaux dans un registre d’état RE.
– Un registre compteur de programme CP qui contient l’adresse en RAM de la prochaine instruc-
tion du programme à exécuter et un registre d’instruction RI qui contient l’instruction en cours
d’exécution.
– 4 registres de données numérotés D0 à D3 permettant de manipuler des données.

Le détail des fonctionnalités restantes doit être déduit de la description ci-dessous du langage
d’assemblage du micro-processeur. Chaque instruction est codée sur 8 bits. Les 3 premiers bits
(poids fort) codent l’instruction et les 5 suivants (poids faible) codent les éventuelles opérandes.

Instruction Description
MOV Di adr Charge le registre Di (avec i ∈ [0, 3]) à partir du mot mémoire dont l’adresse
est donnée par l’opérande adr (3 bits).
MOV adr Di Charge le mot mémoire à l’adresse adr (3 bits) à partir du registre Di (avec
i ∈ [0, 3]).
MOV Di val Positionne le registre Di (avec i ∈ [0, 3]) à la valeur val ∈ [0, 7].
ADD Di Dj Effectue l’opération Di = Di+Dj, avec i, j ∈ [0, 3]. Positionne les drapeaux
suivants dans le registre d’état : O (overflow).
SUB Di Dj Effectue l’opération Di = Di−Dj, avec i, j ∈ [0, 3]. Positionne les drapeaux
suivants dans le registre d’état : O (overflow).
MUL Di Dj Effectue l’opération Di = Di×Dj, avec i, j ∈ [0, 3]. Positionne les drapeaux
suivants dans le registre d’état : O (overflow).
CMP Compare les registres Di et Dj, avec i, j ∈ [0, 3] et positionne les drapeaux
suivants dans le registre d’état : Z (zéro), P (positif) et N (négatif).
JMP adr Saute à l’adresse adr indiquée sur 4 bits

1. Répondre aux questions suivantes pour paramétrer les composants du micro-processeur.


– Quelle est la taille du ou des bus de données du micro-processeur ?
– Quelle est la taille du ou des bus d’adresse ?
– Quelle est la taille du segment de données dans la mémoire RAM ?
2. Construire dans un circuit séparé l’UAL du micro-processeur ainsi que le registre d’état associé.
3. Construire le chemin de données du mico-processeur.
4. Construire le décodeur et le séquenceur permettant d’implanter la langage d’assemblage ci-
dessous. Vous devrez proposer une implémentation du langage machine associé au langage
d’assemblage.

19
Architecture des Ordinateurs – TP no 9

5. Tester les fonctionalités de votre micro-processeur en écrivant un programme dans le segment


de programme de la mémoire RAM.
6. Modifier votre micro-processeur pour remplacer l’instruction JMP par la nouvelle instruction
JZ adr (jump if zero) qui branche la programme à l’adresse indiquée lorsque le résultat de
l’opération ou précédente est zéro (i.e. le zéro signifie aussi l’égalité lors d’une comparaison).

20

Vous aimerez peut-être aussi