Documente Academic
Documente Profesional
Documente Cultură
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
Prparation
Mthodologie
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)
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)
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 :
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
Ex. 6 :
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.
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.
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
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.
f (bn1 , ..., b2 , b1 , b0 )
bn1
...
b2
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
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
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
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 :
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 :
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) :
TD 5
Synthse dautomates
Mthodologie
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
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
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
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
(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.
RAZ
CK
RAZ
E
S
tat
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
Question 5
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.
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
Ex. 4 :
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 .
b0
0
1
1
0
cas
T < Tmin
Tmin T < Tnom
Tnom T < Tmax
Tmax T
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
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 :
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
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 :
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
On remarquera que lalgorithme suppose que les instructions daccs la mmoire sont sur 3 mots
et les autres instructions sur un seul mot.
Ex. 3 :
S
A or B
A xor B
A and B
not A
A+B
A-B
A1
A1
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
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
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
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.
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
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
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
Format
I
R
R
I
I
Opcode/
Func
0x9
0x0/0x21
0x0/0x24
0xC
0x4
0x5
j label
lui $rt, imm
lw $rt, imm($rs)
J
I
I
0x2
0xF
0x23
R
I
R
I
0x0/0x25
0xD
0x0/0x2A
0xA
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
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;
Question 2
Ex. 4 :
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 ?