Vous êtes sur la page 1sur 40

Ecole Nationale Suprieure dInformatique et de Mathmatiques

Appliques

Architecture :
Circuits numriques et lments darchitecture
1re anne
Anne scolaire 20142015

Consignes
Les exercices de ce recueil sont classs en 4 catgories :
Les exercices avec la mention "Prparation" sont proposs pour vous aider prparer les sances de TDs ; il est recommand de rsoudre ces exercices avant les
sances de TD.
Les exercices avec la mention "Pour aller plus loin..." sont proposs pour vous
aider consolider les notions vues pendant les sances de TD ; il est recommand
de rsoudre ces exercices aprs la sance de TD.
Les exercices avec la mention "Mthodologie" sont tudis en sance. Leur correction est fournie dans lenonc.
Les exercices sans mention sont ceux qui seront tudis pendant les sances ; il est
recommand de prparer ces exercices avant la sance de TD.
Toutes les questions traites en sance disposent dune correction la fin du fascicule.
Lenseignant vous donnera le numro correspondant chaque question.

TD 1
Portes de base et minimisations de fonctions boolennes

Prparation

Ex. 1 : Codage des entiers naturels


Question 1 Remplir un tableau contenant les valeurs en base 2, en base 10 et en base 16 des entiers
naturels entre 0 et 15 (inclus).
Question 2 Comment peut-on calculer facilement une valeur en hexadcimal partir de sa valeur
en binaire ? Convertir en hexadcimal la valeur binaire 1011010111002 .
Question 3 Faire les additions suivantes en binaire : 44 + 21 et 200 + 100 sur 8 bits 1 . Que constatezvous pour le rsultat de la 2e addition ? Comment peut-on dtecter ce phnomne ?
Question 4 Quel intervalle dentiers naturels peut-on coder sur n bits ? Combien de bits faut-il pour
coder m valeurs diffrentes (avec m 2) ?

Prparation

Ex. 2 : Circuit comparateur dentiers


Dans cet exercice, on travaille sur des entiers A et B cods sur 4 bits, ce quon notera A = a3 a2 a1 a0
et B = b3 b2 b1 b0 . Pour construire les circuits demands, on suppose quon dispose de portes avec au
maximum 4 entres.
Question 1 Quelle porte lmentaire produit 1 en sortie ssi ses deux entres sont gales ?
Question 2 Construire un circuit prenant en entre 2 entiers A et B et produisant une sortie eg
valant 1 ssi ces 2 entiers sont gaux.
Question 3 Etendre ce circuit pour ajouter une sortie z valant 1 ssi A vaut 0.
Question 4 Ajouter une sortie imp valant 1 ssi le nombre de bits composant B et valant 1 est
impair. Par exemple, si B = 510 = 01012 alors imp = 0 et si B = 1410 = 11102 alors imp = 1.

Mthodologie

Ex. 3 : Conception et minimisation de circuits combinatoires sur un


exemple lmentaire
On travaille sur la fonction majorit de trois variables valant "vrai" ssi la majorit des paramtres
de la fonction valent 1.
Table de vrit de la fonction Majorit
1. Cest dire que les oprandes et le rsultat de lopration sont cods sur 8 bits.

termes canoniques

M aj(a, b, c)

a.b.c

a.b.c

a.b.c

a.b.c

N.B : un "terme canonique" est le produit (AND) de toutes les variables de la fonction sous
forme normale (a) ou complmente (a). On recherche une expression somme de produits donc on ne
sintresse quaux termes correspondants aux 1 de la fonction.
Expression boolenne canonique de la fonction M aj(a, b, c)
Cest lexpression de la fonction M aj(a, b, c) en fonction des paramtres a, b et c, sans chercher
minimiser cette expression. Cest donc la somme des termes canoniques dduits de la table de vrit :
M aj(a, b, c) = a.b.c + a.b.c + a.b.c + a.b.c.
Circuit implantant cette fonction
Pour dessiner le circuit implantant cette fonction, on nutilisera ici que des portes de bases AND,
OR 2 entres ainsi que des portes INV.
a

M aj(a, b, c)

Minimisation de lexpression de la fonction

On montre ici comment on peut minimiser lexpression dune fonction en utilisant le calcul boolen.
On part de :
M aj(a, b, c) = a.b.c + a.b.c + a.b.c + a.b.c
On remarque que les simplifications suivantes sont possibles, grce la rgle x.y + x.y = y :
a.b.c + a.b.c = b.c
a.b.c + a.b.c = a.c
a.b.c + a.b.c = a.b
Faut-il choisir une (et une seule) de ces simplifications ? non, car on a aussi la rgle x + x = x. On
peut donc rcrire lexpression de la fonction Majorit comme ci-dessous :
M aj(a, b, c) = a.b.c + a.b.c + a.b.c + a.b.c + a.b.c + a.b.c
= a.b.c + a.b.c + a.b.c + a.b.c + a.b.c + a.b.c
= b.c + a.c + a.b

Tableaux de Karnaugh :
Une technique graphique pour la minimisation dexpressions boolennes
Un tableau de Karnaugh est une table de vrit, prsente de faon ce que les adjacences du type
x.y + x.y = y soient mises en vidence.
Le tableau de Karnaugh de la fonction M aj(a, b, c) est donn ci-dessous. Remarquez que lordre
de lnumration des variables b et c nest pas quelconque : une seule des variables change de valeur
entre deux colonnes (y compris quand on rapproche la dernire colonne de la premire : adjacence
circulaire).
Remplir un tableau de Karnaugh revient remplir une table de vrit. Par exemple, la troisime
case de la premire ligne correspond a = 0 et b = 1 et c = 1 : M aj(0, 1, 1) = 1 donc la case est
remplie avec un 1.
bc

00

01

11

10

Les groupements de points 1 mettent en vidence les simplifications possibles. Il suffit alors de
choisir un nombre minimal de regroupements qui couvrent tous les points 1 de la fonction.
Pour chaque groupe de cases 1, on extrait un terme construit partir des variables qui ne
changent pas de valeur pour lensemble des points regroups. Par exemple, pour le groupement vertical
de la troisime colonne : on remarque que la valeur de a change entre les deux cases regroupes, a
napparaitra donc pas dans le terme correspondant ce groupe. Ce qui est commun dans ce groupe
ce sont les valeurs de b et c : on extrait donc le terme b.c
Sur cet exemple, il y a donc 3 termes qui correspondent aux trois groupements, on retrouve
lexpression : M aj(a, b, c) = b.c + a.c + a.b.
N.B : Les groupements ne peuvent tre que de 2, 4 ou 8 cases (puissances de 2). Par la suite, on
utilisera souvent des tableaux avec 4 variables en entres donc 16 cases. Le nombre de variables dans
un terme correspond la taille du groupement. Par exemple, dans un tableau de 16 cases (4 variables),
un groupe de 8 cases correspond un terme dune variable, un groupe de 4 un terme de 2 variables,
un groupe de 2 un terme de 3 variables et si il reste un 1 isol le terme correspondant utilise les 4
variables.

Circuit minimis
A partir de lexpression minimise, on peut dessiner le circuit suivant :
a

M aj(a, b, c)

Pourquoi a t on besoin de minimiser ?


On remarque que le circuit obtenu partir de la forme minimise a deux avantages : moins de portes
au total (5 au lieu de 12) et moins de portes traverses (entre lentre et la sortie, au plus 3 portes au
lieu de 4). Ce circuit minimis est donc moins couteux en porte et plus rapide.
N.B : Chaque porte a un temps de propagation (diffrent suivant la technologie). Le temps de
propagation travers un circuit est dtermin par le nombre maximal de couches de portes traverser
entre une entre et une sortie.
Remarque : dans la suite du semestre, nous nutiliserons que les minimisations de fonctions boolennes base de tableaux de Karnaugh.

Ex. 4 : Reste de la division entire


Soit un entier naturel E dans lintervalle [0 .. 15], donc cod sur 4 bits e3 , e2 , e1 , e0 ; on veut raliser
un circuit qui calcule le reste S de la division entire de E par 7.
Question 1 Sur combien de bits doit tre cod S ?
Question 2 Reprsenter les fonctions de sortie du circuit laide de tableaux de Karnaugh.
Question 3 Proposer des expressions minimises des fonctions de sortie du circuit.
On considre maintenant que lentier E en entre est dans lintervalle [0 .. 9]. Les fonctions en
sortie sont donc des fonctions - boolennes.
Mthodologie : Pour toutes les cases qui correspondent une valeur dentres non utilise (ici, les
cases correspondant aux valeurs de 10 15), la valeur de la sortie est indiffrente. On note dans les
cases correspondantes : veut dire 0 ou 1, au choix du concepteur. On pourra donc utiliser les pour
simplifier davantage lexpression de la fonction (sils permettent dobtenir de plus gros groupements
de cases).

