Vous êtes sur la page 1sur 7

TD 1

TD 1

TD 1 - C IRCUITS COMBINATOIRES
Simplication de fonctions boolennes, familiarisation avec loutil de conception de circuits, circuits combinatoires, reprsentation des nombres, arithmtique en complment 2, arithmtique ottante. Page web : http://www-rocq.inria.fr/~ acohen/teach/archi.html

N 00 01 11 10

00 01 11 10 NW 00 1 1 1 00 1 1 1 1 01 1 x x x x 11 x 1 1 x x 10 1 SW 00 01 11 10

01 11 10 NE 00 1 1 01 x x x 11 1 x x 10

00 01 11 10 C 00 1 1 1 1 00 1 1 01 1 x x x x 11 x 1 1 x x 10 1 00 01 11 10 1 1 1 1 1
x x x x

01 11 10 1 1 1 1
x x x

1 x x

Exercice 1.1 - Afcheur numrique


On souhaite raliser lafcheur numrique dcimal dcrit sur la gure 1. Il est constitu de 7 diodes lectro-luminescentes (LEDs) nommes N, NW , NE, C, SW , SE et S. N

00 01 11 10 SE 00 01 1 1 00 1 1 1 01 1 1 x x x x 11 x x 1 x x 10 1 1

11 10 S 1 00 1 1 01 x x 11 x x 10

1 1 x x

Fonctions simplies : N = ac + ac + b + d , NW = ab + ac + bc + d , + ab + c, NE = ab C = bc + ab + bc + d , SW = ac + ab, SE = a + b + c + bc + ac + ab + d . S = abc

NW

NE

Question 1.1.2
Raliser lafcheur en DigLog. Pour le circuit, on respectera la reprsentation des fonctions logiques sous forme de sommes de produits. Support : commencer par rcuprer le chier numeric_mask.lgf, puis lancer DigLog par la commande cohen/bin/diglog numeric_mask.lgf.

SW

SE

Rponse
F IG . 1 Afcheur numrique dcimal
Voir la gure 2 et le chier numeric.lgf.

Question 1.1.1
crire une table de vrit pour chaque LED de lafcheur, puis simplier les fonctions algbriques correspondantes laide des tableaux de Karnaugh. Pour ne pas perdre de temps, vous avez la possibilit de ne raliser que deux tableaux, par exemple ceux du sud ouest (SW ) et du centre (C).

Exercice 1.2 - Deux circuits combinatoires importants


On tudie deux circuits lmentaires frquemment utiliss dans les composants des processeurs.

Rponse
Le signal dentre est cod sur 4 bits dcba. Les tables suivantes reprsentent les valeurs de vrit de chaque LED : ba horizontalement et dc verticalement.

Question 1.2.1
Un dcodeur n 2n est un circuit combinatoire comprenant une entre I sur n bits et sorties O0 , . . . , O2n 1 sur 1 bit ; seul le signal Om doit tre activ lorsque lentre I vaut m (en binaire sur n bits). Construire un dcodeur 3 8. On pourra construire une table de Karnaugh ou chercher un schma gnral pour un dcodeur n 2n . 2n

TD 1

TD 1

N NW NE C

"3->8" I[3:0] hi
3->8

"MUX8x1_1b" O[7:0]

SW S

SE

hi

a b c d

7 O[0] 6 A[2:0]

5 I[7:0]
MUX8x1_1b

NW

4 5 1

NE

3 6 2

2
SW SE

F IG . 2 Circuit de lafcheur numrique

F IG . 3 Circuits du dcodeur et du multiplexeur


portes ET, recevant le signal Ik correspondant. La porte ET slectionne lorsque lentre A vaut k (sur 3 bits) fournit alors la valeur du signal Ik , les sorties des autres portes ET sont nulles. Il suft donc dune porte OU 8 entres pour produire le signal de sortie du multiplexeur. Voir la gure 3 et le chier mux_dec.lgf.

