chapitre i :

51
- I.1 - CHAPITRE I : FONCTIONS BOOLEENNES ET SYNTHESE DE CIRCUITS COMBINATOIRES 1. ALGEBRE DE BOOLE ET FONCTIONS BOOLEENNES Après une brève présentation de l'Algèbre de Boole (§1.1.), les fonctions booléennes et leurs représentations sont étudiées (§1.2.). Certaines fonctions remarquables et leurs propriétés sont introduites au §1.3. 1.1. ALGEBRE DE BOOLE L'Algèbre de Boole simple, à deux éléments, qui est utilisée pour la conception de circuits est présentée au §1.1.A. Après une rapide présentation de la structure d'Algèbre de Boole (§1.1.B), les règles du calcul booléen sont données au §1.1.C. 1.1.A. ALGEBRE DE BOOLE A DEUX ELEMENTS On considère un ensemble à deux éléments, notés 0 et 1 : B = {0,1} muni d'une opération unaire, la complémentation, et de deux opérations binaires, addition et multiplication. Ces trois opérations sont définies ci-dessous.

Upload: vuonganh

Post on 05-Jan-2017

248 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: CHAPITRE I :

- I.1 -

CHAPITRE I :

FONCTIONS BOOLEENNES ET SYNTHESE DE CIRCUITS COMBINATOIRES

1. ALGEBRE DE BOOLE ET FONCTIONS BOOLEENNES

Après une brève présentation de l'Algèbre de Boole (§1.1.), les fonctions booléennes et leurs représentations sont étudiées (§1.2.). Certaines fonctions remarquables et leurs propriétés sont introduites au §1.3.

1.1. ALGEBRE DE BOOLE

L'Algèbre de Boole simple, à deux éléments, qui est utilisée pour la conception de circuits est présentée au §1.1.A. Après une rapide présentation de la structure d'Algèbre de Boole (§1.1.B), les règles du calcul booléen sont données au §1.1.C.

1.1.A. ALGEBRE DE BOOLE A DEUX ELEMENTS

On considère un ensemble à deux éléments, notés 0 et 1 : B = {0,1} muni d'une opération unaire, la complémentation, et de deux opérations binaires, addition et multiplication. Ces trois opérations sont définies ci-dessous.

Page 2: CHAPITRE I :

- I.2 -

COMPLEMENTATION ADDITION MULTIPLICATION

a → a (a,b) → a +b (a,b) → a • b

Table : _ . 0 1 1 0

Table : + 0 1 0 0 1 1 1 1

Table : • 0 1 0 0 0 1 0 1

Propriétés :

a = a

Propriétés : 0 élément neutre : a + 0 = a 1 élément absorbant : a + 1 = 1 idempotence : a + a = a somme d'un élément et de son complément égale à 1 a + a = 1

commutativité : a + b = b + a associativité : a + (b + c ) = ( a + b ) + c

Propriétés : 1 élément neutre : a • 1 = a 0 élément absorbant : a • 0 = 0 idempotence : a • a = a produit d'un élément et de son complément égal à 0 a • a = 0

commutativité : a • b = b • a associativité : a • (b • c ) = ( a • b ) • c

Tableau I-1 : opérations élémentaires

On appelle classiquement : - NON (NOT) l'opération de complémentation, - OU logique (logical OR) l'opération d'addition, - ET logique (logical AND) l'opération de multiplication.

Page 3: CHAPITRE I :

- I.3 -

1.1.B. STRUCTURE D'ALGEBRE DE BOOLE

L'ensemble B = {0,1}, muni des opérations d'addition, de multiplication et de complémentation définies ci-dessus, a une structure d'algèbre de Boole ; il respecte les axiomes de l'algèbre de Boole [1], qui sont énoncés ci-dessous :

A1 : l'addition et la multiplication sont commutatives et associatives ∀ a ∈ B, ∀ b ∈ B, a + b = b + a et a • b = b • a ∀ a ∈ B, ∀ b ∈ B, ∀ c ∈ B, (a + b) + c = a + (b + c) et (a • b) • c = a • (b • c) A2 : 0 est un élément neutre pour l'addition 1 est un élément neutre pour la multiplication ∀ a , 0 + a = a + 0 = a et 1 • a = a • 1 = a A3 : chaque opération binaire est distributive par rapport à l'autre ∀ a ∈ B, ∀ b ∈ B, ∀ c ∈ B, a • (b + c) = (a • b) + (a • c) et a + (b • c) = (a + b) • (a + c) A4 : la somme d'un élément et de son complémentaire est égale à 1. le produit d'un élément et de son complémentaire est égal à 0

∀ a ∈ B , a + a = 1 e t a • a = 0

Remarque 1

On démontre que les opérations proposées respectent les axiomes par simple examen de tous les cas.

Remarque 2 :

L'addition et la multiplication étant associatives, on peut écrire :

x1 + (x2 + x3) = x1 + x2 + x3, x1 • (x2 • x3) = x1 • x2 • x3 = x1 x2 x3

Pour simplifier l'écriture, on note x1 + (x2 • x3) par x1 + x2 x3, ce qui implique une priorité implicite du produit par rapport à la somme.

Remarque 3 :

Une algèbre de Boole n'a pas forcément 2 éléments. Par exemple, l'ensemble P(E) des parties d'un ensemble E, muni des opérations union, intersection et complémentation au sens ensembliste est une algèbre de Boole (finie lorsque E est fini, infinie sinon).

L'ensemble {0,1}2 = {(0, 0) ; (0, 1) ; (1, 0) ; (1,1)}, muni des opérations déduites de l'algèbre de Boole à 2 éléments (addition, multiplication et complémentation terme à terme, par exemple (a,b) + (c,d) = (a+b,c+d)) est une algèbre de Boole à 4 éléments. De

Page 4: CHAPITRE I :

- I.4 -

même, tout ensemble {0,1}n avec n ≥ 2 et des opérations définies de façon similaire est une algèbre de Boole à 2n éléments.

L'ensemble des fonctions booléennes de n variables, muni des opérations

+ : (f + g)(x1, ...xn) = f(x1, ...xn) + g(x1, ... xn)

• : (f • g)(x1, ...xn) = f(x1, ...xn) • g(x1, ... xn)

: f(x1, ..., xn) = f(x1, ..., xn)

a aussi une structure d'algèbre de Boole (à 22néléments).

Remarque 4 : principe de dualité

Les axiomes de l'algèbre de Boole sont parfaitement "symétriques" pour l'addition et la multiplication. Lorsque (B, +, •, ) est une algèbre de Boole, (B, •, +, ) est aussi une algèbre de Boole.

Tout théorème en algèbre de Boole se présente sous deux formes duales, l'une déduite de l'autre en remplaçant :

- tout signe + par • et inversement

- tout 1 par 0 et inversement.

Exemple :

∀ a ∈ B a • 0 = 0 ↔ ∀ a ∈ B a + 1 = 1

∀ a ∈ B a + a = 1 × ∀ a ∈ B a • a = 0

1.1.C. REGLES DU CALCUL BOOLEEN

Outre les axiomes de l'algèbre de Boole, un ensemble de théorèmes déduits de ces axiomes peut être utilisé :

Page 5: CHAPITRE I :

- I.5 -

