Escolar Documentos
Profissional Documentos
Cultura Documentos
1 -
CHAPITRE III :
CIRCUITS DIGITAUX : PRIMITIVES DE MOYENNE COMPLEXITE
INTRODUCTION
Lobjectif de ce chapitre est de recenser les circuits catalogue plus complexes que
portes et bascules que lon peut utiliser pour la synthse de circuits digitaux.
Dans le cas de la conception de cartes, ces primitives correspondent des botiers
existants, dans le cas de la conception de circuits intgrs, il sagit en gnral
dassemblages prdfinis, auxquels le concepteur peut faire appel dans la description du
circuit raliser.
1. PRIMITIVES COMBINATOIRES
1.1. MULTIPLEXEURS
1.1.A.
DEFINITION
- III.2 -
s1 s0
x0
x1
x2
x3
M
code s1 s0
0
1
2
3
y = s1 s0 x0+ s 1 s0 x1 + s1 s0 x2+ s1 s0 x3
0
0
1
1
0
1
0
1
x0
x1
x2
x3
s
x0
s
x0
x1
x0
s
s
y
x1
a) Schma symbolique
b) Ralisation NMOS
x1
s
c) Ralisation CMOS
Le signal est cependant dgrad, et il n'est pas possible d'utiliser des chanes de
multiplexeurs de ce type pour construire des multiplexeurs beaucoup d'entres, sans
insrer des amplificateurs (notez qu'en CMOS, on implmente sur chaque chemin un
transistor de type N et un transistor de type P, pour transmettre correctement la fois le
0 et le 1).
1.1.C.
a b c f(a,b,c)
000
001
010
011
100
101
110
111
0
1
1
0
1
1
0
0
0
1
1
0
1
1
0
0
0
1
2
3
4
5
6
7
f(a,b,c)
a b
a b f(a,b,c)
00
01
10
11
c
c
1
0
c
c
1
0
0
1
2
3
f(a,b,c)
- III.4 Exemple
cc
1 1
b
c c
1 0
cc
1 1
b
c
b
c
a
b
b) implmentation l'aide
de multiplexeurs 2 1
a) BDD de la fonction
f(a,b,c)
b
1
c) BDD simplifi
Les multiplexeurs ralisent une slection des informations mises sur leurs entres de
valeurs : ils sont souvent utiliss pour "aiguiller" les flots d'informations dans un circuit
complexe : pour slectionner un flot d'information parmi 2n flots de b bits, on utilise b
multiplexeurs 2n ->1 (Fig.III-5).
- III.5 s
A0
A1
Ab-1
0
1
Y0
0
1
Y1
Bb-1
B0
B1
0
1
b
0
1
Yb-1
b multiplexeurs 2 -> 1
b) reprsentation symbolique
Suivant la valeur de la variable de slection s, soit les b bits de la nappe de fils A, soit
les b bits de la nappe de fils B sont aiguills vers la nappe de fils Y de b bits.
Exercices
III-1 Proposer une ralisation d'un multiplexeur 2 -> 1 en portes NAND et valuer le
nombre de transistors ncessaire en NMOS et en CMOS. Comparer ce nombre celui
de la ralisation directe en transistors NMOS ; en transistors CMOS (cf. figure III-2).
Proposer une ralisation d'un multiplexeur 2 -> 1 partir de la porte complexe
ab + cd et comparer son nombre de transistors celui des solutions prcdentes ; que
pensez-vous de la qualit du signal en sortie pour les diffrentes solutions ? Conclure.
III-2 Proposer une ralisation dune porte XOR partir dun multiplexeur 2 ->1.
III-3 Raliser la fonction Maj(x,y,z) avec un multiplexeur 8 -> 1 ; avec un multiplexeur
4 ->1. Faire son arbre de dcision binaire, le simplifier et proposer une ralisation avec
des multiplexeurs 2 -> 1.
On prend comme cot d'un multiplexeur 2n -> 1 : 2n + n + 1 (il s'agit d'un cot moyen
entre la ralisation en portes et la ralisation en transistors dans le cas de la conception
de circuits intgrs, et correspond au nombre de broches utilises du botier dans le cas
de conception de cartes base de boitiers MSI). Evaluer les diffrentes ralisations de
la fonction Maj(x,y,z) avec des multiplexeurs , et les comparer avec la ralisation en
portes NAND.
III-4 Mme exercice pour la fonction Impair (x, y, z) = x y z
- III.6 -
DEFINITION
D
E
M
U
X
0
1
2
3
y0 = s1 s 0 x
y1 = s1 s 0 x
y2 = s1 s 0 x
code s1 s0 y0 y1 y2 y3
0
1
2
3
0
0
1
1
0
1
0
1
x
0
0
0
0
x
0
0
0
0
x
0
0
0
0
x
y3 = s1 s0 x
Tableau de valeurs gnralis
d'un dmultiplexeur 1 -> 4
Les dmultiplexeurs sont aussi des circuits prdfinis (1 -> 4, 1 -> 8, 1 -> 16), et il est
possible de les combiner pour construire des systmes de dmultiplexage plus
complexes.
1.2.B.
Un dmultiplexeur 1 -> 2n, dont l'entre de valeur est fixe 1, gnre les 2n monmes
canoniques des n variables de slection. Comme une fonction boolenne s'exprime sous
la forme de la somme des monmes canoniques associs aux points o elle vaut 1, une
simple porte OR effectuant la somme des sorties correspondantes d'un dmultiplexeur
1 -> 2n permet de raliser toute fonction de n variables.
- III.7 Exemple
abc
a b c f(a,b,c)
000
001
010
011
100
101
110
111
f(a,b,c) =
0
1
1
0
1
1
0
0
0
1
2
3
4
5
6
7
f(a,b,c)
(1, 2, 4, 5)
Une ralisation de la fonction f(a,b,c) (dont des ralisations avec des multiplexeurs ont
t proposes figures III-3 et III-4) est donne figure III-7. Il n'y a pas de mthodes
systmatiques pour minimiser le cot de telles ralisations en utilisant des
dmultiplexeurs moins complexes.
1.2.C.
Soient 2n "objets" matriels, chacun d'entre eux pouvant tre slectionn par la mise 1
d'un signal SELi (Fig.III-8-a). On veut gnrer ces 2n signaux de slection partir de :
- un signal de slection SEL, qui indique qu'on veut slectionner l'un d'entre eux,
- le numro, cod sur n bits, de l'objet slectionner, qu'il faut dcoder (Fig. III-8-b).
On peut utiliser un dmultiplexeur 1-> 2n pour gnrer ces signaux (Fig.III-8-c):
- le signal SEL est connect l'entre de valeurs
- le code du numro permet la slection de la sortie activer
- la sortie i gnre le signal SELi.
Un tel montage est appel dcodeur (FigIII-8-d).
SELi
0
1
1
.
.
1
objet i
0
1
.
. n-1
2
0
1
0
.
.
0
....
....
....
....
....
....
0
0
0
.
.
1
b) tableau de valeurs
a) objet slectionner
SEL
numro
n
0
SEL
0
0
1
.
.
0
n-1
SEL0
SEL1
.
.
. n-1
2
n-1
SEL2
c) montage du dmultiplexeur
1 -> 2n en dcodeur
1
numro
2
.
.
.
.
. n-1
2
d) schma symbolique
d'un dcodeur
III-5 Comparer les diffrentes ralisations de la fonction f(a,b,c), donnes figures III3,-4 et -7, en prenant comme cot d'un dmultiplexeur 1 -> 2n : 2n + n + 1.
III-6 Proposer une ralisation de la fonction Maj(x,y,z) l'aide d'un dmultiplexeur ;
mme chose pour la fonction Impair (x, y, z) = x y z.
III-7 Proposer une ralisation d'un dmultiplexeur 1 -> 4 base de portes AND et
valuer son cot(en nombre de transistors NMOS). Essayer de raliser le mme
dmultiplexeur directement avec des rseaux de transistors nMOS (attention, les sorties
doivent tre toujours dfinies). Conclure.
Dfinition
Les PLA (Programmable Logic Arrays) sont des assemblages de portes en 2 tages
(Fig.III-9) :
- tage ET, qui permet de raliser des monmes des variables d'entre du PLA,
- tage OU, qui permet de raliser des sommes des monmes gnrs par l'tage ET
Un PLA est utile pour raliser plusieurs fonctions des mmes variables : dans ce cas,
certains des monmes raliss par l'tage ET peuvent tre utiliss par plusieurs sommes
de l'tage OU.
a
k
entres
tage
ET
l
monmes
ab
ac
ab
f
tage
OU
a) tages ET et OU d'un PLA
m
sorties
- III.10 d'entre (sous forme normale et complmente) ; les lignes verticales de l'tage ET
portant la valeur des monmes, on indique par un les croisements de lignes o une
connexion doit tre effectue. Dans l'tage OU, on indique de mme quels monmes
contribuent la somme effectuer pour raliser chaque fonction.
Ralisation de PLA en technologie MOS
En technologie MOS, les PLA sont raliss avec des portes NOR : que ce soit en
NMOS ou en CMOS, seul le rseau de transistors nMOS (rseau de connexion au 0) est
implment : le rseau de connexion au 1 est ralis par un transistor nMOS ou pMOS
toujours passant et de forte rsistance.
Les marques de connexions, indiques sur le schma symbolique de la figure III-9-b
correspondent en fait des connexions aux grilles des transistors nMOS, qui dfinissent
les entres des portes NOR (Fig.III-10).
1
a
b
c
La figure III-10 montre une ralisation pseudo-NMOS du PLA de la figure III-9-b. Les
inverseurs en entre et en sortie permettent la synthse avec des portes NOR
d'expressions de la forme , et de plus amplifient les signaux en entre et en sortie
(ce qui est ncessaire, pour de "vrais" PLA, qui ont un grand nombre de variables et de
sorties). Les lignes en pointills sont connectes la masse.
- III.11 1.3.B.
MEMOIRES ROM
Les mmoires ROM (Read Only Memory) peuvent tre considres comme des PLA
dont l'tage ET gnre tous les monmes canoniques des variables d'entre, c'est--dire
est en fait un dcodeur. L'tage OU permet de slectionner les monmes canoniques
dont on veut faire la somme. Une ROM est donc une implmentation prdfinie de
circuits tels que celui donn figure III-7 (synthse laide de DEMUX).
Le schma symbolique d'une ROM ralisant les fonctions de la figure III-9-b est donn
figure III-11.
0
1
a
2
3
abc f g
000
001
010
011
100
101
110
111
01
01
10
10
00
11
00
11
5
6
7
f
a) tableaux de valeurs
de f (a,b,c) et g(a,b,c)
- III.12 On parle de logique alatoire pour un circuit ralis par une synthse en portes, de
logique rgulire pour un circuit ralis base de PLA ou de ROM : ces termes font
rfrence aux problmes poss par le trac des connexions entre portes (logique
alatoire), par opposition la rgularit des connexions pr-dfinies dans les circuits
programmables. Dans un circuit intgr, on peut estimer que la densit de transistors est
de 10% 20% suprieure en logique rgulire. Par contre, tous les transistors d'un PLA
ou d'une ROM ne sont pas utiliss (cf Fig.III-10). En ce qui concerne la conception de
cartes, il est vident que l'intgration suprieure des circuits programmables permet un
gain de place important.
Exercices
III-8 Donner le schma symbolique d'un PLA et d'une ROM ralisant les fonctions
Maj(x,y,z) et Impair(x,y,z).
III-9 On se place dans le cadre de la conception de circuit intgr. Evaluer le nombre
de transistors du PLA et de la ROM dfinies dans l'exercice III-8 (y compris les
transistors non utiliss). Comparer ce nombre celui ncessaire pour la synthse en
portes (portes NAND et portes ab + cd , en NMOS ou en pseudo-NMOS) de ces deux
fonctions. Si la densit des transistors est 20% suprieure en logique rgulire, quelle
est la meilleure solution ?
III-10 On se place dans le cas de la conception de cartes partir de botiers. Le critre
de complexit est alors le nombre de broches utilises. En supposant qu'il existe des
botiers PLA et ROM qui ont exactement la taille ncessaire (en gnral, les tailles
proposes sont bien suprieures), comparer la complexit des diffrentes ralisations
qui ont t proposes pour les fonctions Maj(x,y,z) et Impair(x,y,z) :
-
- III.13 -
2. CIRCUITS ARITHMETIQUES
2.1. REPRESENTATION DES NOMBRES
2.1.A.
Nous utilisons tous les jours une reprsentation dcimale (base 10), o un nombre est
reprsent par une suite de chiffres dcimaux (de 0 9) et la valeur d'un nombre est une
somme pondre des chiffres :
230510 = 2 . 10 3 + 3 . 10 2 + 0 . 10 1 + 5 . 10 0
Chaque poids est une puissance de 10, d'aprs la position du chiffre.
Pour un nombre rel, les chiffres aprs la virgule sont pondrs par une puissance
ngative de 10 :
4,02910 = 4 . 10 0 + 0 . 10 -1 + 2 . 10 -2 + 9 . 10 -3
Rajouter des 0 gauche de la partie entire ou droite de la partie fractionnaire ne
modifie pas la valeur du nombre :
4,02910 = 000004,029000010
Un ordinateur, lui, manipule des nombres cods avec 2 chiffres seulement, 0 et 1, donc
reprsents en binaire (base 2) :
11012 = 1 . 2 4 + 1 . 2 3 + 0 . 2 2 + 1 . 2 0
10,1012 = = 1 . 2 1 + 0 . 2 0 + 1 . 2 -1 + 0 . 2 -2 + 1 . 2 -3
On voit la ncessit d'tre extrmement prudent avec les notations ; on a ici :
- indiqu la base utilise en indice, avec la valeur de la base en numration dcimale
(sinon, il faudrait utiliser des notations du type 234dix ou 101deux)
- exprim la valeur du nombre l'aide de la base 10 (expressions en italique).
Un chiffre (dcimal) en Anglais est un digit, un chiffre binaire est un binary digit ou
bit.
Plus gnralement, un nombre peut tre reprsent en base b quelconque (avec b 2)
n1
sous la forme cn-1 cn-2 ...c0 , c-1 c-2 ... c-p, sa valeur tant
c .b
i=p
Le chiffre le plus gauche est appel chiffre de poids fort, le plus droite chiffre de
poids faible.
- III.14 Outre la numration binaire (base 2), on utilise aussi la numration octale (base 8, avec
les chiffres de 0 7) et la numration hexadcimale (base 16, chiffres 0,...,9, A, B, C,
D, E, F), voir tableau III-1.
dcimal
binaire
hexadcimal octal
10
11
100
101
110
111
1000
10
1001
11
10
1010
12
11
1011
13
12
1100
14
13
1101
15
14
1110
16
15
1111
17
16
10000
10
20
= 35C916
31278
=3.83+1.82+2.81+7.80
=3.29+1.26+2.23+7.20
= 011 001 010 1112
=25 +24+22+21
= 5610
7843
3921
1960
980
490
245
122
61
30
15
7
3
1
RESTES SUCCESSIFS
QUOTIENTS SUCCESSIFS
La conversion dcimal vers binaire est plus difficile et se fait par divisions successives
par 2 : le reste de chaque division donne un chiffre de la reprsentation binaire, du bit
de poids faible au bit de poids fort :
1
1
0
0
0
1
0
0
0
1
1
1
1 1 1 0 0 0 1 0 0 0 1 1
2.1.C
- III.16 -
2.2. ADDITIONNEURS
2.2.A.
0
1
0
1
0
0
0
1
ai b i
ci +1
a i b i c i+1 s i
0
0
1
1
bi
c i+1
0
1
1
0
si
a) tableau de valeurs
si
b) entres/sorties du circuit
c) ralisation du circuit
a
a i b i ci
ci+1 s i
0
0
0
0
1
1
1
1
0
0
0
1
0
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
1
0
1
0
0
1
bi
ci +1
ci
c i+1
ci
si
si
c) ralisation du circuit
B
n
additionneur
n-bits
n
an-1b n-1
an-2b n-2
a 1 b1
a 0 b0
0
cn
sn-1
s n-2
s1
s0
Dans ce circuit, la retenue calcule un tage est propage vers l'tage suivant pour
qu'il en tienne compte dans son calcul (carry-propagate adder). Ce circuit a le mrite de
la simplicit grce sa rgularit (utilisation de n exemplaires du mme circuit
additionneur 1-bit), mais est trs lent : son chemin critique est le chemin de propagation
des retenues, qui comporte 2n portes (2n - 1 portes si l'additionneur de poids faible est
un 1/2 additionneur).
Un tel circuit est appel circuit itratif. Il est possible de le dcrire dans un langage de
description de circuits rapidement : dans une premire tape, on dfinit un bloc
additionneur 1-bit ( 3 entres et 2 sorties), puis la connexion des n exemplaires du bloc
est dcrite (sans oublier la retenue entrante 0 du premier additionneur 1-bit) :
s(0), c(1) <= add1bit [a(0), b(0), Gnd]
For m = 1 : n-1 s(m), c(m+1) <= add1bit [a(m), b(m), c(m) ]
- III.18 Attention, la primitive For d'un langage de description de circuits a une interprtation
spatiale (n-1 exemplaires du circuit), non temporelle comme dans un langage de
programmation (n-1 excutions squentielles du corps de boucle).
Il est possible de concevoir des additionneurs plus rapides, en particulier par
anticipation de la retenue : connaissant les k bits de poids faibles des nombres A et B, il
est possible de dterminer la retenue entrante sur le k+1-me additionneur sans avoir
effectu entirement l'opration d'addition sur ces k bits (carry lookahead adder)
Exercice
valeur absolue | A |
A = (-1)S | A |
Les valeurs sont dans l'intervalle [ - (2n-1 -1) , + (2n-1 -1) ], avec un 0 positif et un 0
ngatif.
- soit en complment 2n : un nombre ngatif est cod par 2n - | A |.
code de A : S
Les valeurs sont dans l'intervalle [ - 2n-1 , + (2n-1 - 1)], avec un seul 0 (positif).
Exemple
- III.19 -
nombre
-8
-7
-6
-5
-4
-3
-2
-1
0
1
2
3
4
5
6
7
code en signe
code en
et valeur absolue complment 2
1111
1110
1101
1100
1011
1010
1001
1000 ou 0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
0000
0001
0010
0011
0100
0101
0110
0111
- III.20 -
add / sous
B
n
an-2 bn-2
01
01
a1 b1
a 0 b0
additionneur
/
soustracteur
n-bits
n
S
a n-1 b n-1
01
01
add /
sous
cn
s n-1
s n-2
s1
s0
Si l'entre de commande add /sous est 0, l'addition des 2 codes A et B est effectue ;
sinon, la valeur complmente des bits de B est slectionne par les multiplexeurs, la
retenue entrante de l'additionneur est 1, et l'addition de A et du complment de B est
effectue. Notez le codage de la commande d'addition / soustraction qui permet de
commander directement le circuit.
Le mme type de montage peut tre ralis en utilisant un additionneur anticipation de
retenue.
Exercices
- III.21 A
n
B
n
Cin
f 3 f 2 f1 f0 M=1
entres de
commandes
0
0
M
0
UAL
f3 f2 f1 f0
0
0
0
znvc
n
0
indicateurs
0
S
1
indicateurs :
1
- z :( A moins B = 0)
1
- n : (A moins B < 0)
1
- v : dbordement en complment 2 1
- c : retenue sortante
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0 A
1 A+B
0 AB
1 0
0 AB
1 B
0 AB
1 AB
0 A+B
1 AB
0 B
1 AB
0 1
1 A+B
0 A+B
1 A
M=0
Cin=0 Cin=1
A
Aplus1
AplusBplus1
moins1 0
AmoinsB
AplusB AplusBplus1
AplusA AplusAplus1
Amoins1A
Les sorties du circuit sont le rsultat sur n bits, et des indicateurs sur le rsultat de
l'opration.
3.4. MULTIPLIEURS
La multiplication d'entiers positifs cods en binaire consiste (comme en dcimal) :
- calculer les produits partiels : dans le cas binaire, un produit partiel est soit 0, soit le
multiplicande lui-mme,
- ajouter les produits partiels convenablement dcals : dans une multiplication " la
main", on ajoute tous les produits partiels aprs les avoir calculs ; un circuit les
ajoutera au fur et mesure de leur calcul, donc ajoutera un produit partiel un
rsultat intermdiaire (qui est la somme des produits partiels antrieurs).
Un multiplieur de nombres de n bits peut tre ralis partir de n - 1 additionneurs n
bits (Fig. III-17).
- III.22 a3
a1
a2
a0
b0
b1
0
0
b2
0
b3
0
s7
s6
s5
s4
s3
s2
s1
s0