ALGÈBRE DE BOOLE 02 : SIMPLIFICATION ET CIRCUITS

Chapitre 2 sur 2. Construire les formes canoniques, simplifier avec Karnaugh et réaliser des circuits utiles à l’ordinateur.

De la table aux formes canoniques

Ce deuxième cours suppose connus les portes, les propriétés et De Morgan. L’objectif est de transformer une spécification en circuit plus simple, puis de vérifier que la transformation conserve la fonction.

La chaîne de conception

Énoncé → variables et convention 0/1 → table de vérité → forme canonique → simplification → logigramme → vérification.

Minterme : sélectionner une ligne à 1

Un littéral est une variable ou son complément. Un minterme est un produit contenant une fois chacune des variables, complémentée ou non. Il vaut 1 sur une unique ligne de la table.

Sur la ligne 101, avec l’ordre a,b,ca,b,c, on obtient ab‾ca\overline b c. Une entrée à 1 donne la variable directe ; une entrée à 0 donne son complément.

m5=ab‾c,5=(101)2.m_5=a\overline b c,\qquad 5=(101)_2.

La forme canonique disjonctive est la somme des mintermes des lignes où la sortie vaut 1. À ordre de variables fixé, cet ensemble de mintermes est unique ; l’ordre d’écriture des termes est libre.

f=∑m(i)pour les indices ouˋ f=1.f=\sum m(i)\quad\text{pour les indices où }f=1.

Maxterme : sélectionner une ligne à 0

Un maxterme est une somme contenant chaque variable une fois. Il vaut 0 sur une unique ligne. La règle s’inverse : une entrée à 0 donne la variable directe ; une entrée à 1 donne son complément.

M5=a‾+b+c‾.M_5=\overline a+b+\overline c.

La forme canonique conjonctive est le produit des maxtermes des lignes où la sortie vaut 0 :

f=∏M(i)pour les indices ouˋ f=0.f=\prod M(i)\quad\text{pour les indices où }f=0.
Ne pas confondre canonique et simplifiée.

f=a+bcf=a+bc est une somme de produits, mais pas une forme canonique sur a,b,ca,b,c : chaque produit ne contient pas les trois variables. Une forme canonique décrit directement la table ; une forme simplifiée réduit le circuit.

Compléter une variable absente

bc‾=(a+a‾)bc‾=abc‾+a‾bc‾.b\overline c=(a+\overline a)b\overline c=ab\overline c+\overline a b\overline c.

La fonction vaut donc 1 aux indices 2 et 6, soit 010 et 110. Elle ne dépend pas réellement de aa, même si sa table est écrite avec trois variables.

Cas particuliers : la somme sans minterme vaut 0 ; le produit sans maxterme vaut 1. Il existe 22n2^{2^n} fonctions booléennes à nn variables, car chacune des 2n2^n sorties de la table se choisit indépendamment.

Un exemple complet : la fonction étudiée

Reprenons la table suivante. On fixe l’ordre a,b,ca,b,c, avec aa bit de poids fort.

IndiceabcF
00000
10011
20101
30110
41001
51011
61101
71110

1. Partir des cinq lignes à 1

F=∑m(1,2,4,5,6).F=\sum m(1,2,4,5,6).
F=a‾ b‾c+a‾bc‾+ab‾ c‾+ab‾c+abc‾.F=\overline a\,\overline b c+\overline a b\overline c+a\overline b\,\overline c+a\overline b c+ab\overline c.

2. Partir des trois lignes à 0

F=∏M(0,3,7)=(a+b+c)(a+b‾+c‾)(a‾+b‾+c‾).F=\prod M(0,3,7)=(a+b+c)(a+\overline b+\overline c)(\overline a+\overline b+\overline c).

À l’indice 3, soit 011, le maxterme est a+b‾+c‾a+\overline b+\overline c : chacun de ses littéraux vaut 0 sur cette ligne. La forme conjonctive est parfois plus courte à construire lorsqu’il y a moins de 0 que de 1.

3. Simplifier algébriquement

Regroupons les indices (1,5), (2,6) et (4,5). Le minterme d’indice 5 est utilisé deux fois, ce qui est autorisé par x+x=xx+x=x.