Absorption (un terme d'une a + a b = a somme absorbe ses multiples) Absorption (forme duale) a (a + b) = a

Redondance a b + a c + b c = a b + a c

Redondance (forme duale) (a + b)( a + c)(b + c) = (a + b)( a + c)

Cas particuliers de redondance a + a b = a + b a b + a b = b

a ( a + b) = a b (a + b)( a + b) = b

Théorème de De Morgan :

Le complément d'une somme a + b = a b

est le produit des compléments

Le complément d'un produit a b = a + b

est la somme des compléments

Remarque :

Les règles indiquées ci-dessus sont valables dans toute algèbre de Boole. Dans le cas d'une algèbre de Boole à 2 éléments, il est facile de les prouver par énumération.

Exercices

I-1 Démontrer les propriétés énoncées, soit par énumération des cas possibles, soit par manipulations algébriques en utilisant les axiomes de l'algèbre de Boole. Attention, il n'existe ni opposé ni inverse dans une algèbre de Boole.

I-2 Montrer que l'expression : a + a b + a b c + a b c d ... se simplifie en :

a + b + c + d .....

1.2. FONCTIONS BOOLEENNES

Soit l'ensemble B = {0,1}. Une variable x prenant ses valeurs dans B est dite variable binaire ou booléenne. Une fonction booléenne f de n variables binaires est une application de l'ensemble {0,1}n vers {0,1}

f : {0,1}n → {0,1}

(x1, x2, ...xn) → f (x1, x2, ...xn),

avec x1, x2, ...xn et f (x1, x2, ...xn) prenant leurs valeurs dans {0,1}.

Page 6: CHAPITRE I :

- I.6 -

1.2.A. REPRESENTATION DES FONCTIONS BOOLEENNES

Le n-uplet (x1, x2, ...xn) peut prendre 2n valeurs. On peut définir une fonction booléenne de n variables en indiquant la valeur de la fonction pour chacune des 2n valeurs du n-uplet. On a ainsi défini la fonction en chacun de ses points c'est-à-dire pour chaque combinaison de valeurs de ses variables.

Table de vérité ou tableau de valeurs

Ce type de tableau associe à la liste des 2n combinaisons de valeurs des variables, la liste des valeurs correspondantes de la fonction.

Exemple :

Représentation de la fonction majorité de 3 variables, Maj(x,y,z), qui vaut 1 si et seulement si la majorité des variables est à 1.

Code en base 10

VARIABLES FONCTION

x y z Maj 0 0 0 0 0 1 0 0 1 0 2 0 1 0 0 3 0 1 1 1 4 1 0 0 0 5 1 0 1 1 6 1 1 0 1 7 1 1 1 1

Tableau I-2 : tableau de valeurs de la fonction Majorité de 3 variables

En général, la liste des combinaisons de valeurs des variables est donnée dans l'ordre des entiers codés en binaire.

Deux fonctions sont égales si et seulement si elles ont la même table de vérité.

Il existe 22n fonctions booléennes distinctes de n variables

en effet, la liste de valeurs de la fonction dans la table a N=2n emplacements, chaque emplacement pouvant prendre 2 valeurs. On obtient 2N listes possibles de valeurs, chaque liste définissant une fonction booléenne.

Page 7: CHAPITRE I :

- I.7 -

Représentation spatiale

On peut représenter les 2n combinaisons de valeurs des variables comme les 2n sommets d'un cube de dimension n. Les sommets marqués d'un point représentent les 1 de la fonction.

Exemple :

fonction Maj(x,y,z)

y

110

010

011001

101

000

100

z

x

111

Figure I-1 : représentation spatiale de la fonction majorité

Représentation par arbre de décision binaire

On peut aussi représenter les 2n combinaisons de valeurs des variables comme les 2n feuilles d'un arbre, dont chaque noeud a deux arcs sortants étiquetés par une variable ou son complément : arbre de décision binaire ou BDD (Binary Decision Diagram).

Exemple

Arbre de décision binaire de la fonction Maj (x, y, z)

Page 8: CHAPITRE I :

- I.8 -

Maj(x,y,z) x x y y y y z z z z z z z z 0 0 0 1 0 1 1 1

Figure I-2 : représentation par arbre de décision binaire de la fonction Majorité

Représentation par tableau de Karnaugh

Une autre représentation tabulaire est celle par tableau de Karnaugh : on verra au §3.2 qu'elle permet de rechercher une expression simplifiée d'une fonction.

Exemple

Tableau de Karnaugh de la fonction Maj(x, y, z). Remarquez la disposition des combinaisons de valeurs de y et z : l'ordre 00, 01, 11, 10 permet d'assurer qu'il n'y a qu'un seul changement de valeur des variables entre deux cases adjacentes verticalement ou horizontalement.

y

x 0 0 0 1 1 1 1 0

0

1

0 0 1 0

0 1 1 1

z

Exercice

I-3 Donner les 4 représentations de la fonction Impair(x, y, z), qui vaut 1 si et seulement si un nombre impair de variables est à 1.

1.2.B. EXPRESSION BOOLEENNE D'UNE FONCTION BOOLEENNE

On peut aussi exprimer une fonction booléenne par une expression booléenne, c'est-à-dire une combinaison des variables de la fonction par un nombre fini d'additions, de multiplications et de complémentations booléennes.

Page 9: CHAPITRE I :

- I.9 -

Expansion de Shannon

Soit une fonction booléenne f(x1, x2, ...., xn), définie par sa table de vérité. Il s'agit de trouver une représentation de cette fonction sous forme d'une expression booléenne.

Pour cela, on utilise le théorème d'expansion de Shannon, indiqué ci-dessous :

f(x1, x2, .., xi,.., xn) = xi f(x1, x2, .., 0,.., xn) + xi f(x1, x2, .., 1,.., xn) (i)

Justification :

La variable xi ne pouvant prendre que 2 valeurs, on peut énumérer les cas :

- dans le cas où xi = 0, on déduit de (i), en utilisant les axiomes de base de l'algèbre de Boole :

f(x1, x2, .., xi,.., xn) = 1 f(x1, x2, .., 0,.., xn) + 0 f(x1, x2, .., 1,.., xn) = f(x1, x2, .., 0,.., xn) - dans le cas où xi = 1, on déduit : f(x1, x2, .., xi,.., xn) = 0 f(x1, x2, .., 0,.., xn) + 1 f(x1, x2, .., 1,.., xn) = f(x1, x2, .., 1,.., xn) Ce qui est trivialement vrai.

L'application itérative du théorème de Shannon permet de déterminer une expression booléenne d'une fonction à partir de sa valeur en chaque point (c'est-à-dire à partir de son tableau de valeurs).

Exemple :

Fonction de 2 variables f (x1,x2)

f(x1, x2) = x1 f(0,x2) + x1 f(1, x2)

= x1 [ x2 f(0,0) + x2 f(0, 1)] + x1 [ x2 f(1,0) + x2 f(1, 1)]

= x1 x2 f(0,0) + x1 x2 f(0,1) + x1 x2 f(1,0) + x1 x2 f(1,1)

Si f(x1,x2) est définie par la table de vérité suivante (tableau I-3) :

x1 x2 f 0 0 0 0 1 1 1 0 1 1 1 0

Tableau I-3

Page 10: CHAPITRE I :

- I.10 -

on obtient l'expression suivante :

f(x1, x2) = x1 x2 0 + x1 x2 1 + x1 x2 1 + x1 x2 0

= x1 x2 + x1 x2

Forme duale

L'expansion de Shannon peut s'exprimer sous la forme duale :

f(x1, x2, .., xi,.., xn) =[ xi + f(x1, x2, .., 1,.., xn)] [ xi + f(x1, x2, .., 0,.., xn)] (ii)

Pour une fonction de 2 variables, on obtient l'expression :

f(x1, x2) = [ x1 + x2 + f(1,1)] [ x1 + x2 + f(1,0)] [x1 + x2 + f(0,1)] [ x1 + x2 + f(0,0)]

Exemple :

Pour la fonction définie tableau I-3 :

f(x1, x2) = (x1 + x2 +0) • (x1 + x2 + 1) • (x1 + x2 + 1) • (x1 + x2 + 0)

= (x1 + x2) • (x1 + x2)

1.2.C. METHODE POUR L'OBTENTION SYSTEMATIQUE DE L'EXPRESSION BOOLEENNE

Pour décrire la méthode de détermination de l'expression booléenne à partir du tableau de valeurs, il faut définir quelques termes.

Définitions

Soient x1, x2, ..., xn ∈ (B, +, •, )

- un littéral est une expression booléenne où ne figure qu'une variable, sous forme complémentée ou non : x1, x4

- un monôme m est un produit d'un ou plusieurs littéraux : x1, x1 x2 x3....

- un monal M est une somme d'un ou plusieurs littéraux : x1 + x2, x1 + x2 + x3

- une expression ∑ Π est une somme d'un ou plusieurs monômes : x1 + ( x2 x3)

- une expression Π ∑ est un produit d'un ou plusieurs monaux : (x1+x2) ( x1 +x2+x3)

- un minterme ou monôme canonique des n variables x1, x2, ..., xn est un monôme à n littéraux où figure un élément et un seul de chaque couple (xi, xi ).

Avec 2 variables, on peut former 4 mintermes : x1 x2 , x1 x2, x1 x2 , x1 x2.

Page 11: CHAPITRE I :

- I.11 -

Avec n variables, on peut former 2n mintermes. - un maxterme ou monal canonique des n variables x1, x2, ..., xn est un monal à n

littéraux, où figure un élément et un seul de chaque couple (xi, xi ).

Il y a 4 maxtermes de 2 variables : x1 + x2 , x1 +x2, x1+ x2 , x1 + x2.

Avec n variables, on peut former 2n maxtermes. - on peut généraliser les régles du calcul booléen et les appliquer aux monômes (ou

aux monaux). Par exemple, on utilise couramment : absorption m1 + m1 m2 = m1 M1 (M1 + M2) = M1

redondance a + am = a + m a (a + M) = a M

am + am = m (a + M)(a + M) = M

Méthode systématique

Pour une fonction de n variables x1,...., x2,...., xn, on associe à chaque combinaison de valeurs des variables, c'est à dire à chaque point Pj de la fonction :

- un minterme minj = x1 • x2 • ... • xi • ... • xn

où xi = xi si xi = 1 en ce point

= xi si xi = 0 en ce point

- un maxterme Maxj = x1 + x2 + ... + xi + ... + xn

où xi = xi si xi = 1 en ce point

= xi si xi = 0 en ce point

On note f(Pj) la valeur de la fonction au point Pj, P1 l'ensemble des points où la fonction vaut 1, P0 l'ensemble des points où la fonction vaut 0.

En itérant l'application du théorème de Shannon, on obtient :

- à partir de (i) :

(a) f(x1, x2, ..., xn) = minj • f(Pj)�

j = 0

2n-1

= minj • 0�Pj ∈ P 0

+ minj • 1�Pj ∈ P 1

= minj�Pj ∈ P 1

Page 12: CHAPITRE I :

- I.12 -

On obtient ainsi la fonction sous forme de la somme des mintermes associés aux points où la fonction vaut 1.

- à partir de la forme duale (ii) :

(b) f(x1, x2, ..., xn) = (Maxj + f(Pj))Π

j = 0

2n-1

= Maxj + 0Π

Pj ∈ P 0 • Maxj + 1Π

Pj ∈ P 1

= MaxjΠ

Pj ∈ P 0

On obtient ainsi la fonction sous forme du produit des maxtermes associés aux points où la fonction vaut 0.

Les expressions sous forme de somme de mintermes (produit de maxtermes) sont appelées 1ère forme canonique (2ème forme canonique).

Remarque

Il ne faut pas confondre principe de dualité et fonction duale :

- la fonction duale f* d'une fonction booléenne f est obtenue en remplaçant dans l'expression de f : tout signe + par le signe • et inversement, tout 1 par 0 et inversement

f (x1, x2, x3) = (x1 + x2) x3 , f* (x1, x2, x3) = (x1 • x2) + x3 Par définition (f*)* = f, mais f* n'est égale à f que si la fonction est autoduale.

Exemple :

On reprend l'exemple de la fonction majorité de 3 variables (tableau I-4)

Page 13: CHAPITRE I :

- I.13 -

Code en base 10

x

y

z

Maj

0 0 0 0 0 1 0 0 1 0 2 0 1 0 0 3 0 1 1 1 4 1 0 0 0 5 1 0 1 1 6 1 1 0 1 7 1 1 1 1

Tableau I-4 : fonction Majorité de 3 variables

Première forme canonique :

Maj(x, y, z) = x y z + x y z + x y z + x y z

Deuxième forme canonique :

Maj (x, y, z) = (x + y + z) (x + y + z ) (x + y + z) ( x + y + z)

Une fois obtenue une forme canonique, l'expression peut être simplifiée :

Maj(x,y,z) = xyz + xyz + xyz + xyz

= xyz + xyz + xyz +xyz + xyz + xyz (idempotence)

= yz + xz + xy (redondance)

Une notation commode pour définir une fonction booléenne est d'énumérer les points où elle vaut 1, en utilisant le code indiqué dans la colonne de gauche de la tableau I-4 (interprétation de la combinaison de valeurs des variables booléennes comme un entier codé en base 10) :

f(x1, x2, ..., xn) = liste des codes des Pj�Pj ∈ P 1

On en déduit immédiatement soit la table de vérité soit l'expression en somme de mintermes.

Exemple

Maj (x, y, z) = Σ (3, 5, 6, 7)

Page 14: CHAPITRE I :

- I.14 -

Exercices

I-4 Déterminer les 2 formes canoniques de la fonction Impair(x, y, z) (cf exercice I-3).

I-5 Soit la fonction t3(x2, x1, x0) qui vaut 1 si et seulement si les 3 variables x2, x1, x0

représentent le code binaire d'un entier (compris entre 0 et 7) qui est multiple de 3.

Faire la table de vérité de cette fonction ; déterminer son expression en sommes de mintermes et simplifier cette expression.

I-6 Même exercice pour i(x2, x1, x0) qui vaut 1 si et seulement si les 3 variables représentent un entier impair.

1.2.D. TABLEAUX DE VALEURS GENERALISES

Dès qu'une fonction booléenne a plus de 4 variables, il est fastidieux de la définir par son tableau de valeurs. Dans certains cas, une forme généralisée du tableau de valeurs permet de compacter la représentation.

Pour une fonction de n variables, on distingue k variables, avec k = 3 ou 4, et on indique pour chaque combinaison de valeurs de ces k variables, l'expression des sous-fonctions des n-k variables restantes. Une expression de la fonction est alors donnée par la somme des produits :

minterme associé à un point • sous-fonction associée à ce point (théorème de Shannon).

Exemple

Fonction Majorité de 5 variables (qui vaut 1 si et seulement si au moins 3 des variables sont à 1)

x y z Maj5 (x,y,z,v,w)

0 0 0 0 0 0 1 v w 0 1 0 v w 0 1 1 v + w 1 0 0 v w 1 0 1 v + w 1 1 0 v + w 1 1 1 1

Tableau I-5 : tableau de valeurs généralisé

Page 15: CHAPITRE I :

- I.15 -

On obtient l'expression suivante (attention, ce n’est pas une forme canonique) :

Maj5(x,y,z,v,w) = x y z v w + x y z v w + x y z (v + w)

+ x y z v w + x y z (v + w) + x y z (v + w) + x y z

qui peut être simplifiée en :

Maj5(x,y,z,v,w) = xyz + xyv + xyw + xzv + xzw + xvw+ yzv + yzw + yvw + zvw

Exercice

I-7 Soit la fonction t5(x4, x3, x2, x1, x0), qui vaut 1 si et seulement si les 5 variables x4, x3, x2, x1, x0 représentent le code binaire d'un entier (compris entre 0 et 31) qui est multiple de 3. Faire un tableau de valeurs généralisé pour cette fonction et déterminer une expression de la fonction.

1.3. LES FONCTIONS BOOLEENNES DE DEUX VARIABLES

Il y a 16 fonctions booléennes de deux variables, indiquées dans le tableau ci-dessous (les tableaux de valeurs sont en lignes, pas en colonnes).

x y 00 01 10 11 Expression simplifiée Notations f 0 0 0 0 0 f0 = 0 fonction constante nulle f 1 0 0 0 1 f1 = x•y x•y, x ET y, x AND y f 2 0 0 1 0 f2 = xy f 3 0 0 1 1 f3 = x f 4 0 1 0 0 f4 = x•y f 5 0 1 0 1 f5 = y f 6 0 1 1 0 f6 = xy + xy x ⊕ y, x OUEX y, x XOR y f 7 0 1 1 1 f 7 = x + y x + y, x OU y, x OR y f 8 1 0 0 0 f8 = x y = x + y x ↓ y, x NI y, x NOR y f 9 1 0 0 1 f9 = x y + xy x Θ y, x ↔ y, équivalence f 10 1 0 1 0 f10 = y f 11 1 0 1 1 f11 = x + y y → x implication f 12 1 1 0 0 f12 = x f 13 1 1 0 1 f13 = x + y x → y implication f 14 1 1 1 0 f14 = x + y = xy x ↑ y, x ON y, x NAND y f 15 1 1 1 1 f15 = 1 fonction constante unité

Tableau I-6 : les 16 fonctions de 2 variables

Page 16: CHAPITRE I :

- I.16 -

On trouve dans ce tableau les fonctions

- somme (f7 = x + y), ou OU booléen (boolean OR, en anglais), - produit (f1 = x y), ou ET booléen (boolean AND), - complément (f10 = x ou f12 = y ), ou NON booléen (boolean NOT).

qui s'expriment directement à partir d'une opération d'addition, de multiplication et de complémentation booléennes respectivement.

D'autres fonctions, couramment utilisées en conception de circuits, sont étudiées dans les tableaux I-7 et I-8 : disjonction exclusive, équivalence, et-non, ou-non.

f6 : DISJONCTION EXCLUSIVE OU exclusif, OUEX (en anglais : exclusive OR, XOR)

f9 : EQUIVALENCE CONJONCTION

Table de valeurs : x y x ⊕ y 0 0 0 0 1 1 1 0 1 1 1 0 x ⊕ y vaut 1 si et seulement x ≠ y x ⊕ y = x y + x y

Table de valeurs : x y x Θ y 0 0 1 0 1 0 1 0 0 1 1 1 x Θ y vaut 1 si et seulement si x = y x Θ y = x y + x y

=x ⊕ y

Propriétés : x ⊕ y = y ⊕ x x ⊕ (y ⊕ z) = (x ⊕ y) ⊕ z x ⊕ 0 = x x⊕ 1 = x

x ⊕ x = 1

x Η y = x ⊕ y = x ⊕ y = x Θ y

La fonction x1 ⊕ x2 ⊕ ....⊕ xn = 1 si et seulement si un nombre impair de variables vaut 1 (fonction d'imparité)

Propriétés : x Θ y = y Θ x x Θ (y Θ z) = (x Θ y) Θ z x Θ 1 = x x Θ 0 = x

x Θ x = 0

x Θ y = x Θ y = x Θ y = x ⊕ y

Tableau I-7 : disjonction exclusive et équivalence

Page 17: CHAPITRE I :

- I.17 -

f8 : OU-NON (SOMME

COMPLEMENTEE) en anglais : NOR (pour Not OR)

f14:ET-NON (PRODUIT COMPLEMENTE)en anglais : NAND (pour Not AND)

Table de vérité x y x NOR y 0 0 1 0 1 0 1 0 0 1 1 0 x NOR y = x + y = x y

Table de vérité x y x NAND y 0 0 1 0 1 1 1 0 1 1 1 0 x NAND y = x y = x + y

Propriétés x NOR y = y NOR x x NOR 1 = 0 x NOR 0 = x

x NOR x = 0

x NOR y = x + y

Propriétés x NAND y = y NAND x x NAND 0 = 1 x NAND 1 = x

x NAND x = 1

x NAND y = x y

ATTENTION, ces 2 opérations ne sont pas associatives

Tableau I-8 : NAND et NOR

Le NAND et le NOR n'étant pas associatifs,

- on écrit, un peu abusivement, x y = x NAND y, x + y = x NOR y

- mais x y z doit être noté NAND(x, y, z), et x + y + z = NOR(x, y, z)

Exercices

I-8 A partir des tableaux de valeurs des fonctions de 2 variables donnés tableau I-6, retrouver les expressions simplifiées de ces fonctions qui sont indiquées dans le tableau.

I-9 Prouver les propriétés indiquées dans les tableaux I-7 et I-8 pour les fonctions disjonction exclusive, équivalence, NAND et NOR. En déduire une expression de la fonction Impair(x, y, z) à partir du ⊕ (cf exercices I-3 et I-4).

Page 18: CHAPITRE I :

- I.18 -

I-10 Exprimer en termes de NAND à 2 variables et de complémentations, NAND (x, y, z) ; NAND (x, y, z, t).

2. REALISATION DES FONCTIONS BOOLEENNES PAR DES CIRCUITS ELECTRONIQUES

Les fonctions booléennes peuvent être "réalisées" par des circuits électroniques ; plus exactement, étant donnée une fonction booléenne, il est possible de concevoir un "objet" électronique qui, étant donné les valeurs des variables de la fonction, calcule la valeur de la fonction (figure I-3).

x1 x2 xn

f (x1, x2, ......, xn)C

Figure I-3 : circuit C réalisant une fonction booléenne

Ces circuits sont appelés "circuits combinatoires" (par opposition aux circuits séquentiels, qui mémorisent des informations et qui seront étudiés dans le chapitre II). Les entrées et sorties des circuits combinatoires sont des connexions qui portent une valeur électrique codant une valeur booléenne (en général, 0 Volt code le 0 booléen, le 1 booléen étant codé par une tension positive, de 2 à 5V suivant les technologies). Quand un circuit réalise la fonction f(x1, x2, .....xn), sa sortie est égale au code de la valeur de la fonction pour la combinaison de valeurs codées sur les entrées du circuit étiquetées x1, x2, .....xn

Etant donnée la nature matérielle du circuit, cette relation n'est pas vraie à chaque instant: quand de nouvelles valeurs sont données aux entrées du circuit, la nouvelle valeur de la sortie n'est calculée par le circuit qu'après un certain temps (pour les circuits électroniques actuels, ce temps se mesure en nanosecondes, voire en picosecondes).

L'élément de base des circuits électroniques est le transistor. Il existe de nombreuses technologies (d'après le type de matériau de base et le type de transistor : TTL, ECL, MOS, AsGa.....). Une présentation (très) sommaire des transistors MOS est donnée au

Page 19: CHAPITRE I :

- I.19 -

§2.1. A partir des transistors, on peut construire des éléments réalisant des fonctions booléennes simples : les portes. Toute fonction booléenne peut être réalisée par un circuit en utilisant ces portes : la synthèse de ces circuits est étudiée au §2.2.

Certaines fonctions booléennes, de moyenne complexité, sont utilisées très fréquemment ; les circuits les réalisant ont été prédéfinis et peuvent être utilisés pour réaliser des fonctions plus complexes. De plus, pour simplifier le travail de réalisation matérielle des circuits, il a été conçu des regroupements de portes élémentaires "pré-réalisés", qu'il est possible de spécialiser (programmer) pour qu'ils réalisent une ou des fonctions spécifiques (voir chapitre III).

2.1. DU TRANSISTOR MOS AUX PORTES DE BASE

2.1.A. TRANSISTORS NMOS ET PMOS

Un transistor MOS (Metal Oxyde Silicium) est formé par un "sandwich" de matériaux conducteurs ou isolants (figure I-4)

isolant : oxyde de silicium en couche mince

Substrat semi-conducteur : silicium

drain

source

grille : silicium polycristallin

canal

Figure I-4 : structure physique du transistor MOS

Suivant la polarité du substrat et du drain et de la source, on obtient deux types de transistors : nMOS ou pMOS.

Transistor nMOS

Si le substrat est chargé positivement (manque d'électrons) et le drain et la source sont des zones chargées négativement (excés d'électrons), la structure de la figure I-4 correspond à un transistor nMOS.

Page 20: CHAPITRE I :

- I.20 -

Quand la grille est à 0V (0 booléen), drain et source sont isolés l'un de l'autre : on dit que le transistor est bloqué. Quand la grille est à une tension positive (1 booléen), les électrons du drain et de la source sont attirés par effet de champ à travers l'isolant sous la grille, ce qui crée un chemin conducteur entre drain et source qui passent au même potentiel : transistor passant.

Un transistor nMOS se comporte essentiellement comme un interrupteur : interrupteur ouvert quand le transistor est bloqué, interrupteur fermé quand le transistor est passant (fig.I-5). Cependant, son fonctionnement n'est pas parfait : si la transmission du "0" (0V) est effectuée correctement, le "1" est dégradé (tension < 5V en sortie si l'entrée est à 5V).

source

grille

drain

z

x y

x y

z = 0

x yz = 1

x = 0 y = 0 "correct"

x = 1 y = 1 "dégradé"

grille transistor interrupteur z = 0 bloqué ouvert z= 1 passant fermé x = 0 → y = 0 , x = 1 → y ≈ 1

Figure I-5 : fonctionnement du transistor nMOS

Transistor pMOS

Si le substrat est chargé négativement et le drain et la source sont des zones chargées positivement, la structure de la figure I-4 correspond à un transistor pMOS.

Le transistor pMOS est passant lorsque la grille est à 0V (0 booléen) et bloqué quand la grille est à une tension positive (1 booléen) (Fig.I-6). Contrairement au transistor nMOS, la transmission du "1" est effectuée correctement et c'est le 0 qui est dégradé (tension > 0V en sortie si l'entrée est à 0V).