Question 4 Modifier les tableaux de Karnaugh obtenus en question 2 et proposer des expressions
minimises des fonctions de sortie du circuit.
Pour aller plus loin...

Question 5
Dessiner le circuit base de portes AND, OR et INV partir des quations de la
question 3. Peut-on diminuer la complexit de ce circuit en utilisant un mme monme pour plusieurs
sorties ?

Ex. 5 :

Afficheur 7-segments

Un afficheur 7-segments est un dispositif daffichage dun chiffre dcimal compos, comme son nom
lindique, de sept segments pouvant tre allums ou teints indpendamment les uns des autres. Les
segments sont disposs comme illustr ci-dessous :

On considre que laffichage est ralis comme suit :

Le but de cet exercice est de concevoir un circuit prenant en entre un chiffre dcimal et produisant
en sortie les sept sorties boolennes correspondant aux segments de lafficheur.
Question 1 Sur combien de bits doit-tre code lentre ? Quelle politique adopter concernant les
valeurs superflues ?
Question 2 En utilisant des tableaux de Karnaugh, donner les expressions minimises des 7 segments.
Pour aller plus loin...

Question 3

Pour aller plus loin...

Ex. 6 :

Dessiner le circuit correspondant en utilisant des portes logiques de base.

Transcodeur en code de Gray

On appelle code de Gray 2 (ou codage binaire rflchi) un codage binaire ordonn dans lequel le
codage ne change que dun bit entre deux valeurs successives. Le code de Gray sur 2 ou 3 bits est
utilis dans les tableaux de Karnaugh. Soit donc le code de Gray sur 4 bits suivant :
2. Frank Gray, Bell Labs, 1953

Dcimal

Gray

Dcimal

Gray

Dcimal

Gray

Dcimal

Gray

0000

0110

1100

12

1010

0001

0111

1101

13

1011

0011

0101

10

1111

14

1001

0010

0100

11

1110

15

1000

On veut raliser un circuit prenant en entre un entier naturel cod sur 4 bits e3 , e2 , e1 , e0 et
produisant en sortie le code de Gray correspondant s3 , s2 , s1 , s0 .
Question 1 Dterminer les quations minimises des sorties laide de tableaux de Karnaugh.
Question 2 Dessiner le circuit correspondant en utilisant des portes logiques de base.
Question 3 Pour apprendre reprer les expressions base de XOR, faire le tableau de Karnaugh
de e3 e2 e1 e0 ; de e3 .(e2 e1 e0 ).
Pour aller plus loin...

Ex. 7 :

Encodeur de priorit

Un encodeur de priorit est un circuit qui donne en sortie le numro (cod en binaire) de lentre
active la plus prioritaire. Par exemple, si seules les entres e5 et e8 sont 1, la sortie (bits sk1 s0 )
codera 8 en binaire.
Question 1 Si p = 2n , dterminer le nombre de bits en sortie (la valeur de k). Donner une description
formelle du circuit.
Question 2 Dans le cas n = 2, dterminer les quations minimises de z et S = s1 s0 en remplissant
une table de vrit partielle (i.e. rflchir sur les lignes pouvant tre factorises dans la table).
Question 3 Dessiner le circuit correspondant en utilisant des portes logiques de base.

TD 2
Bascules et registres
Ex. 1 : Bascule D
La bascule D (D flip-flop) illustre ci-dessous est un dispositif qui permet dchantillonner lentre
D sur un front dune entre de commande usuellement note CK , pour clock ou horloge. On suppose
dans ce qui suit que lchantillonnage a lieu sur le front montant (rising edge) du signal CK.

Question 1 Compltez le chronogramme ci-dessous en lappliquant une bascule D.

On se propose dtudier le comportement dun circuit suivant :

On suppose que lon force les entres du circuit comme indiqu sur le chronogramme suivant :
Question 2 Compltez le chronogramme suivant partir des valeurs fournies sur les entres du
circuit et dans les bascules.

On appelle frquence maximale de fonctionnement dun circuit, la frquence dhorloge au-del de


laquelle il existe un chemin entre deux registres ayant un temps de propagation suprieur la priode
de lhorloge. Ce chemin est gnralement appel "chemin critique".
Supposons que :
le temps de traverse dune porte XOR2 soit de 0.1ns
le temps de traverse dune bascule D soit de 0.1 ns
le temps de maintien dune bascule D soit de 0.01 ns
le temps de prpositionnement dune bascule D soit de 0.05 ns
Question 3 Donner le temps de travers du chemin critique du circuit tudi. En dduire la frquence
maximum de fonctionnement.

Ex. 2 : Construction dune bascule criture conditionnelle


On cherche prsent raliser, partir dune bascule D et de portes combinatoires simples, une
bascule criture conditionnelle : une bascule dont lcriture na pas lieu systmatiquement chaque
front dhorloge, mais uniquement lorsquun autre signal (usuellement nomm W E pour write enable)
est 1 au moment du front dhorloge.
Question 1 Quels sont les signaux sur lesquels on peut agir pour implmenter cette criture conditionnelle ?
Question 2 Proposez 2 schmas, lun utilisant une porte AND et lautre utilisant un multiplexeur,
permettant de contrler le changement de valeur dans la bascule.
Question 3 Complter les chronogrammes ci-dessous en indiquant lvolution de la sortie Q pour
chacune des solutions . En dduire les avantages et inconvnients de ces 2 approches vis--vis des
contraintes temporelles sur le signal dautorisation dcriture.

Solution avec porte and

Solution avec multiplexeur

Ex. 3 : Construction de registres


Par dfinition, un registre est un composant regroupant plusieurs bascules D. Le registre permet
donc de mmoriser plusieurs bits dans un mme composant.
Pour construire des registres, on va utiliser des bascules D avec criture conditionnelle dont la
table de transition est donne ci-dessous :
CLR
1
0
0

WE

0
1

CK

Q
0
Qprec
D

Lentre CLR est une entre de mise 0 (clear) effet asynchrone (cette entre force la mise 0
indpendamment du front dhorloge). Lentre W E permet dignorer les fronts montants de lhorloge
(lorsque W E = 0) et donc de mmoriser la mme valeur sur plusieurs cycles sans avoir la recharger.
Question 1 On appelle registre chargement parallle un registre pour lequel toutes les bascules
sont actives en criture sur le mme front dhorloge. Construire un registre 4 bits chargement
parallle partir de ces bascules D, le signal WE autorisant le chargement du registre.
Question 2 Construire un registre 4 bits chargement parallle dcalage gauche partir de ces
bascules D et de multiplexeur 2 vers 1. Le registre doit tre conforme la table de transition suivante :
CLR
1
0
0
0

WE

0
1
1

SHL

0
1

CK

Q
0
Qprec
D
Qprec << 1

O A << P reprsente le dcalage du nombre A de P bits vers la gauche, avec insertion de 0 la


place des P bits de poids faible. On rappelle que dcaler un entier de P bits vers la gauche revient
le multiplier par 2P .
Question 3 Construire un registre 4 bits chargement parallle dcalage droite partir de ces
bascules D et de M U X1b (2 1). Le registre doit tre conforme la table de vrit suivante :
CLR
1
0
0
0
0

WE

0
1
1
1

SHR

0
1
1

ARI

0
1

CK

Q
0
Qprec
D
Qprec >>> 1
Qprec >> 1

O
A >>> P reprsente le dcalage du nombre A de P bits vers la droite, avec insertion de 0 la
place des P bits de poids forts : cest le dcalage logique droite.
A >> P reprsente le dcalage du nombre A de P bits vers la droite, avec insertion du bit de
signe la place des P bits de poids forts : cest le dcalage arithmtique droite.
De faon symtrique au dcalage gauche, dcaler un entier de P bits vers la droite revient
le diviser par 2P : le dcalage logique a donc un sens mathmatique pour les entiers naturels, et le
dcalage arithmtique pour les entiers relatifs.

