Vous êtes sur la page 1sur 24

Cours (0111)2

On pourrait appeler ce cours :


«Circuits usuels»

Cette semaine on apprendra :


le démultiplexeur
les encodeurs et décodeurs
les additionneurs
les comparateurs

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Pourquoi on apprend ça ?
Bon, la matière de ce cours est important parce-que :
les circuits usuels présentés dans ce cours sont très repandus et
existent souvent physiquement dans des puces ou moins
physiquement dans des macros pour les logiciels de conception de
circuits logiques (comme CircuitMaker)
c'est fortement probable que vous allez rencontrer ces
composantes lors de vos carrières (si vous faites toujours du
génie) et c'est important de les reconnaître
la conception par itération peut être très utile non-seulement pour
les circuits logiques, mais pour d'autres sortes de machines aussi

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Questions ? L'intra approche vite
Remember, there are no stupid
questions, just stupid people.

N'oubliez pas, vous pouvez demander des questions :


En classe, ou pendant les pauses
Par courriel / rendez-vous: jeffrey.dungen@polymtl.ca

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Démultiplexeur
On a déjà vu à plusieurs reprises des multiplexeurs. L'inverse d'un
MUX est un démultiplexeur :

s 1 s f f f f
2 0 1 2 3

0 0 w 0 0 0
0 1 0 w 0 0
1 0 0 0 w 0
1 1 0 0 0 w

Les bits «s» dictent par quelle sortie passera l'entrée. Toutes les
autres sorties sont des zéros.

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Encodeur binaire
Un encodeur binaire transforme 2n-bits de format «one-hot» en code
binaire de n-bits :

w 3 w w
2 1 w y
0 1 y 0

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

'One-hot' (un chaud) : Seulement un bit est «1»,


toutes les autres sont «0».

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Encodeur de priorité
Un encodeur de priorité n'a pas besoin d'une entrée de format «one-
hot». Seulement le bit le plus significatif à l'entrée détermine la
sortie :
w w3 2 w w y y z
1 0 1 0

0 0 0 0 x x 0
0 0 0 1 0 0 1
0 0 1 x 0 1 1
0 1 x x 1 0 1
1 x x x 1 1 1

Cet encodeur a une sortie supplémentaire (z) pour addresser la


situation où il n'y-a que des zéros à l'entrée.

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Décodeur binaire
Ce n'est pas difficile à deviner qu'un décodeur binaire transforme un
code binaire de n-bits en 2n-bits de format «one-hot».

w 1 w 0 y y
3 2 y y
1 0

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

Pouvez-vous dessiner le circuit de ce dispositif directement à partir de


la table de vérité ?

Quel autre type de décodeur sera utile ?


ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Décodeur BCD à 7-seg
Un décodeur sera très utile pour faire la conversion de Binary-Coded-
Decimal (BCD) aux signaux qui correspondent à un afficheur de 7-
segments.

Notez que A, b, c, d, E et F peuvent être façilement affichés aussi. Ça


donnerait quelle sorte de décodeur ?

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Addition de deux bits
On a appris comment faire l'addition binaire lors du premier cours
Maintenant on a les outils pour concevoir un circuit qui fait justement
ça :
x + y = ...

x y s c (somme)
0 0 0 0
0 1 1 0
1 0 1 0
(retenue)
1 1 0 1 (“carry” en anglais)

Ce circuit «demi-additionneur» (half-adder) est simple. Est-ce-qu'on


peut s'en servir de ce circuit pour faire l'addition à plusieurs bits ?

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Addition itérative de deux bits
Si on espère faire itérativement l'addition de deux bits, il faut inclure
une entrée de retenue à notre circuit :

cin x y s c out
C
XY
00 01 11 10
0 0 0 0 0 0 0 1 0 1 s=
0 0 1 1 0 1 1 0 1 0
0 1 0 1 0
0 1 1 0 1
XY
1 0 0 1 0 C 00 01 11 10
1 0 1 0 1 0 0 0 1 0 c =
out

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

Et alors ça donne quoi comme circuit ???

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Addition binaire complet
Voici le circuit d'un additionneur binaire complet :

Maintenant, pensez à comment on pourrait utiliser itérativement ce


circuit pour faire l'addition de n-bits...

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
«Ripple-Carry Adder»
Pour faire l'addition de n-bits, on regroupe des additionneurs binaires
complets comme ainsi :

Façile ! Mais ce circuit a un gros inconvénient. Comptez le nombre


de portes entre cin et cout. Il-y-a alors un long délai de propagation sur
les retenues. Est-ce-qu'on peut améliorer la situation ?

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Anticipation de retenue
Il faudrait alors minimiser le nombre de portes que doivent franchir les
retenues. Notez que la i+1ième retenue est égale à :

ci+1 = xiyi + xici + yici


ci+1 = xiyi + (xi + yi)ci
ci+1 = gi + cipi
Avec gi = xiyi et pi = xi + yi