Page 21: CHAPITRE I :

- I.21 -

source

grille

drain

z

x y

x y

z = 1

x yz = 0

x = 1 y = 1 "correct"

x = 0 y = 0 "dégradé"

grille transistor interrupteur z = 1 bloqué ouvert z= 0 passant fermé x = 1 → y = 1 , x = 0 → y ≈ 0

Figure I-6 : fonctionnement du transistor pMOS

Fonction de transfert d'un réseau de transistors.

En connectant en série et/ou en parallèle des transistors (de même nature), on crée un réseau de transistors qui peut être caractérisé par sa fonction de transfert entre 2 points ; cette fonction indique pour quelles valeurs des variables qui commandent les grilles des transistors, les 2 points sont connectés. C'est une fonction booléenne.

La fonction de transfert est évidemment z pour un seul transistor nMOS (Fig.I-5) et z pour un transistor pMOS (Fig.I-6).

La figure I-7 indique les fonctions de transfert de réseaux série et parallèle de transistors nMOS et pMOS.

Attention, ces réseaux de transistors ne permettent pas de réaliser directement une fonction booléenne. Prenons le point e comme entrée du circuit, le point s comme sortie:

- quand la fonction de transfert vaut 1, on a s = e, - mais quand la fonction de transfert vaut 0, la valeur de s n'est pas déterminée.