TD 3
Mmoires et macroblocs
Ex. 1 : Etude dune mmoire vido
Soit la mmoire suivante utilise dans une carte vido pour tlphone portable. La dfinition est
de 320 240, 16 bits par pixels.
Il sagit dune mmoire asynchrone, on utilisera les caractristiques temporelles du botier mmoire
vu en cours :
Read Cycle Time tRC = 10 ns ;
Output Hold Time tOHA = 2 ns ;
Address Access Time tAA = 3 ns.
Question 1 Combien de mots de 16 bits comporte cette mmoire ? Sur combien de bits doit-on
coder les adresses ?
Question 2 Proposer une structure simple de cette mmoire.
Question 3 Les pixels de coordonnes (100, 0) et (101, 0) affichent du bleu et du violet. On admettra
que cela signifie que la mmoire contient les valeurs 0x003F et 0xF 83F aux adresses 0x64 et 0x65.
Dessiner le chronogramme reprsentant la lecture des mots mmoires correspondant.
Question 4 Quelle est la frquence limite de fonctionnement de la carte graphique (i.e. le nombre
de lectures en mmoire vido par seconde) ?
Question 5 Supposons maintenant que la mmoire est synchrone et rpond en un cycle. Redessiner
le chronogramme de la question 3 en consquence.

Ex. 2 : Gnrateur de nombres alatoires


On travaille dans cet exercice sur un composant appel registre dcalage rtroaction linaire
(Linear Feedback Shift Register) servant gnrer des squences pseudo-alatoires de bits. Le
principe de ce composant est dtaill dans la figure ci-dessous.

f (bn1 , ..., b2 , b1 , b0 )

bn1

...

b2

b1

b0

Chaque case correspond une bascule D : il y a donc n bascules numrotes de 0 n 1, n


tant le nombre de bits du LFSR. La sortie s est le bit pseudo-alatoire gnr par le LFSR : elle
affiche la valeur de la bascule numro 0. A chaque cycle, on charge le contenu de la bascule i dans la
bascule i 1 : si on considre la squence des valeurs contenues dans les bascules comme une valeur
B = bn1 ...b1 b0 , alors B est dcale dun bit vers la droite chaque cycle. La valeur insre dans la
bascule n 1 est calcule en fonction des valeurs de chaque bascule via une fonction de rtroaction f
dfinie par f (bn1 , ..., b2 , b1 , b0 ) = cn1 .bn1 ... c1 .b1 c0 .b0 o le ci sont des constantes binaires
donnes.
Dans la suite de lexercice, on pose n = 4 et f (b3 , b2 , b1 , b0 ) = 0.b3 0.b2 1.b1 1.b0 = b1 b0 .

Question 1 On suppose que les bascules sont initialises avec les valeurs suivantes : b3 = 1 et
b2 = b1 = b0 = 0. Remplir un tableau contenant les valeurs des bascules en fonction du temps jusqu
ce quon retombe sur la valeur initiale.
Question 2 Exprimer le nombre de valeurs diffrentes possible en fonction de n. Que se passe-til si
on se retrouve avec b3 = b2 = b1 = b0 = 0 ?
Question 3 Une ralisation dun LFSR 4 bits (avec la fonction de rtroaction :
f (b3 , b2 , b1 , b0 ) = b1 b0 ) laide de 4 bascules D est propose ci-dessous.

b3

CK

Q
CLR

b2

CK

Q
CLR

b1

CK

Q
CLR

b0

CK

CK

Q
Q

CLR

CLR

Justifiez lutilisation de linverseur et de la connexion Q sur la bascule b3.

Ex. 3 : Dcaleur barillet


Un dcalage dun nombre constant de bits ne ncessite aucune porte logique : il sagit de connecter
les fils de faon adquate (voir schma ci-dessous).

Un dcaleur barillet (ou barrel shifter) est un oprateur combinatoire qui permet de dcaler un
nombre x, cod sur n bits, dun certain nombre de bits p < n vers la gauche ou la droite. On note
typiquement :
x << p le dcalage de x de p bits vers la gauche en remplissant les cases libres droite par
des 0 ;
x >> p le dcalage de x de p bits vers la droite en remplissant les cases libres gauche par le
bit de signe du nombre x initial (on parle de dcalage arithmtique) ;
x >>> p le dcalage de x de p bits vers la droite en remplissant les cases libres gauche par
des 0 (on parle de dcalage logique).
Question 1 Sur combien de bits doit tre cod le dcalage p si on suppose que x est cod sur 32
bits ? Dduisez-en la relation gnrale entre le nombre de bits de x (n) et de p (m). Mathmatiquement

parlant, quelles oprations lmentaires correspondent les diffrents dcalages ?


Question 2 Proposez limplantation dun dcaleur gauche dune entre x pour n = 2. Quelle porte
lmentaire est idale pour cette implantation ?
Question 3 En vous basant sur le rsultat prcdent, proposer une implantation pour n = 4 et
n = 8. Evaluer le circuit : nombre de couches logiques traverser et complexit en surface, lunit
tant le mux 1 bit 2 1.
Pour aller plus loin...

Question 4
On veut maintenant grer le dcalage logique vers la droite. On ajoute pour cela une
entre d telle que d = 1 si on effectue un dcalage droite. Modifiez le dcaleur 4 bits pour grer le
dcalage logique droite en plus du dcalage gauche. Attention, il y a deux solutions :
la solution triviale est de choisir chaque tage un bit de ltage prcdent en fonction du sens
du dcalage effectuer,
la solution avec "miroirs" : on utilise le dcaleur gauche vu la question 3. Si on doit dcaler
droite, on permute les bits de lentre ("miroir" : on met en entre du dcaleur les bits 0 3
au lieu des bits 3 0), puis on effectue sur cette nouvelle valeur un dcalage gauche ; les bits
du rsultat obtenu sont permuts nouveau en sortie.
Evaluer les deux solutions.
Pour aller plus loin...

Question 5
On veut enfin ajouter la gestion du dcalage arithmtique droite. On dispose dune
nouvelle entre a valant 1 si on veut effectuer un dcalage arithmtique lors dun dcalage droite.
(Notez que le dcalage gauche est toujours arithmtiquement valable, indpendamment de la valeur
de a). Modifier le schma du dcaleur gauche/droite 4 bits pour y ajouter la gestion du bit de signe
dans les dcalages droite.

TD 4
Oprateurs Arithmtiques et Logiques
Prparation

Ex. 1 : Codage des nombres en complment deux


Le codage en complment deux est un codage permettant de reprsenter des entiers relatifs en
binaire. Il existe dautres codages moins utiliss (e.g. signe et valeur absolue, complment un) que
lon ne dtaillera pas ici.
Question 1 Remplir un tableau contenant les valeurs en base 2 et en base 16 des entiers relatifs
entre -8 et 7 (inclus), cods en complment 24 . Comment peut-on calculer X partir de X en
base 2 ?
Question 2 Quel intervalle dentiers relatifs peut-on coder sur n bits ?
Question 3 Effectuer les oprations 2 + 3, 3 + 3,2 + 5, 7 + 1, 7 + 2 sur 4 bits.
Question 4 Comment peut-on dtecter un dpassement de capacit lors dune opration sur des
nombres cods en complment deux ?

Ex. 2 : Additionneur binaire


On utilise larchitecture dite de ladditionneur propagation de retenue . Le principe est de
construire une cellule lmentaire daddition 1 bit ADD1 capable deffectuer une addition entre deux
bits a et b, en prenant en compte une retenue entrante cI (carry in), et qui produit en sortie la somme
s et une retenue sortante cO (carry out). Une fois cette cellule disponible, il est facile de construire
un additionneur n bits en reliant la retenue sortante de la cellule de rang i la retenue entrante de la
cellule de rang i + 1.

Question 1 Donner les expressions simplifies de la somme s et de la retenue sortante cO dune


cellule lmentaire ADD1 en fonction des oprandes a et b et de la retenue entrante cI. Dessiner le
schma correspondant. Que doit valoir la retenue entrante c0 de ladditionneur n bits ? Evaluer le
temps de calcul pour une addition n bits.
Question 2 Un additionneur dispose galement de deux sorties particulires, sur 1 bit chacune
(appeles indicateurs (flags)) et dfinies par :
CO (Carry Out) est la retenue sortante cn gnre par laddition, qui vaut 1 ssi une addition
portant sur des entiers naturels a gnr un dpassement de capacit ;
OF L (Overflow) vaut 1 ssi une addition portant sur des entiers cods en complment deux a
gnr un dpassement de capacit.