Rponse
Il suft de slectionner une unique combinaison des signaux dentre laide de 8 portes ET ( trois entres). Chaque valeur dentre active ainsi un unique signal de sortie du dcodeur. Voir la gure 3 et le chier mux_dec.lgf.

Question 1.2.2
Un multiplexeur 2n 1 est un circuit combinatoire comprenant une entre A sur n bits, 2n entres I0 , . . . , I2n 1 sur 1 bit, et une sortie O sur 1 bit ; le signal O est gal lentre Im lorsque A vaut m (en binaire sur n bits). Construire un multiplexeur 8 1. On pourra construire une table de Karnaugh, rutiliser le dcodeur de la question prcdent ou chercher un schma gnral.

Exercice 1.3 - Unit arithmtique et logique


Support : alu_mask.lgf propose une Unit Arithmtique et Logique (ALU) 1-bit (comprenant notamment un additionneur 1-bit et un multiplexeur 4 1) et un masque pour une ALU 16-bits. LALU 1-bit vue en cours propose les oprateurs daddition, de conjonction et de ngation ; voir le chier alu_mask.lgf. On utilise cette brique de base pour

Rponse
En suivant le mme schma que le dcodeur, on ajoute une quatrime entre chacune des 8

TD 1

10

TD 1

construire une unit arithmtique et logique 16-bits. On a transform ladditionneur en additionneur/soustracteur en lui ajoutant un signal de contrle ALUKSUB analogue au signal c vu en cours, et en insrant des XOR pour inverser la deuxime oprande de laddition.

a dpassement lorsque les deux entres sont de signe diffrent et que le rsultat na pas le signe de ALUSRC1. Le signal V de dpassement ( overow) est donc dni de la manire suivante :
V = Cout SIGNED ALUKSUB + Cout SIGNED ALUKSUB + ALUSRC115 ALUSRC215 ALURES15 SIGNED ALUKSUB + ALUSRC115 ALUSRC215 ALURES15 SIGNED ALUKSUB + ALUSRC115 ALUSRC215 ALURES15 SIGNED ALUKSUB + ALUSRC115 ALUSRC215 ALURES15 SIGNED ALUKSUB .

Question 1.3.1
La plupart des units arithmtiques et logiques gnrent des signaux de condition ; il sagit de signaux de sortie utiliss par les instructions de branchement conditionnel. Raliser une ALU 16-bits avec les trois signaux de condition suivants : N vaut 1 lorsque la sortie (16-bits) est strictement ngative ; Z vaut 1 lorsque la sortie est nulle ; P vaut 1 lorsque la sortie est strictement positive.

Rponse
Le signal Z est obtenu en calculant le NOR des 16-bits de sortie. Le signal N est gal au 15e bit de sortie de lALU (bit de poids fort). Le signal P est facilement obtenu partir du NOR de Z et N , puisquil est 1 lorsque la sortie est ni nulle ni ngative. Voir le chier alu.lgf.

En ralit, le signal de dpassement ne doit tre activ que dans le cas dune addition ou dune soustraction ; on masque donc le rsultat prcdent par le NAND des signaux de contrle de lALU, ALUK0 et ALUK1 . Voir la gure 4 et le chier alu.lgf.

Question 1.3.2
Montrer que lon peut effectuer une soustraction non signe laide dun oprateur de soustraction en complment 2.

Rponse
Pour x, y {0, . . . , 216 1}, effectuer la soustraction au sens du complment 2 est quivalent :
x 2 y = x + y + 1 = x + (216 y) = x y + 216 mod 216 (1)

Comme laddition +216 ninue pas sur les 16 bits de poids faible du rsultat, la soustraction en complment 2 et de la soustraction sur les entiers naturels conduisent au mme rsultat. En revanche, cette addition supplmentaire va modier la valeur de la retenue : 216 correspond au bit de la retenue, lui ajouter 1 revient linverser.