Pour réaliser une fonction booléenne, il faut connecter à la sortie plusieurs réseaux de transfert, de telle sorte qu'elle soit toujours déterminée. C'est le principe de conception des portes.

Page 22: CHAPITRE I :

- I.22 -

a b

sT1 T2

e

TRANSISTORS nMOS EN SERIE TRANSISTORS nMOS EN PARALLELE

a b T1 T2 connexion e à s 0 0 bloqué bloqué non 0 1 bloqué passant non 1 0 passant bloqué non 1 1 passant passant oui Fonction de transfert T = a b

a b T3 T4 connexion e à s 0 0 bloqué bloqué non 0 1 bloqué passant oui 1 0 passant bloqué oui 1 1 passant passant oui Fonction de transfert T = a + b

a

bsT3

T4

e

a b

sT1 T2

e

TRANSISTORS pMOS EN SERIE TRANSISTORS pMOS EN PARALLELE

a b T1 T2 connexion e à s 0 0 passant passant oui 0 1 passant bloqué non 1 0 bloqué passant non 1 1 bloqué bloqué non Fonction de transfert T = a b

a b T3 T4 connexion e à s 0 0 passant passant oui 0 1 passant bloqué oui 1 0 bloqué passant oui 1 1 bloqué bloqué non Fonction de transfert T = a + b

a

bsT3

T4

e

Figure I-7 : fonctions de transfert de réseaux nMOS et pMOS

2.1.B. PORTES DE BASE

Les portes de base réalisent les fonctions complémentation (NOT), NAND et NOR.

Portes CMOS

Les transistors nMOS transmettent bien la valeur 0, les transistors pMOS transmettent bien la valeur 1. On connectera donc la sortie d'une porte :

Page 23: CHAPITRE I :

- I.23 -

- à travers un réseau de transistors nMOS à la valeur 0, c'est-à-dire à la masse (0V, notée souvent VSS, Ground en anglais),

- à travers un réseau de transistors pMOS à la valeur 1, c'est-à-dire à l'alimentation (5V, notée VDD, Power en anglais),

de telle sorte que la sortie prenne pour valeur la valeur de la fonction à réaliser pour chaque combinaison de valeurs des entrées. Ceci implique que :

- le réseau pMOS a comme fonction de transfert la fonction à réaliser, - le réseau nMOS a comme fonction de transfert le complément de la fonction à réaliser.

L'utilisation conjointe des transistors nMOS et pMOS a donné le nom de cette technologie (C MOS : Complementary MOS).

Commençons par la conception d'une porte complémentation ou porte NOT (Fig.I-8) :

x z = x fonction de fonction de transfert à 0 transfert à 1 0 1 ←−−−−−−−−−−−−− x 1 0 ←−− x

x z = x

1

0

Figure I-8 : porte NOT en CMOS

La sortie z doit valoir 1 quand x vaut 0 : elle est donc connectée au 1 par un transistor pMOS dont la fonction de transfert est x . La sortie z doit valoir 0 quand x vaut 1 :

elle est connectée au 0 par un transistor nMOS dont la fonction de transfert est x.

Le même raisonnement est utilisé pour la conception d'une porte NAND (Fig.I-9) et d'une porte NOR (Fig.I-10).

Page 24: CHAPITRE I :

- I.24 -

x y z = fonction de fonction de x y transfert à 0 transfert à 1 0 0 1 0 1 1 ←−−−−−−−− x + y = 1 0 1 x y 1 1 0 ←−− x y x

y

1

0

z = x y

Figure I-9 : porte NAND en CMOS

x y z = fonction de fonction de x + y transfert à 0 transfert à 1 0 0 1 ←−−−−−−−−−− x y = 0 1 0 x + y 1 0 0 ←− x + y 1 1 0

x

y

z = x + y

1

0

Figure I-10 : porte NOR en CMOS

On peut, de la même manière, concevoir des portes NAND et NOR à plus de deux entrées, dans certaines limites liées à la technologie : environ 4 entrées pour une porte NAND, une dizaine d'entrées pour une porte NOR.

Remarque

Il n'est pas possible de réaliser directement une porte OR ou AND par une seule porte CMOS, car leurs fonctions de transfert à 1 ou à 0 ne sont pas réalisables par des réseaux de transistors pMOS ou nMOS respectivement (Fig.I-11)

Page 25: CHAPITRE I :

- I.25 -

x y z = fonction de fonction de x y transfert à 0 transfert à 1 0 0 0 0 1 0 ← x + y 1 0 0 1 1 1 ←−−−−−−−−−−− x y

x y z = fonction de fonction de x + y transfert à 0 transfert à 1 0 0 0 ← x y 0 1 1 1 0 1 ←− −−−−−−−−−x + y 1 1 1

a) fonction OR b) fonction AND

Figure I-11 : fonctions de transfert du OR et du AND

Ces 2 fonctions nécessitent :

- une fonction de transfert à 0 qui comporte les variables sous forme complémentée (ce que ne peut pas faire un réseau nMOS, cf figure I-7, mais que fait un réseau pMOS),

- une fonction de transfert à 1 qui comporte les variables sous forme normale (impossible pour un réseau pMOS, possible en nMOS).

L'astuce qui consisterait à connecter la sortie à 1 par un réseau nMOS et à 0 par un réseau pMOS, n'est pas viable : le niveau de la sortie serait trop dégradé.

La solution est de construire des circuits réalisant le AND et le OR en connectant à la sortie d'une porte NAND ou NOR une porte NOT. Cet assemblage est prédéfini et on dispose ainsi de "portes" AND et OR, à 2 entrées ou plus.

On peut aussi réaliser une porte AND (respectivement OR) à l’aide d’une porte NOR (respectivement NAND) précédée de portes NOT.

Portes NMOS

On peut réaliser des portes en n'utilisant que des transistors nMOS (c'est d'ailleurs une technologie plus ancienne que la technologie CMOS).

Dans une porte NMOS, la sortie est connectée

- au 0 par le réseau de transistors nMOS qui a pour fonction de transfert le complément de la fonction (c'est le même qu'en CMOS),

- au 1 par un transistor nMOS toujours passant de forte résistance.

Quand le réseau connecté au 0 n'est pas passant, la sortie prend la valeur 1. Quand ce réseau est passant, la sortie prend la valeur 0 (un niveau proche du 0V), la résistance du transistor connecté à 1 étant bien supérieure à celle du réseau connecté au 0.

Page 26: CHAPITRE I :

- I.26 -

Les schémas des portes NOT, NAND et NOR sont donnés figure I-12.

x

z = x

1

0

x

y

z = x y