Ça fait que les trois premières retenues après c0 sont :


c1 = g0 + p0c0
c2 = g1 + p1g0 + p1p0c0
c3 = g2 + p2g1 + p2p1g0 + p2p1p0c0
etc...

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
«Carry Lookahead Adder»
On vient de voir que c'est possible de calculer chaque retenue avec
deux couches de portes. Alors notre additionneur devient :
Sigma Block
Anticipation cin
cout
de retenues xyc
p
x1 y1 c1 x0 y0 c0 g
etc...
p1 g1 Sigma p0 g0 Sigma
Block Block

s1 s0 s
Peu importe «n», dans le pire cas, il-n'y-a que 4 portes entre une
entrée et une sortie !
ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Additionneurs en général
On a vu le «ripple-carry adder» et le «carry-lookahead adder». Peu
importe leur structure interne, les additionneurs utilisent le symbole
suivant :

Maintenant, comment ferait-on la soustraction ? Serait-il possible de


recycler l'additionneur pour le faire ? Peut-être en se servant du
complément à deux ? Wink wink, nudge nudge...

Addition 0100 0100 Soustraction


complément à deux
(4 + 2 = 6) + 0010 + 1110 (4 – 2 = 2)
0110 0010
ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Soustraction
Pour obtenir un soustracteur, il faut faire le complément à deux sur
une entrée d'une additionneur. Faire le complément à deux, ce n'est
qu'inverser toutes les bits et ajouter 1 :

(OUX = Inverseur avec 'enable')

(+1)

Ce circuit est donc capable de faire l'addition ou la soustraction.


L'opération effectué dépend de l'entrée Add/Sub.

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Dépassement
N'oubliez pas que dans l'addition et soustraction en format
complément à deux, il-y-a dépassement quand :

les deux retenues les plus significatives ne sont pas pareils

On peut détecter ce condition simplement en rajoutant une porte OUX


à notre additionneur.

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Comparateur
On peut appliquer l'idée d'itération à la conception d'un comparateur
aussi. Voici un comparateur à un bit :
xi yi

Gi+1 Gi
Comparateur
Ei+1 Ei
à un bit
Li+1 Li

G: x>y E: x=y L: x<y


Plus Grand Égal Plus petit
(Greater than) (Equal to) (Less than)

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Comparateur itératif
On peut faire un comparateur à n-bits avec n comparateurs à un bit :

xn yn x0 y0

Gn 0
Comparateur Comparateur
En ... 1
à un bit à un bit
Ln 0

C'est à dire qu'il ne faut que concevoir un comparateur à un bit – les


comparateurs à n-bits sont faciles à construire !

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Table de vérité du comparateur
Remplissez vous-même la table de vérité :

xi yi Ei Gi Li Ei+1 Gi+1 Li+1


0 0 1 0 0
0 0 0 1 0
0 0 0 0 1 Ce n'est pas trop dur puisqu'il-y-a
0 1 1 0 0 beaucoup de cas facultatifs.

0 1 0 1 0 Pourquoi ?
0 1 0 0 1
Parce-que EGL est «one-hot».
1 0 1 0 0
1 0 0 1 0 Les cas qui ne sont pas dans la
table sont tous facultatifs.
1 0 0 0 1
1 1 1 0 0
1 1 0 1 0
1 1 0 0 1

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Circuit du comparateur
Je sais que vous êtes maintenant tous maîtres de simplification, alors
on saute directement au circuit :
xi yi

Ei Ei+1

Gi Gi+1

Li
Li+1

(Le NOUX sauve plusieurs portes – c'est possible d'obtenir cette


simplification avec un peu de manipulation booléenne)

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Multiplication itérative
La multiplication itérative ne fait pas partie de la matière du cours,
mais je le vous présente vite pour le fun :

q1 q0
x m1m0

p3p2p1p0

Tout ça pour dire que l'itération peut être très utile pour la conception
de toutes sortes de grands circuits.
ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Sommaire (par Monsieur T)
Étudiez fort pour l'intra.

Apprenez les fonctions de toutes les circuits


usuels présentés dans ce cours. Vous
pouvez toujours dériver leur implémentation.

Apprenez bien comment c'est possible


d'utiliser l'itération pour concevoir facilement
des grands circuits.

Bonne chance à l'intra !

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006
Lecture et devoirs
Lecture recommandé :
5.1, 5.3 – 5.6

Et, si vous n'avez rien d'autre à faire :


Étudiez !

Problèmes pertinents :
5.5, 5.9, 5.10c, 5.11c, 5.12c, 5.13c, 5.19,
5.21d, 5.22d, 5.24

I pity the fool who don't do his devoirs!

ELE1300 Circuits Logiques - Jeff Dungen - École Polytechnique Montréal - Hiver 2006

Vous aimerez peut-être aussi