Exprimer le bit OF L en fonction des ci .

Ex. 3 : Additionneur /soustracteur


On veut maintenant implanter lopration de soustraction en utilisant ladditionneur de lexercice 2.
Question 1 En se basant sur la relation X = Xplus1, expliquer comment on peut simplement
modifier le circuit dune cellule lmentaire dadditionneur pour grer aussi la soustraction de deux
entiers relatifs cods en complment deux, suivant la valeur dune entre sub qui vaut 0 pour une
addition, 1 pour une soustraction. Dessiner le schma correspondant une cellule de rang i. Que faut-il
faire pour la cellule de rang 0 ?
Question 2 La sortie CO de ladditionneur/soustracteur est gale la retenue cn . Dans le cas dune
soustraction dentiers naturels, que veut dire la valeur de CO ? Montrez que la variable C = CO sub
vaut 1 ssi une addition ou une soustraction portant sur des entiers naturels gnre un rsultat qui
nest pas un entier naturel codable sur n bits. On peut aussi dire que CO est actif 1 pour laddition,
0 pour la soustraction des entiers naturels.

Note : lindicateur OF L est toujours valide pour les entiers cods en complment en 2, que lopration
soit une addition ou une soustraction.
Pour aller plus loin...

Question 3
On cherche effectuer une opration sur 2n bits par composition doprations sur n
bits, en utilisant 2 additionneurs/soustracteurs n bits. Comment connecter les deux circuits ?
Pour aller plus loin...

Ex. 4 :

Unit Arithmtique et Logique

Dans cet exercice, on va tudier lunit arithmtique et logique, et construire la partie centrale de
ce circuit (ltude complte dun tel circuit dpasse le cadre du TD).
Une Unit Arithmtique et Logique (UAL ou ALU pour Arithmetic and Logic Unit) est un circuit
combinatoire regroupant diffrentes oprations arithmtiques (addition, soustraction, etc.) et logiques
(AND, OR, XOR, etc.) applicables des valeurs codes sur un nombre n de bits (on parle alors
d UAL n bits ).
Sur le schma ci-dessous, le bit M permet de choisir le mode (M=0 : mode logique, M = 1 : mode
arithmtique), les bits fi reprsentent les entres de fonction, qui permet de choisir lopration que
doit effectuer lUAL. Les entres A et B servent coder les oprandes et O le rsultat de lopration
(sur 8 bits dans lexemple du schma).
Outre CO et OF L, lUAL dispose galement de deux indicateurs, dfinis par :

Z (Zero) vaut 1 ssi le rsultat dune opration est nul ;


S (Sign) vaut 1 ssi le rsultat dune opration, interprt comme un entier relatif cod en
complment deux, est ngatif.

Les oprations que doit raliser lUAL que nous concevons sont indiques dans le tableau ci-dessous.

Opration
const0
const-1
add
sub
notA
notB
xor
or
and
nopA
nopB

Mode M
0
0
1
1
0
0
0
0
0
0
0

f0 f1 f2 f3

Rsultat
0000
1111
F = A plus B plus CI
F = A moins B moins 1 plus CI
F = NOT(A)
F = NOT(B)
F =A XOR B
F = A OR B
F = A AND B
F=A
F=B

Question 1 Comment peut-on trs simplement crer la gnration des indicateurs Z et S par lUAL ?
Question 2 On essaie de crer lUAL avec un minimum de modifications de la cellule additionneur/soustracteur dj conue. Comment doit agir la commande de mode M sur les retenues ci ?
On propose la cellule suivante (schma pour la cellule de rang i) :

La sortie si de la cellule dadditionneur/soustracteur est gale ai (bi sub)ci . Si la propagation


de la retenue est inhibe, si = ai (bi sub). Pour concevoir lUAL, on pose oi = vi (ci .M ), avec
vi = ai (bi sub) pour laddition/soustraction.
On remarque que : x y = x.y (x + y). On a donc :
vi = ai (bi sub) (ai + bi sub) = ai (bi .sub + bi .sub) (ai + bi .sub + bi .sub)
Pour avoir plus de choix sur les termes pris en compte, on remplace les occurrences de sub et sub
par f 0, f 1, f 2, f 3. On obtient donc : vi = ai (bi .f 0 + bi .f 1) (ai + bi .f 2 + bi .f 3)
Pour simplifier le travail, on notera ti le premier terme de lexpression de vi et ui le deuxime
terme. On a donc : ti = ai (bi .f 0 + bi .f 1) et ui = ai + bi .f 2 + bi .f 3
Question 3 Quelles valeurs doivent prendre M et les variables de slection fj pour laddition ? la
soustraction ?
Question 4 Dterminer les valeurs de ti et ui suivant les valeurs des fj , puis ce que vaut vi . En dduire
les valeurs des fj ncessaires pour les oprations logiques indiques dans le tableau de fonctionnement
de lUAL.
Question 5 Rechercher lensemble des oprations arithmtiques que peut faire cette UAL.

TD 5
Synthse dautomates
Mthodologie

Ex. 1 : Mthodologie de synthse dautomates : reconnaisseur de


squences
Soit un circuit prenant en entre une lettre dans lensemble {a, b, c} et gnrant en sortie une lettre
dans lensemble {o, n} qui vaut o ssi on vient de reconnatre la squence a + bcc et n sinon. Noter
que la squence de caractres en entre est infinie : lautomate ne sarrte jamais (i.e. pas dtat puits).
Graphe dtats de lautomate
On spcifiera en gnral lautomate comme un automate de Moore (sortie associe aux tats).
RESET

S0/n
a

b
c
b

S1/o

S2/n

a
c
a

b
S3/o

Table de transitions
Cette table est une reprsentation textuelle du graphe.
Etat courant
S0

Sortie
n

Entre Etat futur


a
S1
b
S2
c
S0
S1
o
a
S1
b
S2
c
S0
S2
n
a
S1
b
S2
c
S3
S3
o
a
S1
b
S2
c
S3
Codage des entres et des sorties
On a besoin de 2 bits e1 et e0 pour coder les trois lettres en entre : a 00, b 01 et c 10. On
a besoin de 1 bit z pour coder les deux lettres en sortie : n 0 et o 1.
Remarque : en gnral, le codage des entres et des sorties dun automate sur des variables boolennes
est impos par lenvironnement, et cette tape ne sera pas ncessaire.

On peut rcrire le graphe dtats et la table de transitions de lautomate en utilisant ce codage


des entres et de la sortie :
RESET

S0/z = 0

e1

e1 .e0

Sortie

Entre

S1

S2

S3

e1 .e0
e1 .e0
e1
e1 .e0
e1 .e0
e1
e1 .e0
e1 .e0
e1
e1 .e0
e1 .e0
e1

e1
e1 .e0

e1 .e0

S1/z = 1

e1 .e0

Etat
courant
S0

S2/z = 0
e1 .e0
e1

e1 .e0

S3/z = 1

e1 .e0

e1 .e0

e1

Etat
futur
S1
S2
S0
S1
S2
S0
S1
S2
S3
S1
S2
S3

Codage logarithmique des tats


On choisit ici un codage logarithmique, cest--dire avec le nombre minimum de variables boolennes (le codage 1 parmi n, qui utilise une variable par tat, est prsent la fin de lexercice).
En codage logarithmique, pour coder les 4 tats possibles, il faut au minimum 2 bits q1 et q0 . Pour
cet exercice, on peut choisir le codage : S0 00, S1 01, S2 10 et S3 11.
Expressions simplifies des variables dtat et de la sortie de lautomate
Il sagit de trouver les expressions des variables q1 et q0 linstant t + 1, en fonction de q1 , q0 et
des entres linstant t. Nous utilisons des bascules D : pour obtenir la valeur souhaite linstant
t + 1 en sortie des bascules, il faut mettre linstant t cette valeur sur les entres D des bascules. On
cherchera donc les expressons simplifies de D1 et de D0 en fonction de q1 , q0 et des entres e1 et e0 .
q1 q0

01

11

10

00

01

11

10

01

11

10

00

01

11

10

e1 e0

Expression de D1
q0

q1

Expression de z
Schma du circuit

q1 q0

00

00

e1 e0