x

y

z = x + y

porte NOT porte NAND porte NOR

Figure I-12 : portes NMOS

Remarque

Suivant le même principe (connexion au 1 par un transistor toujours passant), on peut diminuer le nombre de transistors nécessaires à la réalisation d'une porte CMOS : le réseau de transistors pMOS est remplacé par un transistor pMOS dont la grille est connectée à la masse (donc toujours passant) : on obtient du "pseudo-NMOS". Le gain en nombre de transistors est impressionnant, mais ne correspond pas toujours à un gain important en surface de silicium (et il y a dégradation du niveau 0V en sortie). Le pseudo-NMOS est surtout employé pour des portes NOR à beaucoup d'entrées.

Exercices

I-11 Réaliser une porte CMOS à 4 entrées a, b, c, d, réalisant la fonction z(a, b, c, d) = a b + c d .

I-12 Montrer que z (x, y, x , y ) = x ⊕ y ; que z ( x, y , x , y) = x Θ y. En déduire

une réalisation des fonctions disjonction exclusive et équivalence.

2.1.C. CATALOGUE DES PORTES DE BASE

Un ensemble de portes de base (simples ou composées par des portes simples et des portes de complémentation) est disponible dans toutes les technologies. Le tableau I-9 en dresse un catalogue. Pour chaque porte sont indiqués :

Page 27: CHAPITRE I :

- I.27 -

- ses différents noms, en français ou en anglais, - son symbole graphique, - une description textuelle, - un "coût", qui est une mesure approximative de la complexité de la porte.

NOMS SYMBOLE DESCRIPTION TEXTUELLE

COUT

complémentation, inverseur, NON inverter, NOT

s = aa

s <= not [a]

2

ET complémenté, ET-NON NAND De 2 à 8 entrées.

a

b

s = a b

s <= nand[a,b] s <= nand[a,b, c, ...]

3 pour 2 entrées, k + 1 pour k entrées (k ≤ 8)

OU complémenté, OU NON NOR De 2 à 8 entrées

a

b

s = a + b

s <= nor[a,b] s <= nor[a,b, c, ...]

3 pour 2 entrées, k + 1 pour k entrées (k ≤ 8)

ET, AND Construite avec une porte NAND suivie d'un inverseur De 2 à 8 entrées

a

b

s = a b

s <= and[a,b] s <= and[a,b,c, ;.]

4 pour 2 entrées k + 2 pour k entrées (k ≤ 8)

OU, OR Construite avec une porte NOR suivie d'un inverseur De 2 à 8 entrées

a

b

s = a + b

s <= or [a,b] s <= or[a,b,c, ..]

4 pour 2 entrées k + 2 pour k entrées (k ≤ 8)

Page 28: CHAPITRE I :

- I.28 -

Tableau I-9 : les portes de base

2.1.D. REALISATION MATERIELLE DE L'INTERCONNEXION ENTRE PORTES

Deux cas sont à distinguer : dans le premier cas, il s’agit de concevoir un circuit intégré réalisant une fonction donnée. Le dessin des portes de base est en général prédéfini et on peut définir à l’aide d’un logiciel de conception assistée par ordinateur un assemblage de telles portes pour concevoir un circuit intégré, c'est-à-dire une "puce" de silicium qui comporte un ensemble de portes. Les interconnexions entre portes seront réalisées en général par des pistes en silicium polycristallin ou aluminium, séparées des transistors (Fig.I-4) par une couche d'isolant épais, mais connectées aux entrées des portes (grilles des transistors) et à leurs sorties grâce à des trous percés dans cette couche d'isolant épais ("bias"). Plusieurs couches sont nécessaires pour permettre le croisement de ces interconnexions.

Pour pouvoir réaliser rapidement des prototypes (ou des travaux pratiques …) ou des circuits qui n’exigent pas une grande rapidité ou complexité, ont été définis des circuits intégrés programmables, composé de portes et d’interconnexions programmables.