F=(a‾+a)b‾c+(a‾+a)bc‾+ab‾(c‾+c)=b‾c+bc‾+ab‾=(b⊕c)+ab‾.\begin{aligned}F&=(\overline a+a)\overline b c+(\overline a+a)b\overline c+a\overline b(\overline c+c)\\&=\overline b c+b\overline c+a\overline b\\&=(b\oplus c)+a\overline b.\end{aligned}

Chaque paire élimine la variable qui change. On peut maintenant réaliser la fonction avec des portes à deux entrées.

Simplifier avec Karnaugh

Une carte de Karnaugh réorganise les lignes d’une table pour rendre les simplifications visibles. Les colonnes suivent le code de Gray : 00, 01, 11, 10. Entre deux cases voisines, une seule variable change.

Règles de regroupement

  1. Pour une somme de produits, regrouper les 1 en rectangles de 1, 2, 4, 8… cases.
  2. Chaque groupe contient uniquement des 1, éventuellement des états indifférents explicitement autorisés.
  3. Les bords opposés sont voisins ; les diagonales ne le sont pas.
  4. Les groupes peuvent se chevaucher. Chaque 1 doit être couvert.
  5. Privilégier les grands groupes et une couverture sans groupe inutile. Comparer les couvertures s’il en existe plusieurs.
  6. Dans un groupe, garder les variables constantes : directe si elle vaut 1, complémentée si elle vaut 0. Éliminer celles qui changent.

Carte de la fonction étudiée

Les cellules portent la sortie et, en petit, leur indice. Les encadrements indiquent les trois paires retenues.

Groupes de Karnaugh : bleu (1,5), ocre (4,5), vert (2,6). Chaque contour entoure une paire entière.a / bc01000m01m4011m11m5110m30m7101m21m6
Groupes de Karnaugh : bleu (1,5), ocre (4,5), vert (2,6). Chaque contour entoure une paire entière.
Bleu : (1,5)Ocre : (4,5)Vert : (2,6)
{1,5}→b‾c,{4,5}→ab‾,{2,6}→bc‾.\{1,5\}\to\overline b c,\quad\{4,5\}\to a\overline b,\quad\{2,6\}\to b\overline c.

Les indices 1, 2 et 4 ne peuvent être couverts que par ces paires dans cette carte. Les trois termes sont donc nécessaires pour une couverture minimale en somme de produits :

F=b‾c+ab‾+bc‾.\boxed{F=\overline b c+a\overline b+b\overline c}.

Exemple à quatre variables : les quatre coins

Pour G=∑m(0,2,8,10)G=\sum m(0,2,8,10), lignes abab et colonnes cdcd sont toutes deux dans l’ordre Gray. Les quatre coins forment un seul groupe, grâce à l’adjacence des bords.

ab \ cd00011110
001001
010000
110000
101001

Dans ces quatre cases, aa et cc changent, tandis que b=0b=0 et d=0d=0. Ainsi G=b‾ d‾G=\overline b\,\overline d.

Regrouper les 0 pour un produit de sommes

La même méthode fonctionne avec les 0. Pour chaque groupe de 0, écrire une somme qui s’annule sur le groupe : variable directe si elle est constamment à 0 ; complémentée si elle est constamment à 1. Multiplier ensuite les sommes obtenues.

États indifférents

Un état noté X n’est ni un 0 imposé, ni un 1 imposé. On peut l’utiliser comme 0 ou 1 pour agrandir les groupes. Exemple : H=∑m(1,3)H=\sum m(1,3), avec d={5,7}d=\{5,7\}, sur trois variables. Les quatre indices impairs donnent le groupe c=1c=1, donc H=cH=c respecte tous les états imposés.

Un X doit venir de la spécification.

On ne déclare pas une ligne indifférente pour simplifier un calcul. Si une combinaison peut réellement survenir et que sa sortie est exigée, sa valeur doit être respectée.

NAND et NOR : des portes universelles

Un ensemble de portes est fonctionnellement complet s’il permet de réaliser toute fonction booléenne. ET, OU et NON suffisent. NAND seule ou NOR seule suffisent aussi, car elles permettent de reconstruire ces trois opérations.

Avec NAND uniquement

On note a↑b=ab‾a\uparrow b=\overline{ab}.

a‾=a↑a,ab=(a↑b)↑(a↑b),a+b=(a↑a)↑(b↑b).\begin{aligned}\overline a&=a\uparrow a,\\ab&=(a\uparrow b)\uparrow(a\uparrow b),\\a+b&=(a\uparrow a)\uparrow(b\uparrow b).\end{aligned}