Question 1.3.3
On suppose que lALU dispose dun signal SIGNED qui vaut 1 lorsque les calculs ont lieu en complment 2 (calculs signs) et 0 sinon (calculs non signs). Dnir un signal V de dpassement de capacit (overow) pour cette ALU.

Rponse
On appelle V le signal de dpassement de capacit. Supposons que SIGNED = 0. Lorsque lon effectue une addition, il y a dpassement (i.e., un rsultat suprieur ou gal 216 ) si la retenue de sortie vaut 1. Inversement, lorsque lon effectue une soustraction, on a vu la question prcdente que le dpassement (i.e., un rsultat ngatif) correspond une retenue de sortie 0. Supposons dsormais que SIGNED = 1. Pour une addition il y a dpassement lorsque les deux entres ont le mme signe et que le rsultat a un signe diffrent ; pour une soustraction il y

TD 1

11

12

TD 1

"ALU_1b"
ADD_1b Sum

Cin

Cout

ALUK_SUB

ALUK_0 ALUK_1

ALU_1b

ADD_1b

ALURES_0 ALURES_1 ALURES_2 ALURES_3 ALURES_4 ALURES_5 ALURES_6 ALURES_7 ALURES_8 ALURES_9 ALURES_10 ALURES_11 ALURES_12 ALURES_13 ALURES_14 ALURES_15 ALUK_0 ALUK_1 ALUK_SUB
ALU_1b ALU_1b ALU_1b ALU_1b ALU_1b ALU_1b ALU_1b ALU_1b ALU_1b ALU_1b ALU_1b ALU_1b ALU_1b ALU_1b ALU_1b ALU_1b

ALUK_SUB Cout

Z P N
ADD/SUB

MUX4x1_1b

"ADD_1b"

ALUK_0 ALUK_1 ALUK_SUB A B Cin S


ALU_1b

SIGNED ALUSRC1_0 ALUSRC1_1 ALUSRC1_2 ALUSRC1_3 ALUSRC1_4 ALUSRC1_5 ALUSRC1_6 ALUSRC1_7 ALUSRC1_8 ALUSRC1_9 ALUSRC1_10 ALUSRC1_11 ALUSRC1_12 ALUSRC1_13 ALUSRC1_14 ALUSRC1_15 ALUSRC2_0 ALUSRC2_1 ALUSRC2_2 ALUSRC2_3 ALUSRC2_4 ALUSRC2_5 ALUSRC2_6 ALUSRC2_7 ALUSRC2_8 ALUSRC2_9 ALUSRC2_10 ALUSRC2_11 ALUSRC2_12 ALUSRC2_13 ALUSRC2_14 ALUSRC2_15
Cout

SIGNED=0

SIGNED=0

SIGNED=1

OVERFLOW SIGNED=1

SIGNED=1

SIGNED=1 COMPARISON (ALUSRC1<ALUSRC2) 0 1 3 hi 3 ALUK=0: ADD ALUK=1: AND ALUK=2: NOT ALUK=3: dont care

ALUK_0 ALUK_1 ALUK_SUB SIGNED ALUSRC1_12 ALUSRC1_13 ALUSRC1_14 ALUSRC1_15 ALUSRC1_8 ALUSRC1_9 ALUSRC1_10 ALUSRC1_11 ALUSRC1_4 ALUSRC1_5 ALUSRC1_6 ALUSRC1_7 ALUSRC1_0 ALUSRC1_1 ALUSRC1_2 ALUSRC1_3 N Z ALUSRC2_0 P ALUSRC2_1 ALUSRC2_2 ALUSRC2_3 ALURES_12 ALURES_4 ALURES_8 ALURES_0 ALURES_13 ALURES_5 ALURES_9 ALURES_14 ALURES_6 ALURES_10 ALURES_1 ALURES_15 ALURES_7 ALURES_11 ALURES_2 ALURES_3 V LT

2 MUX4x1_1b

SIGNED N V

LT

"MUX4x1_1b"