Expression de D0
On a donc :
D1 = e0 + e1 .q1
D0 = e1 .e0 + q1 .e1
z = q0

Codage 1-parmi-n ou "one-shot"


Le principe de ce codage est dassocier une variable dtat chaque tat (donc une bascule par
tat). Une variable dtat (ou une bascule) 1 signifie que ltat correspondant est actif ; quand la
variable dtat est 0, ltat est inactif.
On peut faire la synthse du circuit partir du graphe dtats ou de la table de transition.
Pour notre exemple : il y a 4 tats, donc 4 bascules (entres D0 , D1 , D2 et D3 , sorties Q0 , Q1 , Q2
et Q3 avec la bascule i correspondant ltat Si ). A partir de la table de transition on obtient la table
de vrit des entres de bascules :
Etat
courant
Q0

Sortie

Entre

D0

D1

D2

D3

Q1

Q2

Q3

e1 .e0
e1 .e0
e1
e1 .e0
e1 .e0
e1
e1 .e0
e1 .e0
e1
e1 .e0
e1 .e0
e1

0
0
1
0
0
1
0
0
0
0
0
0

1
0
0
1
0
0
1
0
0
1
0
0

0
1
0
0
1
0
0
1
0
0
1
0

0
0
0
0
0
0
0
0
1
0
0
1

A partir de cette table, on obtient :


D0 = e1 .(Q0 + Q1 )
D1 = e1 .e0 .(Q0 + Q1 + Q2 + Q3 )
= e1 .e0

(1)
(2)

D2 = e1 .e0 .(Q0 + Q1 + Q2 + Q3 )
= e1 .e0
D3 = e1 .(Q2 + Q3 )
z = Q1 + Q3

(3)
(4)
(5)
(6)

Le circuit correspondant est donn ci-dessous. Noter que la bascule associe ltat initial Q0 est
initialise 1 (pour que cet tat devienne actif linitialisation), toutes les autres sont initialises 0.

Ex. 2 : Dcodeur Non-Retour Zro Invers


On dsire faire un module matriel permettant de dcoder un signal NRZI avec un automate de
Moore synchrone possdant 4 tats, nots A, B, C et D. Cet automate possde 2 entres E et RAZ, et
une unique sortie S. Les signaux sont les suivants :
E fournit la donne srie (1 bit), cest dire la suite de bits dcoder un par un ;
RAZ force lautomate dans son tat initial, ltat A, lorsquelle est 1 ;

S est la sortie srie.


E

RAZ

Le chronogramme suivant montre un exemple de dcodage qui illustre galement le fonctionnement


de lautomate.

CK
RAZ
E

S
tat

Question 1 En utilisant ce chronogramme, dterminez le graphe dtats, en prcisant les conditions


de transitions et les valeurs de sortie pour chaque tat.
Question 2 Les tats de lautomate sont cods ainsi, sur deux bits nots Q1 et Q0.
A
B
C
D

Q1
0
0
1
1

Q0
0
1
0
1

Construire la table de transition de lautomate, en notant D1 et D0, les valeurs futures crire dans
les bascules D mmorisant Q1 et Q0.
Question 3 Donnez les expressions boolennes simplifies de D1, D0 et S.
Pour aller plus loin...

Question 4

Pour aller plus loin...

Question 5

Proposez une ralisation de cet automate en utilisant un codage 1 parmi n.


Dessiner le schma du circuit permettant de dcoder le code NRZI.

Utilisation de cet automate : Le codage NRZI (Non-Retour Zro Invers) consiste changer le
niveau du signal cod chaque fois que lon code un 1 (si le signal de sortie vaut 0, alors il devra valoir
1 au cycle suivant, et inversement) et conserver le niveau du signal cod chaque fois que lon code
un 0 (si le signal de sortie vaut 0 au cycle courant, alors il y reste au cycle suivant, idem pour 1). Le
signal de sortie est initialement 0. Dans cet exercice, on a propos un module matriel permettant
de dcoder un signal NRZI avec un automate de Moore synchrone possdant 4 tats.

Ex. 3 : Gestion dun feu tricolore


On cherche modliser le fonctionnement dun feu tricolore compos dun affichage trois couleurs
(Rouge, Orange, Vert) pour les vhicules et dun affichage bicolore (Rouge, Vert) pour les pitons. Le
feu fonctionne selon le principe trs simplifi dtaill ci-dessous :
le feu vhicules reste au vert tant quun piton na pas appuy sur le bouton dappel ;

le feu vhicules passe lorange ds quun piton appuie sur le bouton dappel (b = 1), puis
aprs un certain temps il passe au rouge et le feu pitons passe au vert simultanment ;
le feu pitons reste au vert tant quaucun vhicule nest arrt au feu ;
lorsquun vhicule est dtect en attente devant le feu (v = 1), le feu pitons passe au rouge,
puis aprs un certain temps, le feu vhicules passe au vert.
Pour simplifier, on considre que la notion de temps dattente est manifeste par le passage dun
cycle (i.e. on ne prend pas en compte des dures dattente diffrentes). Par convention, on dcide que
ltat initial est celui o les deux feux sont au rouge.
On donne un automate de Moore qui modlise le comportement de ce feu tricolore. Comme un
nonc en langue naturelle est toujours beaucoup plus imprcis quun modle rigoureux, des choix
dinterprtation ont t fait lors de la conception de cet automate : on considrera lautomate comme
lnonc de rfrence.
RESET

A/RR
v
v

D/RV

B/V R

b
C/OR

Dans chaque tat, la sortie est reprsente par un couple de couleurs correspondant laffichage
du feu vhicules suivi de celui du feu pitons.
Question 1 a) Combien y a t-il de combinaisons possibles et de combinaisons relles pour les valeurs
des feux pitons et vhicules ?
b) Peut-on tablir un lien avec le nombre dtats de lautomate ?
Question 2 Choisir un codage des tats de lautomate et donner les expressions simplifies des
variables dtat de lautomate.
Question 3 Donner les expressions simplifies des sorties de lautomate.
Pour aller plus loin...

Question 4

Pour aller plus loin...

Ex. 4 :

Dessiner le schma du circuit pilotant le feu tricolore.

Gestion de la temprature par hysteresis

On cherche raliser un systme permettant dassurer le maintien une temprature quasiconstante dun poulailler industriel, afin dassurer aux volatiles une dure de vie compatible avec
les normes Europennes. Ce systme repose sur la disponibilit dun climatiseur pouvant produire du
chaud, du froid, ou ne rien faire, en fonction de la temprature courante de lentrept (qui dpend de
la temprature externe et du degr dagitation des gallinaces).
Le systme est bas sur le principe de lhysteresis, cest--dire que le comportement lors de laccroissement de la temprature est diffrent du comportement lorsque celle-ci baisse. Trois tempratures de
rfrence sont ncessaires au fonctionnement du systme : Tmin < Tnom < Tmax . La production du
chaud ou du froid, indique respectivement par un signal C 1 ou F 1, se passe comme suit :
lorsque la temprature T devient infrieure Tmin , il y a production de chaud : C 1 ;
la production de chaud sarrte, i.e. C 0, lorsque la temprature devient suprieure ou gale
la valeur nominale Tnom ;
lorsque la temprature devient suprieure ou gale Tmax , il y a production de froid F 1 ;
la production de froid cesse lorsque la temprature devient infrieure la valeur nominale Tnom .

Question 1 Peut-on reprsenter les valeurs de C et F en fonction de la temprature sous la forme


de tables de vrit ? Justifiez.
Le systme exploite un capteur de temprature qui fournit une information encode sur 2 bits
comme prcis ici :
b1
0
0
1
1

b0
0
1
1
0

cas
T < Tmin
Tmin T < Tnom
Tnom T < Tmax
Tmax T

On cherche formaliser le comportement du systme comme un automate de Moore, en faisant


lhypothse que la priode de lhorloge de lautomate est trs infrieure au temps quil faut pour que
la temprature T du poulailler passe de Tmin Tmax ou inversement, cause de linertie thermique.
Question 2 Prcisez quelles sont les entres et les sorties de lautomate.
Question 3 Donnez le nombre dtats de lautomate et reprsentez le graphe de lautomate en y
incluant les conditions de transitions sous forme dintervalle de tempratures sur les arcs et les valeurs
des sorties dans les tats. Transformez ensuite les intervalles de tempratures en conditions boolennes.
Question 4 Proposez un codage logarithmique des tats de faon ce que les expressions des sorties
C et F soient simples et donnez la table de transition qui prcise les sorties et ltat futur en fonction
des entres et de ltat courant. On note Qi les sorties du registre reprsentant ltat courant et Di les
entres du registre, reprsentant ltat futur.
Question 5 Donnez les expressions simplifies de C, F et des Di , et faites le schma en portes
correspondant.
Pour aller plus loin...