Un circuit intégré doit être connecté à l'extérieur : sur le pourtour du circuit sont définis des plots d'entrée / sortie (zones de surface relativement importante) où peuvent être connectés des fils conducteurs. L'ensemble est monté dans un boîtier : c'est un contenant (matière plastique ou céramique) avec des broches conductrices (connectées aux plots d'entrée / sortie du circuit intégré par les fils conducteurs).

On peut assembler un ensemble de boîtiers sur une carte, soit en gravant sur la carte des interconnexions (cartes imprimées) : chemins conducteurs auxquels les broches des boîtiers sont soudées, soit en connectant les broches par de minces fils conducteurs isolés (cartes à wrapper, utilisées en travaux pratiques ou plus généralement pour réaliser des cartes prototypes).

Il n'y a pas réalisation de circuits intégrés originaux chaque fois qu'il faut concevoir un nouveau système électronique : en général, le concepteur utilise des boitiers "catalogue", proposés par un fabricants de circuits intégrés. Des boitiers de faible complexité (SSI : Small Scale Integration) comportant des ensembles de portes (4 portes à 2 entrées, 2 portes à 4 entrées,..., quelques dizaines de transistors) ont été proposés dès la fin des années 60 (auparavant, il fallait interconnecter sur une carte des transistors). Au début des années 70, ont été réalisés des boitiers plus complexes (MSI : Middle Scale Integration, au maximum quelques centaines de transistors par boitier. Dès le milieu des années 70, une nouvelle étape a été franchie, ce qui a permis de proposer des boitiers LSI (Large Scale Integration, quelques milliers de transistors).

Page 29: CHAPITRE I :

- I.29 -

Après les boitiers VLSI des années 80 (Very Large Scale Integration, quelques centaines de milliers de transistors), nous en sommes aux boitiers ULSI (Ultra Large Scale Integration, millions de transistors).

L'intégration croissante permet de réaliser à faible coût (automatisation complète de la fabrication) des dispositifs électroniques de plus en plus compactes et rapides (en partie grâce à la diminution des distances que les signaux doivent parcourir).

Les méthodes de synthèse de circuits étudiées ici s'appliquent aussi bien au niveau de la conception de circuits intégrés qu'au niveau de la conception de cartes à base de boitiers "catalogue". Il est évident que les évaluations de "coût" devraient tenir compte de la situation envisagée. Cependant, nous utiliserons une évaluation générique, suffisante pour l’objet de ce cours, donnée dans le tableau I-9. Dans le cas de circuits intégrés C—MOS, il s'agit du nombre de transistors en parallèle dans la réalisation de la porte (plus 1 pour la sortie), dans le cas de boîtiers SSI ou MSI, il s'agit du nombre de broches d'entrée / sortie utilisées dans un boîtier (ce qui mesure l'encombrement sur la carte). Les résultats des comparaisons rapides que nous ferons peuvent donc s'appliquer aux deux situations.

2.2. SYNTHESE DE CIRCUITS A L'AIDE DE PORTES

Etant donnée une expression d'une fonction booléenne, concevoir le circuit qui la réalise est facile, surtout si les portes OR, AND et NOT, correspondant aux opérations booléennes de base, sont utilisées. L'utilisation des portes NAND et NOR, moins coûteuses, nécessite quelques précautions.

Dans tous les cas, on suppose qu'on dispose en entrée du circuit des variables sous forme normale et sous forme complémentée.

2.2.A. SYNTHÈSE EN PORTES AND / OR

Pour une expression ∑∏ (somme de monômes) : - chaque monôme est réalisé par une porte AND (ou un arbre de portes AND si le

monôme comporte trop de littéraux), - une porte OR (ou un arbre de portes OR) effectue la somme des monômes.

Exemples

Réalisation de la fonction majorité de trois variables, donnée par l'expression simplifiée :

Maj (x,y,z) = y z + x z + x y

Page 30: CHAPITRE I :

- I.30 -

y z x y x z

t = Maj (x, y, z)

Figure I-13 : circuit AND / OR réalisant la fonction Maj (x, y, z

Réalisation de la fonction g (x, y, z) = x y z + y z (Fig. I-14)

xy

z

y

z

t = x y z + y z

Figure I-14 : réalisation de g (x, y, z) = x y z + y z

Pour une expression ∏∑ (produits de monaux), les monaux sont réalisés par des portes OR, le produit des monaux est réalisé par une porte AND.

2.2.B. SYNTHESE EN PORTES NAND.

Montrons d'abord que toute fonction peut être réalisée en utilisant uniquement des portes NAND

x = NAND (x,1)

x + y = x + y = x y = NAND (NAND (x, 1), NAND (y, 1))

Page 31: CHAPITRE I :

- I.31 -

x y = x y = NAND ( NAND (x, y) , 1)

On peut exprimer les 3 opérations booléennes en NAND, donc toute expression booléenne peut être exprimée en n'utilisant que des NAND (la fonction NAND est dite générateur unique).

Pour la conception de circuits, on utilisera aussi des portes NOT, pour éviter l'utilisation de portes avec une entrée fixée.

Le problème est maintenant de transformer une expression booléenne en expression NAND, en évitant de transformer localement une opération + ou • en plusieurs NAND.

Pour une expression ∑∏ , on complémente 2 fois l'expression et on effectue une des complémentations, ce qui transforme la somme de monômes en NAND de ces mêmes monômes complémentés :

ab + cd = ab + cd = ab cd

= NAND ( NAND (a,b) , NAND (c,d))

Exemple

Maj (x, y, z) = y z + x y + x z = yz + xy + xz = yz xy xz

= NAND ( NAND (y,z) , NAND (x,y) , NAND (x,z))

Le circuit correspondant est donné figure I-15.

y z x y x z

t = Maj (x, y, z)

Figure I-15 : circuit NAND réalisant la fonction Maj (x, y ,z

Page 32: CHAPITRE I :

- I.32 -

L'exemple ci-dessus donne l'impression trompeuse qu'il suffit de remplacer toutes les portes AND et OR d'un circuit AND/OR par des portes NAND. Des problèmes se posent dès que :

- le ciruit initial n'est pas un circuit en deux couches (une couche AND suivie d'une porte OU),

- un monôme a plus de littéraux ou qu'il y a plus de monômes que le nombre d'entrées maximal des portes : on ne peut plus alors réaliser le circuit en 2 couches de portes NAND,

- dans l' expression ∑∏ figure un monôme qui est réduit à un literal.

Considérons la fonction h(a,b,c) = a + bc

h(a, b,c) = a + bc = a + bc = a bc = NAND (NOT(a) , NAND (bc))

Les circuits AND / OR et NAND de cette fonction sont donnés figure I-16.

a

b

c

sa

b

c

s

Figure I-16 : comparaison circuits AND/OR et NAND

Il est un peu plus compliqué de transformer une expression ∏∑ en expression NAND.

( a + b ) (c + d) = ( a + b) ( c + d ) = a b c d

= AND ( NAND ( a , b ) , NAND ( c , d ))

= NOT (NAND (NAND ( a , b ) , NAND ( c , d )))

Les circuits OR/AND et NAND de la fonction f = ( a + b ) (c + d) sont donnés figure I-17.

Page 33: CHAPITRE I :

- I.33 -

a b c d

f

a b c d

f

Figure I-17 : réalisation NAND d'une expression ∏∑

Ce type de réalisation, qui paraît fort coûteux, est cependant utilisé : les inverseurs en entrée et en sortie permettent d'amplifier les signaux, et d'utiliser des portes à grand nombre d'entrées.

Exercices

I-13 En utilisant les coûts indiqués tableau I-9, évaluer les coûts de différentes réalisations de la fonction Maj(x, y, z) :

- réalisation AND / OR (Fig.I-13), - réalisation NAND à partir de l'expression ∑∏ (Fig.I-15) - réalisation NAND à partir de l'expression ∏∑.

I-14 Proposer une réalisation de l'opération XOR à base de portes ET / OU ; à base de portes NAND. Comparer les coûts de ces réalisations au coût indiqué pour la porte complexe XOR dans le tableau I-9.

I-15 Proposer deux réalisations de la fonction Impair(x, y, z), l'une à l'aide de portes NAND, l'autre à l'aide de portes XOR, et comparer les coûts.

I-16 Proposer une réalisation de la fonction NAND (x, y, z) à base de portes NAND à 2 entrées et d'inverseurs (cf exercice I-10). Même chose pour la fonction NOR (x, y, z). Conclure sur les conséquences de la non-associativité de ces fonctions.

I-17 Etude de la synthèse en portes NOR : en suivant le plan du paragraphe "synthèse en portes NAND", étudier :

- le caractère de générateur unique de l'opération NOR, - la réalisation d'une fonction exprimée sous forme ∏∑. - la réalisation d'une fonction exprimée sous forme ∑∏.

Page 34: CHAPITRE I :

- I.34 -

3. OPTIMISATION DES CIRCUITS COMBINATOIRES

Après voir évoqué les différents critères possibles d'optimisation, une méthode d'optimisation des expressions booléennes sera présentée.

3.1. CRITERES D'OPTIMISATION

Les critères d'optimisation d'un circuit combinatoire peuvent être : - la maximisation de sa vitesse - la minimisation de sa complexité (en termes de nombre de transistors ou de surface,

ou en termes de nombre de portes ou de boîtiers), - l'amélioration de la facilité de conception - la minimisation de sa consommation de courant, ..... Ces critères peuvent être contradictoires.

3.1.A. OPTIMISATION DE LA VITESSE

Définition des retards

Un circuit ne prend pas en compte les valeurs des entrées instantanément. Chaque porte introduit un temps de retard : temps entre l'instant où une entrée change de valeur et l'instant où la nouvelle valeur de la sortie est disponible (plus précisément, entre le moment où l'entrée a effectué 50% de son changement de valeur et celui où la sortie a effectué 50% du changement en conséquence : figure I-18).

temps

temps de retard

0

1

1

0

entrée

sortie

Figure I-18 : temps de retard d'une porte

Ce temps de retard (délai ou latence) dépend :

Page 35: CHAPITRE I :

- I.35 -

- de la technologie, évidemment, - de la porte ou du bloc prédéfini considéré, - du type de changement de valeur (ce n'est pas le même pour le passage d'une sortie

de 0 à 1 que pour le passage de 1 à 0), - de l'entrée qui déclenche le changement de valeur de la sortie et de la valeur des

autres entrées, - de la nature et de la longueur de l'équipotentielle qui relie la sortie à des entrées

d'autres portes ou blocs, - du nombre et de la nature des entrées connectées à la sortie considérée par cette

équipotentielle. En général, dans une technologie donnée, on dispose :

- d'un temps de retard minimal et maximal intrinsèque de chaque porte ou chaque bloc prédéfini (prise en compte des 4 premiers facteurs),

- de lois plus ou moins simples permettant la prise en compte des 2 derniers facteurs.

A partir de ces données, de la structure du circuit et de son implémentation précise, il est possible de calculer le temps de retard global d'un circuit combinatoire, avec les étapes suivantes :

- détermination des chemins entre les entrées et la (ou les sorties) du circuit, - pour chaque chemin, détermination du temps de retard maximal et minimal, en

fonction des portes traversées et des connexions, - on en déduit le temps de retard maximal et minimal du circuit (maximum des temps

maximaux des chemins, minimum des temps minimaux des chemins). Le chemin déterminant le temps de retard maximal du circuit est appelé chemin critique. Il existe des logiciels qui effectuent ce travail, à partir de la description du circuit.

A un circuit combinatoire sont donc associés un retard minimal et un retard maximal. Dans l'intervalle de temps entre ces deux retards, la ou les sorties du circuit risquent d'être incohérentes : elles ne correspondent ni à l'ancienne configuration de valeurs des entrées, ni à la nouvelle (Fig.I-19)

Page 36: CHAPITRE I :

- I.36 -

←→retard min

←−−−−−−−−−−−−−−−−→retard max

valeur des sorties incohérente

changement de valeurs d'une ou plusieurs entrées

? ? ? ? ? ? ?

ENTREES

SORTIES

Figure I-19 : effet des retards minimaux et maximaux

Optimisation de la vitesse d'un circuit combinatoire

Pour optimiser la vitesse d'un circuit combinatoire, il est possible d'agir sur un ou plusieurs des facteurs qui contribuent au retard :

- changer de technologie : c'est envisageable au niveau de la conception de cartes, car les boîtiers sont disponibles en plusieurs technologies, plus ou moins rapides,

- changer la structure du circuit, soit en minimisant les expressions booléennes, soit en utilisant d'autres types de portes,

- diminuer la longueur des connexions sur le chemin critique, en changeant l'emplacement des blocs à connecter et en traçant prioritairement les connexions du chemin critique, ou en amplifiant les signaux sur ces connexions (un amplificateur est une sorte d'inverseur spécialement dimensionné). L'amplification permet aussi de connecter une sortie à beaucoup d'entrées sans dégradation.

3.1.B. DIMINUTION DE LA COMPLEXITE

Pour diminuer la complexité d'un circuit réalisé avec des portes logiques, il faut rechercher des expressions simplifiées des fonctions booléennes à réaliser.

3.2. SIMPLIFICATION D'EXPRESSIONS BOOLEENNES

On cherche à simplifier l'expression d'une fonction booléenne pour pouvoir la réaliser par un circuit plus simple, donc moins coûteux.

Page 37: CHAPITRE I :

- I.37 -

3.2.A. PRINCIPE

Pour simplifier une expression booléenne, on cherche à obtenir une forme ∑ ∏ (ou ∏ ∑) telle que :

- le nombre de monômes (ou monaux) est minimal

- le nombre de littéraux dans chaque monôme (monal) est minimal.

Exemple :

z = ((a b + c)e + f)g + h (1)

z = abeg + ceg + fg + h (2)

Comparons les implémentations en portes AND et OR de ces deux expressions de la même fonction (Fig.I-20) :

abcefgh

z

abe

cg

fh

z

Circuit 1 Circuit 2

Figure I-20 : deux réalisations de la même fonction

Evaluation en coût :

- circuit 1 : 6 portes AND ou OR à 2 entrées, donc coût =6*4 = 24, - circuit 2 : 1 porte à 2 entrées (coût 4), 1 porte à 3 entrées (coût 5), 2 portes à 4

entrées (coût 2 * 6), donc coût = 21 (d'après les coûts donnés dans le tableau I-9).

Evaluation en temps :

- circuit 1 : le chemin critique (de a ou b à z) comporte 6 portes, - circuit 2 : il y a au plus 2 portes à traverser.

Page 38: CHAPITRE I :

- I.38 -

Le circuit 2 (qui réalise z à partir d'une expression ∑∏, avec un nombre minimal de monômes et un nombre minimal de litéraux par monôme), est donc à la fois moins complexe et plus rapide.

La recherche d'une expression minimale ∑ ∏ (ou ∏ ∑) assure donc une réalisation de la fonction optimale en temps à condition que le circuit soit effectivement réalisable, c'est à dire que le nombre de monômes et le nombre de littéraux dans un monôme n'excèdent pas le nombre maximal d'entrées d'une porte. Dans ce dernier cas, les monômes ou leur somme sont réalisés par un arbre de portes ; on cherche alors à ce que les longueurs des différents chemins soient équilibrées.

On peut chercher à simplifier l'expression d'une fonction en appliquant les règles du calcul booléen, mais rien n'assure qu'une solution optimale ait été trouvée. Des méthodes systématiques (manuelles ou algorithmiques) ont été définies.

3.2.B. DEFINITIONS

Relation d'ordre

Soient 2 monômes m1, m2 : m1 ≤ m2 ssi m1 • m2 = m1

C'est une relation d'ordre partiel : a b c ≤ a b, mais a b c et a b ne sont pas

comparables.

Si m1 ≤ m2, on dit que m2 "couvre" plus de points que m1 (2 fois plus si m2 a une variable de moins que m1, 4 fois plus si il a 2 variables de moins ...).

a b couvre les points couverts par a b c et a b c.

On peut étendre la relation d'ordre à une fonction booléenne : m ≤ f ssi m • f = m

Implicants

m est un implicant de f ssi m ≤ f.

Si m est un implicant de f, il ne couvre que des points à 1 de f.

Exemple

f = a c + a b c + a b c = a c + a b = a c + a b + b c

(transformations par règle de redondance)

a c, a b c , a b c, a b, b c sont des implicants de f.

Page 39: CHAPITRE I :

- I.39 -

Monômes premiers

- Un implicant m de la fonction f est un monôme premier de f ssi il n'existe pas de monôme m' (≠ m) tel que : m ≤ m' et m' ≤ f

- Toute fonction booléenne est égale à la somme de tous ses monômes premiers.

Pour l'exemple précédent, a b c n'est pas premier : le monôme a b lui est supérieur. Les monômes a c, a b , b c sont premiers.

Il est évident que les monômes premiers étant ceux qui comportent le moins de littéraux, une expression ΣΠ simplifiée de f ne comprendra que des monômes premiers. Cependant, tous ne sont pas indispensables pour exprimer la fonction.

Pour l'exemple précédent, dans l'expression f = a c + a b + b c, le monôme b c peut être supprimé.

Expression irrédondante

- Une somme de monômes premiers d'une fonction f est une expression irrédondante de f ssi cette expression est égale à f (c'est à dire tous les points à 1 de f sont couverts par ces monômes) et si dès qu'on supprime un quelconque des monômes, l'expression résultante n'est plus égale à f.

- Un monôme premier est dit obligatoire ssi il est le seul à couvrir un des points de f. - Un monôme premier est dit interdit ssi tous les points qu'il couvre sont aussi

couverts par des monômes premiers obligatoires. Un monôme premier obligatoire figure dans toutes les expressions irrédondantes de la fonction, un monôme premier interdit dans aucune.

La recherche d'une expression irrédondante se décompose toujours en deux phases :

- détermination des monômes premiers de la fonction - recherche d'une expression irrédondante.

L'ensemble des monômes premiers de l'expression irrédondante forme une base irrédondante.

3.2.C. DETERMINATION DES MONOMES PREMIERS

A partir de la première forme canonique (somme de mintermes) il suffit d'appliquer itérativement : xm + xm = m, où x est une variable, m un monôme ; xm et xm sont dits monômes adjacents.

Cela peut se faire sous forme tabulaire (méthode de Quine Mc Cluskey) et peut être programmé.

Page 40: CHAPITRE I :

- I.40 -

Manuellement, on utilise un tableau de Karnaugh, qui est un tableau de valeurs modifié pour mettre en évidence les monômes adjacents.

Tableau de Karnaugh à 3 variables

x1 x0x 2 0 0 0 1 1 1 1 0

0

1

0 1 3 2

4 5 7 6

code entier de la configuration de valeurs des variables pour chaque case

Deux cases adjacentes correspondent à 2 mintermes adjacents :

case 1 : x2 x1 x0, case 5 : x2 x1 x0 → groupement 1 et 5 : x1 x0

Exemple :

fonction Maj(x, y, z) = Σ 3, 5, 6, 7

y

x 0 0 0 1 1 1 1 0

0

1

0 0 1 0

0 1 1 1

z

case 3 : x y zcase 7 : x y z } groupement 3 et 7 : y z

case 5 : x y zcase 7 : x y z } groupement 5 et 7 : x z

case 6 : x y zcase 7 : x y z } groupement 6 et 7 : x y