ALUSRC2_12 ALUSRC2_13 ALUSRC2_14 ALUSRC2_15

ALUSRC2_8 ALUSRC2_9 ALUSRC2_10 ALUSRC2_11

ALUSRC2_4 ALUSRC2_5 ALUSRC2_6 ALUSRC2_7

F IG . 4 Circuit de lALU 16-bits

TD 1

13

14

TD 1

Question 1.3.4
En utilisant lALU ci-dessus et en minimisant le nombre de modications, gnrer un signal de comparaison : soient a et b les deux entres de lALU, le rsultat de la comparaison est 1 si a < b, et 0 sinon ; le rsultat de la comparaison doit tre fourni sur un signal de sortie supplmentaire.

Rponse
On effectue la soustraction de a et b en choisissant
ALUK1 ALUK0 = 00 et ALUKSUB = 1.

A1_0 A1_1 A1_2 A1_3 A2_0 A2_1 A2_2 A2_3


Cin
0 1 2 3

S=A1+A2+A3

Le signal LT ( less than) est mis 1, soit lorsque la diffrence est ngative, soit lorsquelle est positive et quil y a dpassement ; voir la gure 4 et le chier alu.lgf.

Cout
3 4

Exercice 1.4 (facultatif) - Acclration de laddition


Cet exercice compare plusieurs compromis temps-espace pour des circuits dacclration de laddition. Il nest pas ncessaire dutiliser DigLog dans cet exercice. On souhaite effectuer laddition de n nombres a1 , . . . , an sur 4 bits. Pour cela, on peut utiliser une ALU pour calculer a1 + a2 puis ajouter le rsultat a3 , etc.

Question 1.4.1
Pour la somme de 3 entiers sur 4 bits, proposer un circuit dont le temps de traverse vaut 6 fois celui de ladditionneur 1-bit.

0 A3_0 A3_1 A3_2 A3_3 S_0 S_1 S_2 S_3 S_4 S_5

Rponse
On aligne un additionneur 4 bits calculant la somme partielle des deux premires oprandes avec un additionneur 5 bits dont les oprandes sont le rsultat du premier additionneur et la troisime oprande (le rsultat comporte 5 bits). Le circuit rsultant est dcrit sur la gure 5.

F IG . 5 Circuit de ladditionneur trois oprandes