Ex. 5 :

automate de synchronisation

Soit un automate spcifi par le graphe ci-dessous. Outre lentre dinitialisation RESET , cet
automate a une entre : ds et 4 sorties di, ack, lx, ly. Il volue au front montant de lhorloge CK.
A

ds

ds

ds

reset

CK

B
di,lx

automate

C
ack

ds

di

ds
ds

ds
ds

E
di,ly

F
ack

ds

lx

ly

ack

Question 1 Construire la table de transition de cet automate.


Question 2 Proposez une ralisation de cet automate utilisant un codage 1 parmi n (one shot
encoding) partir de bascules D.
Question 3 On cherche raliser cet automate avec un codage logarithmique (avec 3 variables
dtat, puisqueil y a 6 tats). Rechercher un codage permettant de minimiser le nombre total de
monmes dans les expressions de ces variables dtat et des sorties, puis donner les quations.

TD 6
Architecture PC/PO
Ex. 1 : PGCD
On travaille sur un circuit calculant le PGCD de deux entiers naturels strictement positifs, selon
lalgorithme ci-dessous :
procedure PGCD is
A, B: Positive; -- on suppose que les entiers sont cods sur 8 bits
begin
Get(A); -- A :=A0
Get(B); -- B :=B0
while A /= B loop
if A < B then
B := B - A;
else
A := A - B;
end if;
end loop;
Put(B);
end;
On dcide quici les paramtres ainsi que le rsultat du calcul sont cods sur 8 bits.
Question 1 On commence par travailler sur la partie oprative du circuit PGCD. Quels composants
de base peuvent tre utiliss pour matrialiser les lments de lalgorithme prcdent ?
En se rappelant ce qui a t vu au TD4, partir dun soustracteur 8 bits, on peut obtenir le signe
du rsultat (A-B) partir de la retenue sortante (son inverse) et lgalit (A == B) avec un NOR8
sur les bits 0-7. On suppose donc avoir un soustracteur disposant de ces deux sorties.
Question 2 En utilisant ce soustracteur et tous les composants de base ncessaires, construire la
partie oprative du circuit PGCD. Identifier les signaux de compte-rendu envoys la partie contrle.
Penser nommer systmatiquement tous les signaux de contrle de la PO.
Question 3 Avec la PO construite, relever les actions pouvant tre ralises en parallle dans lalgorithme de calcul du PGCD.
Question 4 Dessiner lautomate de contrle du circuit PGCD en prcisant bien tous les signaux de
contrle envoys la PO, et en prenant en compte les signaux de compte-rendu envoys par la PO.
Le circuit PGCD sera en pratique utilis par un autre circuit qui lui fournira ses oprandes A et B
et rcuprera le PGCD la fin du calcul. Pour permettre la synchronisation entre le circuit utilisateur
et le circuit PGCD, on introduit deux signaux de commandes :
start est un signal envoy par le circuit utilisateur au circuit PGCD pour lui demander de
dmarrer le calcul : il faut donc que les bonnes valeurs de A et B soient stabilises en entre du
circuit PGCD quand start passe 1 ;
done est un signal envoy par le circuit PGCD au circuit utilisateur pour lui signifier que le
calcul est termin et que le PGCD de A et B est disponible en sortie.
Question 5 Ajouter la gestion de ces deux signaux de commande. Quelle partie du circuit vous
semble la plus adapte pour grer les communications avec lextrieur du circuit PGCD ?
Mthodologie : Lordre des questions de ce TD reprsente les diffrentes tapes permettant de
traduire un algorithme en circuit. Ces tapes sont :

1. Identification des variables mettre en registre


2. Identification des oprations et choix des oprateurs
3. Ralisation de la PO : chaque ligne de lalgorithme dfinit un chemin de donnes entre les
composants de base retenus prcdemment. Lorsque le chemin passe par un composant de base
dj utilis, un multiplexeur est ajout sur le chemin de donne. Le multiplexeur est command
par un signal de contrle.
4. Ralisation de la PC sous la forme dun automate : chaque ligne de lalgorithme (ventuellement
rcrit sous une forme optimise) est affecte un tat. Les tats sont relis entre eux pour
exprimer la squentialit de lalgorithme. Les entres de contrle et les signaux de compte-rendus
sont utiliss pour exprimer la fonction de transition.

TD 7
Architecture PC/PO
Ex. 1 : Bresenham
Le trac de lignes, de cercles, dellipse, etc, est une opration ralise trs communment sur les
cartes graphiques. Des algorithmes spcifiques ont t dvelopps pour faire ces tracs sur des grilles
de pixels (par ex. un cran) en utilisant uniquement des nombres entiers et sans recourir la division
(pour la ligne) ou la racine carre ou les fonctions trigonomtriques pour les cercles et ellipses. On se
propose dutiliser un algorithme du Jack Bresenham 1 qui permet de tracer un quart de cercle pour
en faire la conception PC/PO.
Lalgorithme est le suivant :
// r est le rayon, disponible au dbut de lalgorithme
1 x := 0;
2 y := r;
3 m := 5 4 r;
4 while x y do
// out indique que les valeurs (x, y) sont disponible, il ny a pas
doprateur associ
5
out(x, y);
6
if m > 0 then
7
y := y 1;
8
m := m 8 y;
9
end if
10
m := m + 8 x + 12;
11
x := x + 1;
12 end while
On va utiliser la mthode prsente en cours et mise en uvre en TD pour proposer une implantation de cet algorithme sous la forme PC/PO.
Question 1 Dfinissez lensemble des oprations raliser ; dduisez-en le type des units fonctionnelles (registres ou oprateurs). On cherchera utiliser les oprateurs les plus simples (cest--dire qui
implantent une opration arithmtique ou logique et une seule) pour chaque opration. On rappelle
que les soustracteurs fournissent (possiblement entre autres) les informations suivantes : z qui vaut 1
si le rsultat est nul, 0 sinon et s qui vaut 1 si le rsultat est strictement ngatif, 0 sinon.
Question 2 Quelles oprations peut-on raliser en parallle ?
Rcrivez le programme en utilisant 1) la notion daffectation concurrente prsente en cours et 2) en
remplaant les oprations par les oprations des oprateurs simples dtermins prcdemment.
Rappel. : (, ) (3, 1) affecte 3 dans et 1 dans .
Question 3 Donnez le nombre doprateurs de chaque type ncessaire pour excuter une ligne de
lalgorithme en 1 cycle et proposez une partie oprative interconnectant les units fonctionnelles.
Indiquer clairement les signaux de commandes (slecteurs de multiplexeurs, signaux de chargement
de registres, etc) et les comptes-rendus.
Question 4 Proposez une partie contrle qui pilote cette partie oprative. On fait lhypothse que
lentre r est magiquement disponible lorsquon en a besoin, et que out est un tat dans lequel on
1. "A linear algorithm for incremental digital display of circular arcs", Jack Bresenham, Communication of the ACM,
Feb 1977, vol. 20, n. 2.

passe un cycle et un seul. Spcifiez les oprations de transfert registre registre (RTL) dans chaque
tat. Donnez la fonction de sortie sous la forme dun tableau.
Question 5 Modifiez lalgorithme en utilisant la notion daffectation conditionnelle pour faire disparatre le if. Pour mmoire : ? : affecte dans si = 1, sinon.
Pour aller plus loin...

Question 6

Pour aller plus loin...

Proposez une PO, puis une PC correspondant la question prcdente.

Question 7
En repartant de la forme initiale de lalgorithme, proposez une PO nutilisant quun
additioneur/soustracteur. Donnez ensuite la PC correspondante.

TD 8
Conception dun processeur
Lobjectif de ce TD est de construire un processeur capable deffectuer des instructions trs simples.
Le processeur construit sera utilis dans les deux sances de TD suivantes. On suppose que ce dernier
est quip de 4 registres internes de 8 bits chacun (nomms r0, r1, r2 et r3), dun bus adresse sur 16
bits et de 2 bus donne (lecture et criture) sur 8 bits. On rappelle larchitecture globale du processeur
et sa liaison avec la mmoire :