Ce sont les plus gros groupements de 1 possibles : on a donc obtenu 3 monômes premiers, dont la somme constitue une expression irrédondante de Maj(x, y, z), car chacun d'entre eux est obligatoire.

Page 41: CHAPITRE I :

- I.41 -

Il faut itérer la prise en compte de l'adjacence (groupements de 2 cases, de 4 cases etc...)

Exemple :

0 0 0 1 1 1 1 0b c

a

0

1

1 1 0 1

1 1 1 1

g(a,b,c)

case 0case 1

(0, 1)

case 4case 5

(4, 5)(0, 1, 4, 5) : b

case 7case 6

(7, 6)(4, 5, 7, 6) : a

case 2case 6

(2, 6)

case 0case 4 (0, 4)

(2, 6, 0, 4) : c

1 1 0 11 1 1 1

1 1 0 11 1 1 1

1 1 0 11 1 1 1

On obtient l'expression g(a, b, c) = b + a + c

Remarque : c'est en fait le maxterme (ou monal canonique) associé au point à 0 de la fonction.

On peut rechercher les monaux premiers d'une fonction en regroupant les cases adjacentes à 0 du tableau de Karnaugh de la fonction, suivant les mêmes règles.

Exercices

I-18 Rechercher les monômes premiers de la fonction Impair (x,y,z) ; de la fonction f(a,b,c) = Σ (2, 3, 5, 7) ; de g(a,b,c) = Σ (0, 1, 5, 7) ; de h(a,b,c) = Σ (0, 1, 2, 3, 7).

I-19 Rechercher les monaux premiers de la fonction f(a,b,c) = Σ (2, 3, 5, 7)

Tableau de Karnaugh à 4 variables

Page 42: CHAPITRE I :

- I.42 -

x1 x0 00 01 11 10 x3x2 00 0 1 3 2 code hexadécimal 01 4 5 7 6 des configurations 11 C D F E de valeurs des entrées 10 8 9 B A associées à chaque case

Outre les groupements de 2 cases, il y a de nombreux groupements possibles de 4 cases :

1 colonne, par exemple (1, 5, D, 9) : x1 x0

1 ligne, par exemple (8, 9, B, A) : x3 x2

4 cases formant un carré (y compris les adjacences entre haut et bas, gauche et droite)

(5, 7, D, F) : x2 x0 (-)

(4, C, 6, E) : x2 x0 (0)

(0, 8, 2, A) : x2 x0 (+)

+ +oo

+

_ _ o_ _

+

• •

o• •

etc

Il y a aussi des groupements de 8 cases, de 2 lignes ou 2 colonnes, par exemple (0, 1, 3, 2, 8, 9, B, A) : x2

Exemple :

f(a, b, c, d) = Σ (0, 1, 2, 5, 6, 7, 8, A, D E, F)

c d

b 0 0 0 1 1 1 1 0a

0 00 1

1 11 0

1 1 0 10

01

1 1 1

1 1 1

0 0 1

groupement des cases (0,1) (1,5) (5,7,D,F) (7,6,F,E)

monômes premiers : m1 = a b c m2 = a c d m3 = bd m4 = bc

Page 43: CHAPITRE I :

- I.43 -

groupements des cases (2,6,E,A) (0,8,2,A)

m5 = c d m6 = b d

Pour 5 variables, on peut faire 2 tableaux à 4 variables, l'un pour la 5e variable à 0, l'autre pour la 5e variable à 1. Les cases placées identiquement dans les 2 tableaux sont adjacentes.

Exercices

I-20 Déterminer les monômes premiers de g(a,b,c,d) = Σ (0,1,2,3,4,7,8,9,A,B,C,F).

I-21 Déterminer aussi les monaux premiers de cette fonction.

Tableaux de Karnaugh généralisés

On peut aussi utiliser des tableaux de Karnaugh généralisés (cf tableau de valeurs généralisés).

Exemple :

On reprend la fonction de l'exemple précédent, qui peut être représentée par le tableau de valeurs généralisé ci-dessous.

c db 0 0 0 1 1 1 1 0

0

1

1

0 1

0

1

1

1

a

f(a,b,c,d) = Σ(0,1,2,5,6,7,8,A,D,E,F)

- groupements des cases à 1 : (5,7) : b d, (7,6) : b c, (2,6) : cd, (0,2) : bd

- couverture de la case à a

1 : a b c d

0 : b c d = +a b c d Š b d, non premier

a b c da b c

1 : a b c d

5 : b c d = +a b c d Š b d, non premier

a b c da c d

case

case

case

case

On retrouve ainsi les 6 monômes premiers de la fonction.

Page 44: CHAPITRE I :

- I.44 -

L'algorithme de recherche des groupements de cases dans le cas d'un tableau de Karnaugh généralisé est le suivant :

- ordonner les sous-fonctions fi,j figurant dans les différentes cases (la relation d'ordre n'étant pas totale, certaines sous-fonctions ne seront pas comparables ; mais la relation 0 ≤ fi,j ≤1 est toujours vérifiée),

- couvrir les cases ( ≠0) dans l'ordre décroissant des sous-fonctions ; toute case où figure une sous-fonction fi,j peut être regroupée avec une case adjacente où figure une sous-fonction ≥ fi,j (couvrir d'abord les cases où figurent des 1, en les regroupant si possible ; puis couvrir les cases où figurent les fi,j les plus grandes, en les regroupant éventuellement avec des cases adjacentes où figurent des 1, ou en regroupant entre elles des cases où figurent la même sous-fonction ; etc.).

Exemple

Pour la fonction f(a,b,c,d) ci-dessus, on commence par couvrir les cases à 1 : cases 0, 2, 5, 6, 7, monômes b d , c d , b d, b c. Puis on couvre la case où figure a (case 1) ,

qui peut être regroupée avec la case 0 (qui contient un 1 qui est ≥ a ), ou avec la case

5, ce qui donne les monômes a b c et a c d.

Exercice

I-22 Rechercher les monômes premiers de la fonction Maj5(x,y,z,u,w) sur un tableau de Karnaugh généralisé (tableau de x,y,z, sous-fonctions de u et w).

Recherche des monômes premiers à partir d'une forme non canonique

On peut éviter de partir de la forme canonique d'une fonction, en utilisant la méthode des "consensus", qui consiste à appliquer la règle de redondance :

x m1 + xm2 = xm1 + xm2 + m1m2 (i)

µ = m1m2 est le consensus de xm1 et xm2 et peut absorber d'autres termes, par la règle :

µ+µm = µ (ii)

On examine successivement toutes les variables, pour détecter l'occurence de termes de la forme x m1 + x m2 , qui permettent d'appliquer (i). Puis on applique (ii), qui permet de supprimer le monôme µm, qui est d'évidence non premier (car µm ≤ µ). On recommence ces étapes sur la nouvelle expression obtenue, jusqu'à ce qu'il n'y ait plus de modification de l'expression;

Page 45: CHAPITRE I :

- I.45 -

Exemple

On reprend la même fonction f(a, b, c, d), donnée par l'expression.

f = abc + bd + bcd + bd

- variable a : aucun consensus

- variable b : consensus ac d, cd (cd absorbe bcd)

f = abc + bd + bd + acd + cd

- variable c : consensus : abd, absorbé par bd

- variable d : consensus : bc, abc (abc est absorbé, bc absorbe bcd)

f = abc + bd + �b�d + �a�cd + bc + c�d

On retrouve les 6 monômes premiers de la fonction.