Pour la dernière ligne : a‾ b‾‾=a+b\overline{\overline a\,\overline b}=a+b, par De Morgan. Une porte NAND dont les deux entrées sont reliées ensemble joue le rôle d’un inverseur.

Avec NOR uniquement

On note a↓b=a+b‾a\downarrow b=\overline{a+b}.

a‾=a↓a,a+b=(a↓b)↓(a↓b),ab=(a↓a)↓(b↓b).\begin{aligned}\overline a&=a\downarrow a,\\a+b&=(a\downarrow b)\downarrow(a\downarrow b),\\ab&=(a\downarrow a)\downarrow(b\downarrow b).\end{aligned}

Deux niveaux NAND–NAND

Pour une somme de produits S=p+qS=p+q, une double négation puis De Morgan donnent :

S=p+q‾‾=p‾⋅q‾‾.S=\overline{\overline{p+q}}=\overline{\overline p\cdot\overline q}.

Si p=abp=ab et q=cdq=cd, deux NAND calculent ab‾\overline{ab} et cd‾\overline{cd}, puis une troisième NAND produit S=ab+cdS=ab+cd. Le principe dual NOR–NOR réalise naturellement un produit de sommes.

NAND et NOR ne sont pas associatives.

On ne peut pas remplacer une porte NAND à trois entrées par une cascade arbitraire de deux NAND : abc‾≠ab‾ c‾\overline{abc}\ne\overline{\overline{ab}\,c}. Pour a=b=c=1a=b=c=1, le premier membre vaut 0 et le second vaut 1.

Construire XOR avec quatre NAND

Le circuit suivant réalise une porte XOR à partir de quatre NAND. Les quatre portes sont des NAND à deux entrées ; les fils marqués d’un point sont connectés.

XOR réalisé avec quatre portes NAND.abnpqS
XOR réalisé avec quatre portes NAND.

Suivre les quatre NAND sans confondre leurs sorties

  1. Première porte : a et b produisent n. La bulle inverse tout le produit : n est nul uniquement pour a = b = 1.
  2. Deuxième niveau : n se divise en deux branches au point plein. La porte du haut reçoit a et n ; celle du bas reçoit n et b. Elles donnent les deux signaux p et q.
  3. Dernière porte : p et q sont réunis par NAND. Sa bulle inverse leur produit, et non chacune des entrées séparément.

Exemple 01 : n = 1, p = 1 et q = 0 ; la dernière NAND fournit 1. Exemple 11 : n = 0, puis p = q = 1 ; la sortie finale vaut 0. Les entrées différentes donnent donc 1, les entrées égales donnent 0.

Les points pleins à gauche partagent a ou b entre deux portes. Le point au centre partage le même signal n : il ne crée pas deux variables différentes. Les lettres intermédiaires servent à vérifier le circuit porte par porte.

n=ab‾,p=an‾,q=bn‾,S=pq‾.n=\overline{ab},\quad p=\overline{an},\quad q=\overline{bn},\quad S=\overline{pq}.

Pourquoi obtient-on XOR ?

S=p‾+q‾=an+bn=a(a‾+b‾)+b(a‾+b‾)=ab‾+a‾b=a⊕b.\begin{aligned}S&=\overline p+\overline q=an+bn\\&=a(\overline a+\overline b)+b(\overline a+\overline b)\\&=a\overline b+\overline a b=a\oplus b.\end{aligned}
abnpqS
001110
011101
101011
110110

Ce circuit utilise quatre portes et trois niveaux sur le plus long chemin. Le nombre de portes et le nombre de niveaux sont deux critères distincts : réduire une expression ne suffit pas à estimer son délai réel.

Applications en architecture des ordinateurs

Le demi-additionneur : additionner deux bits

La somme arithmétique de deux bits produit un bit de somme ss et une retenue rr.

s=a⊕b,r=ab.s=a\oplus b,\qquad r=ab.
abSomme sRetenue rRésultat rs
000000
011001
101001
110110
Un XOR calcule le bit de somme ; un ET calcule la retenue.absr
Un XOR calcule le bit de somme ; un ET calcule la retenue.

Pourquoi deux sorties pour additionner deux bits ?

Les deux portes reçoivent les mêmes entrées, grâce aux dérivations indiquées par des points pleins. Le XOR du haut fournit le bit de poids faible s ; le ET du bas fournit la retenue r, qui occupe le poids suivant.