Le jeu dinstructions de ce processeur est le suivant :


st ri, @mem stocke le contenu du registre ri dans loctet situ ladresse @mem ;
ld @mem, ri stocke le contenu de loctet situ ladresse @mem dans le registre ri ;
op rs, rd stocke dans le registre rd le rsultat de lopration rd op rs.
Les oprations deux oprandes supportes par ce processeur sont laddition (instruction add), la
soustraction (instruction sub), la conjonction (instruction and), la disjonction (instruction or) et la
disjonction exclusive (instruction xor).
Les oprations unaires supportes (rd := op rd) sont la ngation (instruction not), le dcalage dun
bit vers la gauche (instruction shl) et le dcalage arithmtique dun bit vers la droite (instruction
shr).
On donne galement lalgorithme excut par le processeur pour rcuprer, dcoder et excuter les
instructions dun programme situ ladresse 0x4000 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

P C 0x4000;
while True do
IR M EM (P C) ;
PC PC + 1 ;
switch IR do
case add : rd rd + rs ;
case sub : rd rd rs ;
case and : rd rd AND rs ;
case or : rd rd OR rs ;
case xor : rd rd XOR rs ;
case not : rd NOT rd ;
case shl : rd rd << 1 ;
case shr : rd rd >> 1 ;
case st :
AD(15 : 8) M EM (P C) ;
P C P C + 1;
AD(7 : 0) M EM (P C);
P C P C + 1;
M EM (AD) ri ;
case ld :
AD(15 : 8) M EM (P C) ;
P C P C + 1;
AD(7 : 0) M EM (P C);
P C P C + 1;
ri M EM (AD) ;
endsw
endsw
end while

// rd, rs {r0, r1, r2, r3}

// ri {r0, r1, r2, r3}

On remarquera que lalgorithme suppose que les instructions daccs la mmoire sont sur 3 mots
et les autres instructions sur un seul mot.

Ex. 1 : Construction dun processeur sur le modle PC-PO


Question 1 Identifier et lister les registres dans cet algorithme. Prciser leur taille, puis expliquer
leur rle et leur fonctionnement.
Question 2 Dfinir lensemble des oprations raliser. Proposer des oprateurs pour raliser ces
actions, en cherchant utiliser le moins doprateurs possible.
Question 3 Proposez une partie oprative interconnectant les units fonctionnelles identifies (utiliser le composant dcrit en annexe). Indiquer clairement les signaux de commandes (slecteurs de mux,
signaux de chargement de registres, etc) et les comptes-rendus.
Question 4 Reprer les actions de lalgorithme pouvant tre ralises en parallle sur votre PO.
Recrire lalgorithme en utilisant la notion dcriture concurrente. Pour piloter la PO, proposer une
machine dtat correspondant au nouvel algorithme en prcisant uniquement les oprations de transfert
de registre registre 1 . Ne prciser ni les signaux de contrle ni les conditions sur transitions pour
linstant.
Question 5 Simplifier la PC de manire rduire le nombre dtats successeurs de ltat "decode"
1. Cest dire les oprations ralises dans lalgorithme dcrivant le processeur.

(correspondant au test du switch).


On va chercher maintenant crire les valeurs des conditions sur les transitions de la partie contrle.
Ces conditions de transitions dpendent du codage retenu pour chacune des instructions. Pour cela,
on va utiliser des fonctions boolennes (f(IR)) :
AccesMem(IR) : fonction exprimant si le codop de linstruction stocke dans IR est un accs
la mmoire ;
AccesEcr(IR) : fonction exprimant si le codop de linstruction stocke dans IR est un accs la
mmoire en criture.
Question 6
Complter les conditions manquantes sur les transitions de votre automate.
Question 7
On donne les fonctions boolennes suivantes :
selRs(IR), selRd(IR), selRd(IR) : Fonction prenant les 8 bits de IR en entre et retournant les
2 bits dterminant le numro de registre Rs,Rd ou Ri de linstruction dcode.
selUAL(IR) : Fonction retournant lopration ralise par linstruction en la codant sur 3 bits
selon le codage de lUAL fournit en annexe.
Exprimer, sous forme de tableau, pour chaque tat de la PC la valeur des signaux de contrle. Il
sagit de traduire les oprations registres registres en signaux de contrle.

Ex. 2 : Conception du codage du jeu dinstruction


Question 1 Proposer un codage astucieux de chaque instruction en essayant de minimiser les fonctions utilises prcdemment.

Annexe : UAL utiliser dans ce TD


Sel
000
001
010
011
100
101
110
111
Pour aller plus loin...

Ex. 3 :

S
A or B
A xor B
A and B
not A
A+B
A-B
A1
A1

Z=1 ssi S=0

Ralisation de lUAL

Construire lUAL dcrite ci-dessus en utilisant lUAL vu au TD5, dont le fonctionnement est
rappel ci-dessous, et deux multiplexeurs 8 bits 2 vers 1. Donner les fonctions numriques dpendant
des bits de sel permettant de contrler lUAL (via CI, M, f0, f1, f2 et f3) et les multiplexeurs.
Opration Mode M f0 f1 f2 f3
Rsultat
add
1
1010
F= A + B + CI
sub
1
0101
F= A - B + 1 - CI
notA
0
1111
F=not(A)
xor
0
1010
F=A XOR B
or
0
0010
F = A OR B
and
0
0100
F = A AND B

TD 9
Du programme en mmoire aux actions dans le
processeur
Lobjectif de ce TD est de dtailler le fonctionnement du processeur construit la sance prcdente. Le codage du jeu dinstructions pour cette sance est le suivant :

Instruction b7 b6 b5 b4 b3
b2
b1
Oprations de la forme : rd := rd op rs
or rs, rd
0 0 0 0 rs1 rs0 rd1
xor rs, rd 0 0 0 1 rs1 rs0 rd1
and rs, rd 0 0 1 0 rs1 rs0 rd1
add rs, rd 0 1 0 0 rs1 rs0 rd1
sub rs, rd 0 1 0 1 rs1 rs0 rd1
Oprations de la forme : rd := op rd
not rd
0 0 1 1
0
0
rd1
shl rd
0 1 1 0
0
0
rd1
shr rd
0 1 1 1
0
0
rd1
Chargement : rd := M EM (AD)
ld AD, rd
1 0 0 0
0
0
rd1
ADH
ADL
Stockage : M EM (AD) := rs
st rs, AD
1 1 0 0
0
0
rs1
ADH
ADL

b0
rd0
rd0
rd0
rd0
rd0
rd0
rd0
rd0
rd0

rs0

Question 1 Soit le contenu de la mmoire donn ci-dessous. R-crire ce programme en langage


machine. Que fait ce programme ?
Contenu de la mmoire :

Adresse
0x1230
0x1231
0x1232
0x1233
...
0x4000
0x4001
0x4002
0x4003
0x4004
0x4005
0x4006
0x4007
0x4008
0x4009
0x400A
0x400B
0x400C
0x400D
0x400E
...

Valeur
0x00
0x0A
0x1A
0x12
...
0x80
0x12
0x31
0x81
0x12
0x32
0x44
0x60
0x81
0x12
0x33
0x54
0xC0
0x12
0x30
...

Question 2 On sintresse linstruction prsente ladresse 0X4006. Quels sont les chemins de
donnes utiliss dans la PO durant lexcution ? Quels sont les tats emprunts par la PC pour traiter cette instruction ? En combien de cycles la traite t-on ? Pour rsumer cette analyse, dessiner un
chronogramme faisant apparatre lhorloge et la valeur des signaux importants de la PC et de la PO
durant le traitement de cette instruction.
Pour aller plus loin...

Question 3

Mme exercice avec linstruction ladresse 0x4008

TD 10
Modification dun processeur
Lobjectif de ce TD est de montrer les consquences de lajout dinstructions sur la micro-architecture
dun processeur et sa machine dtat. Le processeur utilis est le mme que dans les sances prcdentes.

Mthodologie

Ex. 1 : Chargement immdiat : intrt et modification sur le processeur


Pour simplifier laccs aux constantes dans un programme, on propose dajouter une instruction
qui permet de charger un registre (8 bits) avec une constante (8 bits galement). Cette nouvelle
instruction sera note li IMM, rd. Gnralement nomme load immediat en anglais, elle effectue
laffectation suivante : rd IM M .
Question 1 Indiquez o doit se trouver la constante charger dans le registre et proposez un
encodage de linstruction li qui sinsre simplement dans lencodage existant.