La méthode des consensus est particulièrement efficace lorsque la fonction a beaucoup de variables (donc beaucoup de mintermes), et est souvent utilisée par les logiciels de minimisation de fonctions booléennes.

3.2.D. RECHERCHE D'UNE EXPRESSION IRREDONDANTE

Une expression irrédondante doit couvrir chaque point à 1 de la fonction, avec le minimum de monômes premiers. La méthode la plus systématique utilise l'algèbre de Boole, à un autre niveau.

A un monôme premier mi, on associe la variable booléenne µi, avec : µi = 1 si le monôme appartient à l'expression = 0 sinon. Soit un point Pj à 1 de la fonction : 1 au moins des monômes mij qui le couvrent doit appartenir à l'expression ; donc Σ µij = 1 Chacun des points à 1 doit être couvert ; donc Πj Σi µij = 1 Il reste à développer cette formule pour obtenir une expression ΣΠ ; chacun des monômes obtenus représente un ensemble de monômes premiers de la fonction dont la somme constitue une expression irrédondante. Exemple : f(a,b,c,d) = Σ(0,1,2,5,6,7,8,A,D,E,F) monômes m1 (0,1) m2(1,5) m3(5,7,D,F) m4 (7,6,F,E) m5(2,6,E,A) m6(0,8,2,A) Πj Σi µij = (µ1 + µ6) (µ1 + µ2) (µ5 + µ6) (µ2 + µ3) (couverture des points 0,1,2,5) (µ4+µ5)(µ3+µ4) µ6 (µ5+µ6) (couverture des points 6,7,8,A) µ3 (µ4+µ5) (µ3+µ4) (couverture des points D,E,F)

Page 46: CHAPITRE I :

- I.46 -

Toutes les sommes contenant µ3 ou µ6 sont absorbées par les termes µ3 et µ6. Πj Σi µij = (µ1+µ2) (µ4+µ5) µ6µ3 = µ1µ4µ6µ3 + µ1µ5µ6µ3 + µ2µ4µ6µ3 + µ2µ5µ6µ3 Il existe donc 4 expressions irrédondantes, m6 et m3 sont monômes obligatoires f(a,b,c,d) = b d + bd + abc + b c ou = b d + bd + abc + cd ou = b d + bd + ac d + b c ou = b d + bd + ac d + cd Une autre méthode est de travailler à l'aide d'un tableau de couverture :

0 1 2 5 6 7 8 A D E F

m1 + + m2 + + m3 + + + + m4 + + + + m5 + + + + m6 + + + +

0 1 2 5 6 7 8 A D E F

m1 + + m2 + + m3 + + + + m4 + + + + m5 + + + + m6 + + + +

1 6 E

m1 + m2 + m3 m4 + + m5 + + m6

nbre de monômes couvrants

2 2 2 2 2 2 1 2 1 2 2 -> m6 et m3 obligatoires

m3 et m5 font partie de la base -> points 0, 2, 5, 7, 8, A, D, F couverts

nbre de monômes couvrants 2 2 2 -> choix entre m1 et m2, entre m4 et m5

nbre de points couverts

1 1 2 2

En général, on peut déterminer directement à partir du tableau de Karnaugh une expression irrédondante. On peut rechercher une expression irrédondante de type ΠΣ (produits de monaux). Sur un tableau de Karnaugh, on cherche alors à regrouper les points à 0 de la fonction pour déterminer les monaux premiers. Puis on recherche de la même façon une expression irrédondante.

Page 47: CHAPITRE I :

- I.47 -

Exemple : Recherche de l'expression irrédondante ΠΣ de la même fonction

0 0 0 1 1 1 1 0

0 00 1

1 11 0

1 1 0 10

01

1 1 1

1 1 1

0 0 1

c da b

monaux premiers M1 = b + c + d M2 = a + b + d M3 = b + c + d (4,C) (9,B) (3,B)

Ces 3 monaux sont obligatoires

f(a,b,c,d) = (b+c+d) (a+b+d) (b+c+d)

Pour cet exemple, l'expression ΠΣ est plus simple que les expressions ΣΠ.

coût circuit NOR à partir de l'expression ΠΣ : 4 portes 3 entrées : 16

coût circuit NAND à partir de l'expression ΣΠ : 3 portes 2 entrées, 1 porte 3 entrées, 1 porte 4 entrées : 18

Exercice

I-23 Rechercher les expressions irrédondantes des fonctions dont les monômes premiers ont été déterminés dans les exercices précédents.

3.2.E. CAS DES FONCTIONS φ BOOLEENNES

Les fonctions φ-booléennes sont des fonctions booléennes dont la valeur n'est pas définie en chaque point, soit parce que la valeur en ce point est indifférente, soit parce que la configuration de valeurs d'entrées correspondant au point est impossible. On note cette valeur indéfinie par φ.

Une fonction φ-booléenne est une application de {0,1}n dans {0,1,φ).

Exemple :

Le cas classique est celui d'une fonction d'un nombre décimal codé en binaire sur 4 bits x3 x2 x1 x0. Une telle fonction aura toujours un tableau de Karnaugh de ce type :

Page 48: CHAPITRE I :

- I.48 -

x 1 x0x3 x 2 0 0 0 1 1 1 1 0

0 00 11 11 0

φ φ φ φφφ

Soit ∅ (xn-1, xn-2,...x0) une fonction φ booléenne.

La borne supérieure de ∅ (xn-1, xn-2,...x0) est la fonction obtenue en associant la valeur 1 à tous les points à 0 de ∅. La borne inférieure est obtenue en associant la valeur 0 à ces points.

Une expression irrédondante ΣΠ d'une fonction φ booléenne est une somme de monômes premiers de sa borne supérieure, irrédondante par rapport à sa borne inférieure.

Exemple :

f(x3,x2,x1,x0) = le nombre décimal codé binaire en entrée est un multiple de 3 (différent de 0).

00 01 11 10x x

x x

0 00 1

1 1

1 0

0 0 1 00 0 0 1

φ φ φ φ

φφ0 1

3 21 0

Tableau de f

Page 49: CHAPITRE I :

- I.49 -

0 0 1 0

0 0 0 1

1 1 1 1

0 1 1 1

Borne supérieure de f

0 0 1 0

0 0 0 1

0 0 0 0

0 1 0 0

Borne inférieure de f

La borne supérieure a 5 monômes premiers. Trois suffisent à couvrir les points à 1 de la borne inférieure.

f(x3,x2,x1,x0) = x3x0 + x2x1x0 + x2x1x0

En général, on se contentera de couvrir les points à 1 en utilisant au mieux les points à φ de la fonction pour effectuer des groupements de plus grande taille.

3.2.F. MINIMISATION MULTI-FONCTIONS

Quand un circuit réalise un ensemble de fonctions des mêmes variables, minimiser individuellement chacune des fonctions ne suffit pas à assurer que le circuit correspondant est optimal.

Exemple

Soient les 2 fonctions des variables a, b, c, dont les tableaux de Karnaugh sont donnés ci-dessous :

b c 00 01 11 10 a 0 0 1 0 0 1 0 1 1 0

b c 00 01 11 10 a 0 0 1 1 0 1 1 0 1 1

f(a, b, c) = b c + a c g(a, b, c) = a c + a c + a b

Un circuit réalisant f et g à partir des expressions irrédondantes des 2 fonctions comportera 5 monômes. Or, il suffit de 4 monômes pour couvrir tous les points à 1 de f et g :

Page 50: CHAPITRE I :

- I.50 -

b c 00 01 11 10 a 0 0 1 0 0 1 0 1 1 0

b c 00 01 11 10 a 0 0 1 1 0 1 1 0 1 1

f(a, b, c) = b c + a b c g(a, b, c) = a c + a c + a b c

Le monôme a b c, qui n'est premier ni pour f ni pour g, permet de couvrir le point 7 dans f et g, à la place de a c pour f et de a b pour g.

Une méthode systématique pour effectuer une optimisation d'un ensemble de n fonctions, est de rechercher les monômes premiers des produits des fonctions 2 à 2, 3 à 3, ..., n à n.

Dans une 2ème étape, on détermine un ensemble minimal de ces monômes permettant de couvrir tous les points des fonctions.

Exemple

Pour l'exemple précédent, le tableau de la fonction produit de f et g est donné ci-dessous :

b c 00 01 11 10 a 0 0 1 0 0 1 0 0 1 0

f . g(a, b, c) = a b c + a b c

De l'ensemble des 8 monômes premiers de f, g et f.g, on trouve une couverture de f et g par l'ensemble minimal de monômes : a b c, b c, a c et a c .

Cette minimisation du nombre total de monômes (au lieu du nombre de monômes par fonction) est particulièrement importante pour la conception à l'aide de PLA. Malheureusement, dès que le nombre de fonctions à réaliser est important, la méthode évoquée plus haut devient trop complexe : les logiciels automatiques se contentent de méthodes heuristiques, et ne garantissent pas l'obtention d'un circuit optimal.

Exercice

I-24 Commande d'un afficheur 7 segments (Fig.I-21).

Page 51: CHAPITRE I :

- I.51 -

x

x

x

x

a b c d e f g

3

2

1

0

a

b

c

d

e

f

g

C

Figure I-21 : spécification du circuit de commande d'un

afficheur 7-segments

Sur les entrées x3, x2, x1, x0 du circuit à réaliser est codé en binaire un chiffre entre 0 et 9. Les 7 sorties a, b, c, d, e, f et g du circuit commandent l'allumage des différents segments (par exemple, si la sortie a = 1, le segment horizontal du haut est allumé). Il s'agit d'afficher sur les 7 segments le dessin du chiffre mis en entrée.

1- Faire les tableaux de Karnaugh des 7 fonctions (il s'agit de fonctions φ-booléennes).

2- Chercher des expressions irrédondantes pour chacune des fonctions et évaluer le nombre de monômes nécessaires à la réalisation de ces expressions.

3- Rechercher une optimisation du nombre de monômes (remarque : comme ces fonctions ne sont définies que pour 10 configurations de valeurs des entrées, une réalisation de leurs expressions canoniques a au plus 10 monômes).

4- Réalisation : comparer le coût d’une réalisation en portes NAND à partir des expressions obtenues en 2 et de celles obtenues en 3.