Cours 7 - Polytechnique Montréal
Transcription
Cours 7 - Polytechnique Montréal
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: [email protected] 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 0 0 1 1 1 s f f f f 0 w 0 0 0 1 0 w 0 0 0 0 0 w 0 1 0 0 0 w 2 0 1 2 3 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 0 0 0 1 3 w w 0 0 0 1 1 0 0 0 2 1 w y 1 0 0 0 0 1 0 1 0 1 y 0 1 0 1 0 '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 «onehot». Seulement le bit le plus significatif à l'entrée détermine la sortie : w w 0 0 0 0 0 0 0 1 1 x 3 2 w w y y z 0 0 x x 0 0 1 0 0 1 1 x 0 1 1 x x 1 0 1 x x 1 1 1 1 0 1 0 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 0 0 1 1 1 w 0 1 0 1 0 y y 0 0 0 0 0 1 1 0 3 2 y y 0 1 1 0 0 0 0 0 1 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-CodedDecimal (BCD) aux signaux qui correspondent à un afficheur de 7segments. 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 0 0 1 1 y 0 1 0 1 s 0 1 1 0 c 0 0 0 1 (somme) (retenue) (“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 : c 0 0 0 0 1 1 1 1 in x 0 0 1 1 0 0 1 1 y 0 1 0 1 0 1 0 1 s c 0 0 1 0 1 0 0 1 1 0 0 1 0 1 1 1 out XY C 00 01 11 10 0 0 1 0 1 1 1 0 1 0 s= XY C 00 01 11 10 0 0 0 1 0 1 0 1 1 1 c = out 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 : Anticipation de retenues cout cin Sigma Block xyc p x1 y1 c1 etc... p1 g1 Sigma p0 Block s1 x0 y0 c0 g g0 Sigma Block 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 (4 + 2 = 6) 0100 + 0010 0110 complément à deux 0100 + 1110 0010 Soustraction (4 – 2 = 2) 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 Gi+1 Ei+1 Li+1 G: x>y yi Comparateur à un bit Gi Ei Li 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 Gn En Ln yn Comparateur à un bit x0 ... y0 Comparateur à un bit 0 1 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 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 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 1 0 0 1 0 0 1 0 0 1 Ce n'est pas trop dur puisqu'il-y-a beaucoup de cas facultatifs. Pourquoi ? Parce-que EGL est «one-hot». Les cas qui ne sont pas dans la table sont tous facultatifs. 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