La constante doit se trouver en mmoire ladresse PC+1. Un encodage possible est le suivant :
Instruction b7 b6 b5 b4 b3 b2 b1
b0
li IMM, rd 1 0 0 0 1 0 rd1 rd0

Question 2 Est-il ncessaire de modifier la partie oprative ? Si oui, effectuez les modifications. Si
non, justifier votre rponse.

Inutile de modifier la PO car il existe dj le mux sourceR pour amener dataIN aux registres
gnraux.

Question 3 Etendez la machine dtat de la PC obtenue au TD9 de manire supporter cette


nouvelle instruction.

li(IR) est la fonction boolenne qui indique si un chargement est immdiat. Dans notre choix de
codage, li((IR) = IR3 .

Init

F etch

LI
C1 .li(IR)

Decode

C1 .li(IR)

C1
op

ADH

ADL
C2
ST

C2
LD

o C1 = AccesM em(IR), C2 = AccesEcr(IR).


Dans ltat li, on doit avoir CD*=0, WE*=1, EPC=1, selAD=1, sourceR=1, ldRx=f(selRd(IR)),
tous les autres ld sont 0, selA,selB,op en -boolen.

Ex. 2 : Branchement : intrt et modification sur le processeur


Le programme ci-dessous calcule le produit de la constante X (situe ladresse 0x2000) et la
constante Y (0x2001) et stocke le rsultat ladresse 0x1230.
Pour pouvoir excuter ce programme sur notre processeur, on a besoin de rajouter des instructions de
branchement :
jmp @mem fait sauter lexcution ladresse @mem (i.e. PC := @mem) ;
jz @mem provoque un branchement ladresse @mem ssi Z = 1 (o Z est lindicateur valant 1 ssi
le rsultat de la dernire opration tait nul).

Cpt := Y;
Res := 0;
while Cpt /= 0 loop
Res := Res + X;
Cpt := Cpt - 1;
end loop;

0x4000:
0x4003:
0x4006:
0x4008:
0x4009:
0x400A:
0x400D:
0x400E:
0x400F:
0x4012:

ld 0x2000, r0
ld 0x2001, r1
li 1, r2
xor r3, r3
or r1, r1
jz 0x____
add r0, r3
sub r2, r1
jmp 0x____
st r3, 0x1230

Question 1 Associer les lignes de lalgorithme crit en pseudo-code (ci-dessus gauche) celles
du programme crit en langage machine (ci-dessus droite), justifier les adresses des instructions et

complter les champs manquants aprs les instructions de branchement.


Question 2 Que faut-il ajouter la partie oprative de notre processeur pour supporter ces nouvelles
instructions ?
Question 3 Modifier la PC en consquence et proposer un codage pour ces instructions.

TD 11
Programmation en langage machine MIPS
Lobjectif de ce TD est de comprendre comment mettre en uvre un algorithme sur un processeur.
Le processeur utilis pour ce TD est le processeur MIPS, dj prsent en cours et que vous
utiliserez en TP et concevrez dans le module CEP au second semestre.
Les registres et les bus du processeur MIPS considr sont tous sur 32 bits et le registre R0 est
cabl zro. On rappelle larchitecture globale du processeur et sa liaison avec la mmoire :

Le MIPS a un jeu dinstructions 3 oprandes et ses instructions sont rparties dans 3 formats
diffrents :
31

2625

2120

1615

Format R : opcode

RS

RT

Format I : opcode

RS

RT

Format J : opcode

1110

RD

65

SH
IMM16

IMM26

FUNC

Dans ce TD, nous considrerons les instructions suivantes :


Nmmonic/
syntaxe
addiu $rt, $rs, imm
addu $rd, $rs, $rt
and $rd, $rs, $rt
andi $rt, $rs, imm
beq $rs, $rt, label

Format
I
R
R
I
I

Opcode/
Func
0x9
0x0/0x21
0x0/0x24
0xC
0x4

bne $rs, $rt, label

0x5

j label
lui $rt, imm
lw $rt, imm($rs)

J
I
I

0x2
0xF
0x23

or $rd, $rs, $rt


ori $rt, $rs, imm
slt $rd, $rs, $rt
slti $rt, $rs, imm

R
I
R
I

0x0/0x25
0xD
0x0/0x2A
0xA

sll $rd, $rt, sh


srl $rd, $rt, sh
subu $rd, $rs, $rt
sw $rt, imm($rs)

R
R
R
I

0x0/0x0
0x0/0x2
0x0/0x23
0x2B

1.
2.
3.
4.

Opration
R[rt]=R[rs]+SignExtImm 1
R[rd]=R[rs]+R[rt]
R[rd]=R[rs] & R[rt]
R[rt]=R[rs] & ZeroExtImm 2
if(R[rs]== R[rt])
PC=PC+4+BranchAddr 3
if(R[rs] != R[rt])
PC=PC+4+BranchAddr 3
PC = JumpAddr 4
R[rt] = IM M 16|016
R[rt] =
mem[R[rs]+SignExtImm 1 ]
R[rd] = R[rs] | R[rt]
R[rt] = R[rs] | ZeroExtImm 2
R[rd] = (R[rs] < R[rt]) ? 1 : 0
R[rt] =
(R[rs] < SignExtImm 1 ) ? 1 : 0
R[rd] = R[rt] SH
R[rd] = R[rt] SH
R[rd]=R[rs]-R[rt]
mem[R[rs]+SignExtImm 1 ]
= R[rt]

Nom
Complet
addition non signe avec un immdiat
addition non signe entre registres
ET bit bit entre registres
ET bit bit avec un immdiat
Branchement si galit
Branchement si ingalit
Saut inconditionnel
Chargement immdiat haut
chargement registre
OU bit bit registre registre
OU bit bit avec immdiat
Set Less Than registre registre
Set Less Than avec immdiat
dcalage gauche
dcalage logique droite
soustraction non signe entre registres
stockage registre

SignExtImm = IM M 1616
15 |IM M 16
ZeroExtImm = 016 |IM M 16
2
BranchAddr = IM M 1614
15 |IM M 16|0
JumpAddr = (P C + 4)3128 |IM M 26|02
Prparation

Ex. 1 : Interprtation dinstructions


Question 1 Traduire en langage machine les instructions MIPS suivantes :
andi $5, $24, 0xFF
subu $16, $8, $4
Interprter les mots de 32 bits suivant comme des instructions MIPS :
0x8CE3000C
0x000FF9C0

Ex. 2 : Implantations basiques


Question 1 Comment peut on charger un immdiat de 32 bits dans un registre utilisateur ?
Question 2 En supposant que A est dans le registre R1, traduisez la structure conditionnelle suivante :
while A /= 0 loop
A:= A -1;
end loop;

Question 3 Donnez les valeurs des champs IMM des instructions de branchement utilises en supposant que votre programme commence ladresse 0x80.
Question 4 En supposant que A et B sont des variables 32 bits non signes situes dans la mmoire
aux adresses 0x1000 et 0x1004, traduisez la structure conditionnelle suivante :
if A < B then
A := 1023;
else
A := 511;
end if;

Ex. 3 : Implantation du PGCD en assembleur MIPS


Question 1 En supposant que A0 et B0 sont des valeurs 32 bits non signes qui ont t situes dans
la mmoire aux adresses 0x1000 et 0x1004, traduisez lalgorithme PGCD ci-dessous. Le rsultat sera
mis ladresse 0x1008.
procedure PGCD is
A, B: Positive;
begin
Get(A); -- A :=A0
Get(B); -- B :=B0
while A /= B loop
if A < B then
B := B - A;
else
A := A - B;
end if;
end loop;
Put(B);
end;
Pour aller plus loin...

Question 2

Pour aller plus loin...

Ex. 4 :

Transcrire le programme ci-dessus en langage machine en hexadcimal.

Comparaison processeur/circuit ddi

Question 1 Comparer le nombre de cycle ncessaire limplantation processeur pour excuter cet
algorithme pgcd celui de limplantation du TD8 en supposant que le processeur met 3 cycles pour
excuter une instruction.
A votre avis, lequel de ces 2 circuits ncessitent le plus de ressources ?
Quel avantage a le processeur sur le circuit ddi ?