VALIDE ; CELA LES MNE NATURELLEMENT LA SOLUTION ( NOTE : UNE UNIT DE TEMPS = PASSAGE TRAVERS UN ADDITIONNEUR DANS CET EXERCICE ). On spare le calcul des sommes partielles sans retenue et des retenues pour viter de propager ces dernires. Dans un deuxime temps, les sommes et les retenues sont ajoutes de manire classique pour retrouver la somme totale. Le cas de laddition de trois oprandes est dcrit sur la gure 6. Par rapport la solution de la question prcdente, on remarque quun additionneur 1-bit a pu tre supprim alors mme que le temps de traverse global a t diminu. Le cas gnral consiste grouper les oprandes par 3 et calculer les sommes partielles sans retenue et les retenues en une seule traverse parallle, puis recommencer sur les 2/3 doprandes rsultant (en tenant compte des alignements respectifs des sommes partielles et des retenues), jusqu nobtenir que deux oprandes que lon somme de manire classique. Le nombre k dtages dadditionneurs carry-save 1-bit vrie n(2/3)k 2, i.e., k (lg n

Question 1.4.2
Pour la somme de 3 entiers sur 4 bits, proposer un circuit dont le temps de traverse ne vaut que 5 fois celui de ladditionneur 1-bit, contre 6 pour le circuit de la question prcdente. Indication : utiliser lassociativit de laddition pour retarder la propagation des retenues jusqu la dernire tape du calcul ; le circuit obtenu est appel additionneur carry-save. Proposer une gnralisation de ce circuit pour la somme de n oprandes et une estimation de son temps de traverse.

Rponse
I L FAUT SUGGRER AUX TUDIANTS DE CONCEVOIR UN ADDITIONNEUR POUR 3 NOMBRES
PARTIR D ADDITIONNEURS 1- BIT, SANS SE PROCCUPER DES PROBLMES DE TEMPS , PUIS D VALUER , SUR CET ADDITIONNEUR , AU BOUT DE COMBIEN DE TEMPS LE RSULTAT EST

TD 1

15

16

TD 1

A1_0 A1_1 A1_2 A1_3 A2_0 A2_1 A2_2 A2_3


0 1 2 3

on ne considrera que des nombres normaliss ; lorsquune valeur ne peut tre reprsente par un nombre normalis, on dclenche un signal derreur ERROR ; le circuit ne pourra effectuer quun arrondi par limination des bits de poids faible non reprsentables.

CS=A1+A2+A3

Question 1.5.1
Dterminer les diffrentes tapes ncessaires lopration de multiplication ottante

Rponse
Dbut

A3_0 A3_1 A3_2 A3_3


0 1 2 3

0 CS_0 CS_1 CS_2 CS_3 CS_4 CS_5

Cin

Cout

Multiplication des mantisses On conserve les 25 bits de poids fort

Normalisation : dcalage de 1 bit gauche ventuel, conservation des 23 bits suivant le bit de poids fort

F IG . 6 Circuit de ladditionneur carry-save trois oprandes


1)/ lg 3. Dautre part, la somme nale squentielle porte sur n/2 + 4 bits. Le temps de traverse global est de lordre de n/2 + lg n/ lg 3. Cette structure rcursive fonde sur ladditionneur carry-save est appele arbre de Wallace. Ces arbres sont utiliss pour acclrer les multiplieurs, pour compter le nombre de bits 1 dans un registre, etc. Voir Patterson et Hennessy Computer Organization and Design pp. 331 et 332.

Addition des exposants

Dpassement ? Erreur Mise jour du signe

Exercice 1.5 (facultatif) - Multiplieur ottant


Fin On tudie la structure dun multiplieur pour des nombres virgule ottante. On considre une reprsentation simplie, inspire de la norme IEEE 754 pour les ottants 32 bits :

TD 1

17

18

TD 1

Question 1.5.2
Identier tous les composants ncessaires la ralisation du multiplieur (hors contrle). Indiquer les jonctions ncessaires entre les diffrents composants et leur taille.

Rponse
Dune part un registre 48 bits aliment par un multiplexeur 96 48 pour choisir entre les donnes initiales 0 sur les 24 bits de poids fort et lentre 1 du multiplieur sur les 24 bits de poids faible ou le dcalage gauche. Dautre part, un additionneur 24-bits aliment par les 24 bits de poids fort du registre et par le produit entre le bit 23 du registre et lentre 2 du multiplieur. La mantisse est obtenue par un dcalage gauche de 1-bit ventuel lorsque le bit 47 est 0 laide dun multiplexeur 48 24. Lexposant est calcul laide de 3 additions 8 bits enchanes pour soustraire le biais de 127 puis ajouter les exposants et incrmenter ventuellement de 1 si la mantisse na pas t dcale.

Question 1.5.3
Indiquer, pour chaque tape, les valeurs que doivent prendre les diffrents signaux dentre des composants. Le circuit de contrle du multiplieur ottant sera ralis dans le cadre du prochain TD.

Rponse
Il y a dpassement de capacit ERROR = 1 lorsque la somme modulo 2 des retenues des trois additionneurs du circuit de calcul de lexposant vaut 0. En effet, les somme des deux premires retenues correspond la ngation du bit 8 de lexposant (il manque le bit 8 de lexposant de lentre 1), et la deuxime somme correspond la ngation du bit 8 de lexposant nal. On calcule donc ERROR en combinant les trois retenues de sorties avec une porte XNOR et une porte XOR. Pour le reste, voir la correction du multiplieur entier et le circuit microprogramm du multiplieur ottant dans le TD suivant.