Pour a = b = 1, le XOR donne s = 0 et le ET donne r = 1. La lecture du résultat se fait dans l’ordre r puis s : on obtient 10 en binaire, soit 2. Pour 01 ou 10, on obtient r = 0 et s = 1, soit 01.

Rappel sur les fils : un point plein relie les branches. Dans ce dessin, un croisement sans point ne relie pas les deux signaux ; a et b restent indépendants. Le demi-additionneur ne possède pas d’entrée de retenue, d’où son nom.

L’additionneur complet : tenir compte d’une retenue entrante

Pour additionner a,ba,b et une retenue d’entrée cinc_{in}, on relie deux demi-additionneurs :

p=a⊕b,s=p⊕cin,cout=ab+p cin.p=a\oplus b,\quad s=p\oplus c_{in},\quad c_{out}=ab+p\,c_{in}.

La retenue vaut aussi ab+acin+bcinab+ac_{in}+bc_{in} : elle vaut 1 si au moins deux des trois entrées valent 1. Plusieurs additionneurs complets en chaîne permettent l’addition de mots binaires. Le délai de propagation de la retenue limite la vitesse d’une chaîne simple.

Le multiplexeur 2 vers 1 : choisir une donnée

Avec les entrées de données d0,d1d_0,d_1 et la sélection ss :

Y=s‾ d0+s d1.Y=\overline s\,d_0+s\,d_1.

Si s=0s=0, le premier produit transmet d0d_0 et le second est nul. Si s=1s=1, on obtient d1d_1. Des multiplexeurs choisissent, par exemple, la donnée envoyée à une entrée d’une unité arithmétique et logique.

Décomposition de Shannon

F(a,b,c)=aF(1,b,c)+a‾F(0,b,c).F(a,b,c)=aF(1,b,c)+\overline a F(0,b,c).

Pour a=1a=1, seul le premier terme reste. Pour a=0a=0, seul le second reste. Cette décomposition montre qu’une fonction peut être réalisée par un multiplexeur commandé par aa, dont les données sont les deux fonctions obtenues en fixant aa.

Exercices d’application corrigés

Application 1 · Simplifier pas à pas

Simplifier :

S1=a‾b+ab‾+ab,S2=b+ab+bc+c.S_1=\overline a b+a\overline b+ab,\qquad S_2=b+ab+bc+c.
S3=(b+b‾a)c+abc‾,S4=(a+c)(a+b‾)(a+c‾).S_3=(b+\overline b a)c+ab\overline c,\qquad S_4=(a+c)(a+\overline b)(a+\overline c).
Voir le corrigéMasquer le corrigé
S1=a‾b+a(b‾+b)=a‾b+a=a+b,S2=(b+ab)+(c+bc)=b+c,S3=(a+b)c+abc‾=ac+bc+abc‾=bc+a(c+bc‾)=bc+a(b+c)=ab+ac+bc,S4=(a+c)(a+c‾)(a+b‾)=(a+cc‾)(a+b‾)=a(a+b‾)=a.\begin{aligned}S_1&=\overline a b+a(\overline b+b)=\overline a b+a=a+b,\\S_2&=(b+ab)+(c+bc)=b+c,\\S_3&=(a+b)c+ab\overline c=ac+bc+ab\overline c\\&=bc+a(c+b\overline c)=bc+a(b+c)=ab+ac+bc,\\S_4&=(a+c)(a+\overline c)(a+\overline b)\\&=(a+c\overline c)(a+\overline b)=a(a+\overline b)=a.\end{aligned}

Pour S3S_3, les deux identités utilisées sont b+b‾a=a+bb+\overline b a=a+b et c+c‾b=c+bc+\overline c b=c+b. La sortie simplifiée est la fonction majorité de trois bits.

Application 2 · Deux formes canoniques d’une même fonction

Pour H=a‾b+b‾ c‾+abc‾H=\overline a b+\overline b\,\overline c+ab\overline c, établir la table, les deux formes canoniques, puis simplifier.

Voir le corrigéMasquer le corrigé
abcH
0001
0010
0101
0111
1001
1010
1101
1110

La sortie vaut 1 aux indices 0, 2, 3, 4 et 6 ; elle vaut 0 aux indices 1, 5 et 7.

H=∑m(0,2,3,4,6)=∏M(1,5,7).H=\sum m(0,2,3,4,6)=\prod M(1,5,7).
H=a‾ b‾ c‾+a‾bc‾+a‾bc+ab‾ c‾+abc‾.H=\overline a\,\overline b\,\overline c+\overline a b\overline c+\overline a bc+a\overline b\,\overline c+ab\overline c.
H=(a+b+c‾)(a‾+b+c‾)(a‾+b‾+c‾).H=(a+b+\overline c)(\overline a+b+\overline c)(\overline a+\overline b+\overline c).

Les indices 0, 2, 4 et 6 forment le groupe c‾\overline c. Les indices 2 et 3 forment le groupe a‾b\overline a b. On obtient :

H=c‾+a‾b.H=\overline c+\overline a b.

Une forme canonique conjonctive est toujours un produit de maxtermes. Remplacer un des produits par une somme modifie la fonction.

Application 3 · Universalité de NOR

Exprimer NON, OU et ET uniquement avec NOR. Justifier chaque construction.

Voir le corrigéMasquer le corrigé

Notons N(x,y)=x+y‾N(x,y)=\overline{x+y}.

N(a,a)=a‾.N(a,a)=\overline a.
N(N(a,b),N(a,b))=a+b‾+a+b‾‾=a+b.N(N(a,b),N(a,b))=\overline{\overline{a+b}+\overline{a+b}}=a+b.
N(N(a,a),N(b,b))=a‾+b‾‾=ab.N(N(a,a),N(b,b))=\overline{\overline a+\overline b}=ab.

NON utilise une NOR, OU en utilise deux et ET en utilise trois. Comme toute fonction peut s’écrire avec ET, OU et NON, NOR seule est fonctionnellement complète.

Application 4 · Une simplification symétrique

G=(a+b)(a+c)+(b+c)(b+a)+(c+a)(c+b).G=(a+b)(a+c)+(b+c)(b+a)+(c+a)(c+b).
Voir le corrigéMasquer le corrigé

Appliquer trois fois (x+y)(x+z)=x+yz(x+y)(x+z)=x+yz :

G=(a+bc)+(b+ac)+(c+ab)=a+b+c+ab+ac+bc=a+b+c.G=(a+bc)+(b+ac)+(c+ab)=a+b+c+ab+ac+bc=a+b+c.

Les produits sont absorbés : a+ab=aa+ab=a, a+ac=aa+ac=a, b+bc=bb+bc=b. La sortie ne vaut 0 que si les trois entrées valent 0.

Application 5 · Une lampe automatique

Une lampe doit s’allumer si le mode automatique est actif, s’il fait sombre et si une personne est présente. On note a=1a=1 pour le mode automatique, l=1l=1 pour une forte luminosité et p=1p=1 pour une présence. Écrire son équation et l’indice de son minterme.

Voir le corrigéMasquer le corrigé
L=al‾p.L=a\overline l p.

La seule combinaison favorable, dans l’ordre a,l,pa,l,p, est 101. Donc L=∑m(5)L=\sum m(5). La forte luminosité doit être inversée ; le mode automatique et la présence restent directs. Le circuit utilise un inverseur sur ll, puis un ET à trois entrées, ou deux ET à deux entrées en cascade.

Vérifier la fonction et son circuit

Deux expressions sont équivalentes si elles ont la même sortie pour toutes les combinaisons d’entrées. Pour trois variables, on compare les huit lignes ; pour quatre, les seize lignes.

  1. Fixer l’ordre des variables et le bit de poids fort avant toute numérotation.
  2. Écrire les sorties intermédiaires du circuit ; une bulle inverse toute la fonction de sa porte.
  3. Contrôler la portée des barres avant d’appliquer De Morgan.
  4. Comparer la table de la spécification, la formule simplifiée et le circuit.
  5. Pour une fonction incomplète, comparer tous les états imposés ; les X peuvent différer.

Mesurer la simplicité avec un objectif clair

Une somme de produits minimale n’est pas nécessairement le meilleur circuit pour une bibliothèque donnée. Comptez les portes, les entrées par porte et les niveaux successifs. Une porte XOR peut réduire le dessin, mais son coût réel dépend de la technologie. Les délais et les transitions physiques ne sont pas représentés par une table de vérité statique.

À retenir

La table définit la fonction. La forme canonique traduit la table. Les propriétés et Karnaugh réduisent l’expression. Le logigramme réalise l’expression. La vérification exhaustive garantit leur accord sur les états spécifiés.