Des tutoriaux sur WIKIPEDIA. (Dans la section CMOS. Combinatoire, séquentiel, VHDL, etc......)

Ci-après un rappel substanciel d'une terminologie spécifique à la logique dite combinatoire par opposition à la logique séquentielle. S'ensuivra une méthode de simplification algébrique dite par la méthode des consensus. Nous la devons à TISON (Grenoble). Cette méthode fait de la table de Karnaugh une méthode de simplification obsolète. A noter que cette méthode s'applique quel que soit l'ordre de la fonction considérée (nombre de variables). Ne pas confondre la méthode de Tison et celle de Quine Mc Cluskey.
Il est regrettable de constater qu'on peut encore voir écrire:     Y  =  a/b + bc + ac sans que l'on mette d'emblée le doigt sur l'économie d'un terme dans la fonction. ( a/b, lire: a ET b barre)

Terminologie
Formes canoniques
Les bases
Consensus
Simplifications d'une expression booléenne
Table de recouvrement
Exercices

LOGIQUE COMBINATOIRE

TERMINOLOGIE    (rappels)

Les écritures algébriques d'une mème fonction booléenne Y  peuvent prendre de multiples formes nettement différentes les unes des autres.

                        Y  = a./b  + c

S'écrit aussi:      Y = (a + c).(/b + c)
ou encore   :      Y =  /a. /b.c  +  b.c + a./b                (a)
voire mème:      Y =  /a. /b.c +  a.b.c + a./b.c  + /a.b.c +  a./b./c
etc .....
 

Cette diversité des représentations algébriques d'une mème fonction booléenne demande à ce que soit adoptée une terminologie suffisamment rigoureuse et non ambigue permettant l'identification précise du type d'écriture de la fonction à laquelle on a affaire. Nous  nous attachons ici à la classification et à l'identification des éléments et formes des fonctions booléennes. La seule connaissance de cette terminologie suffit déja pour une bonne part à la maitrise de la logique dite combinatoire.
 

Forme  DISJONCTIVE

C'est une fonction se présentant strictement sous la forme d'une SOMME de MONOMES.

EX :       y = a ./b  +  b.c./d  +  /a.c              (b)

Le premier monome se lit :    a   ET   PAS   b      (intersection logique)

On dit aussi d'une forme disjonctive que c'est une forme  P.L.A  (Programmable Logic Array). Nous savons qu'un PLA est en effet essentiellement constitué de deux couches logiques: Une couche de ET suivie d'une couche de OU.
 

Forme  CONJONCTIVE

C'est une fonction exclusivement constituée d'un PRODUIT de SOMMES.

EX :     y = (a  +  /c) . ( /b  +  c  +  /d ) . ( /c  +  d )               (c)

Intersection de trois sommes ou additions logiques.
 

Fonction ELEMENTAIRE

Une fonction Y  est une fonction élémentaire si elle ne se présente que selon l'une ou l'autre des deux formes précédentes (disjonctive ou conjonctive).

La fonction :               y  =   a . /b  +  c . ( /a.b  +  d . (a + /b))

n'est pas une fonction élémentaire. Elle n'est exclusivement ni une somme de produits ni un produit de sommes. Ce ne serait qu'en développant les mises en facteur que l'on obtiendrait une fonction élémentaire qui serait une somme de produits .

Chacun des termes d'une fonction élémentaire est un terme élémentaire [/ac  dans  (a),  /b+c+/d  dans  (c)].
 

Terme FONDAMENTAL

Un terme élémentaire dans lequel on retrouve toutes les variables de la fonction est un terme fondamental . Il n'y a pas de termes fondamentaux dans  (b) autant que dans (c).

Monome fondamental

Lorsqu'un terme fondamental est un produit, c'est un monome fondamental. Dans la fonction (a), le terme  /a/bc est un monome fondamental, bc  ne l'est pas .

On peut retenir qu'un monome fondamental est un monome qui rend compte d'un  '1'  et d'un seul parmi les '1' d'une table de Karnaugh.

Minterme / Maxterme

Dans une forme disjonctive un terme fondamental est un MINTERME. Dans une forme conjonctive c'est un  maxterme.
 


Formes  CANONIQUES

Pour une mème fonction nous distinguerons deux formes canoniques:

 - La forme canonique disjonctive
 - La forme canonique conjonctive Les seuls vocables disjonction et conjonction annoncent assez clairement les définitions.

A - Forme canonique  DISJONCTIVE :

C'est une somme de monomes FONDAMENTAUX    (mintermes) .

Exemples :
      y  =  a./b.c   + /a./b.c   +  a.b.c
      z  =  ab/c/de  +   abcd/e   +   /abc/d/e   +   ab/cde

Dans une forme canonique disjonctive fonction de  n  variables, chacun des  monomes est d'ordre  n.

La fonction ci-dessous ne se présente pas sous sa forme canonique disjonctive,

      v  =  abc + /ac + a/bc

Si les monomes abc et a/bc sont des monomes fondamentaux, le monome /ac  n'est pas fondamental.
 

B - Forme canonique CONJONCTIVE  :

C'est un produit de "maxtermes" exclusivement

exemple :              y  = (a + b + /c).(/a + /b + c).(a + /b + /c)

NOTA-BENE :

Pour une fonction F donnée, l'écriture d'une forme canonique, qu'elle soit disjonctive ou conjonctive, est unique. Elle identifie parfaitement la fonction.
 


Ecriture d'une fonction sous sa forme canonique disjonctive.

Il s'agit de faire apparaitre dans les monomes non fondamentaux les variables manquantes. Si  x  est une variable manquante pour le monome  m, on écrira :
   m  =     m(x  +  /x)   =     mx  +  m/x         (puisque:   x + /x = 1)

Exemple :

    Y =   a./b  +  /a./b.c  +  a./c    fonction des trois variables  (a, b, c)

Puisque seule c n'apparait pas dans le 1° monome on développe celui-ci sous la forme  a./b.(c + /c). De mème il ne manque que b  dans le dernier monome. Nous obtenons des monomes fondamentaux en écrivant  a./c.(b+/b)  et en développant. Soit :

    Y =   a./b.(c  +  /c)  + /a./b.c  +  a./c.(b  +  /b)

 Le développement amène la forme canonique disjonctive

    Y = a./b.c  +  a./b./c  +  /a./b.c  +  a.b./c  +  a./b./c

    On élimine les éventuels monomes qui se  répètent. Ce sont des inclusions de première espèce.
 

Ecriture d'une fonction sous sa forme canonique conjonctive.

On utilise cette fois la relation     x . /x  =  0.

Pour toute expression booléenne  E  on pourra toujours écrire:

       E = E  +  x. /x

Par distributivité de l'addition par rapport à la multiplication il vient :

       E  =  (E + x) . (E + /x)

exemple :
Soit:    Y = (a + c + /d) . (/a + /b +c + d)

Il manque dans le premier terme la variable  b  pour en faire un maxterme. Ajoutons '0' à ce terme, soit:

    Y = (a + c + /d + b./b) . (/a + /b + c+ d)

Et par distributivité de l'addition par rapport à la multiplication:

    Y = (a + b + c+ /d) . (a + /b + c + /d) . (/a + /b + c + d)

Cette expression est une forme canonique conjonctive.
 



Monome COMPATIBLE

 Pour une fonction  F, un monome est dit  compatible  si on vérifie qu'en le rajoutant à  l'expression de  F on ne modifie pas  F.

Exemple:

si:    F  =    a./b  + b.c

 On peut écrire aussi:

 F  =    a/b  +  bc  +  ac                 (ac est un monome compatible)

Le rajout du monome  ac  ne modifie pas  F  puisque:

                   a./b + b.c   =   a./b + b.c + a.c

la table de Karnaugh de F, ou sa table de vérité, ne se trouvent pas modifiées par le rajout du monome  ac  à la fonction.
 

Inclusion de première espèce

Un monome qui est divisé par un autre monome dans la mème expression est un monome redondant pour cette expression. On peut le supprimer. On dit aussi de ce monome qu'il est inclus dans le monome qui le divise. C'est une inclusion de première espèce. Dans une table de Karnaugh ce serait une intersection logique entièrementrecouverte par le domaine du monome diviseur.

Y  =   /abc/de  +  b/c  + c/de      =    b/c  +  c/de

Le monome  /abc/de  que l'on peut diviser par  c/de  est un monome inclus de première espèce.
 

Monome  PREMIER  (prime implicant)

Pour une fonction  F,  un monome  m  est  premier si, appartenant à  F  ou au moins compatible, il n'est pas possible de diminuer l'ordre de  m  sans entrainer la modification de  F  (table de vérité).

Exemple :

 F  =   a./b  +  b.c     (1)

bc  est un monome premier, a/b aussi. le monome a/bc qui est un monome compatible pour F car on peut aussi écrire:

 F  =   a./b  +   b.c   +   a./b.c    (2)

n'est pas premier. on peut encore retirer une variable à ce monome sans modifier  F  (ici ce serait la variable  b). Par contre,  ac  qui est aussi un monome compatible pour  F  est premier.

 F  = a/b  +  bc  +  ac     (3)
 



BASE :

 On appelle BASE  toute fonction  F  dont tous les monomes sans exception sont  premiers. La fonction ( 2 ) n'est pas une base, la fonction (3 ) en est une ainsi que (1).
 

BASE COMPLETE :

Pour une fonction  F donnée, une base est dite  COMPLETE si elle est constituée de l'ensemble de tous les monomes premiers possibles. Cette écriture identifie parfaitement la fonction.La fonction (3) est une base complète  (présence de tous les monomes premiers  de  F).
 

BASE  IRREDONDANTE

Pour une fonction F donnée, une base qui ne contient que le minimum de monomes premiers nécessaires à la couverture de cette fonction est une base irredondante. C'est une forme minimale d'écriture de la fonction  (minimum de termes et minimum de variables dans ces termes). Les travaux de simplification de fonctions booléennes consistent souvent à amener l'écriture de bases irredondantes.
 

Variable  BIFORME

Considérant deux monomes  mi, mj  dans  F, une variable  x  est biforme pour  ces  deux monomes si elle apparait VRAIE  dans l'un et  COMPLEMENTEE  dans l'autre.

Ex :

 Pour les couples de monomes ci-après , la variable c  est  biforme :

 ( a/b/cd/e  ,  bc/g  )
 ( cd/e  ,  a/c/efg/i )

 Cette notion s'étend évidemment à l'ensemble des monomes d'une  fonction.
 

RESIDU

Pour un monome donné  m, le résidu par rapport à une variable  x  de  m   est ce qui reste du monome après élimination de  x  dans ce monome.
 


CONSENSUS

 Lorsque deux monomes  mi  et  mj  contiennent au moins une variable biforme  x, le CONSENSUS  de  ces deux monomes par rapport  à  x,  noté C(x) , s'obtient  en  écrivant  l'intersection logique des résidus par rapport à  x.

Ex :
 C(e)       [ a/bcd/e/f  , ce/h ]      =    a/bcd/f/h
 C(b)       [ ab/g   ,  a/bcd/e ]      =    acd/e/g

Consensus de valeur nulle

Si dans mi et mj il y a plus d'une variable biforme, le consensus par rapport à l'une de ces variables existe mais vaut  "0".

Ex :          mi = a/bc/d ,       mj =  b/ce/fg

      C(b)     = (ac/d) . (/ce/fg)  = 0

Le consensus par rapport à  c  vaut aussi  0.
 

Inclusion de DEUXIEME ESPECE

Dans une fonction  F, le consensus de deux monomes  mi et  mj  est un  monome compatible pour F. Il est inclus partiellement dans l'un et l'autre de ces deux monomes (réunion logique).

Preuve:

considérons dans  F  les monomes  m1 et m2 de formes respectives  x . @  et  /x . $  pour lesquelles x est donc biforme. @ et $ sont deux produits logiques de longueurs quelconques. Ecrivons la réunion logique:

       z =     m1 +  m2     =      x . @   +   /x . $

ajoutons à  z  le consensus des deux monomes, qui est un monome compatible, soit  @ . $

       z =     x . @   +   /x . $   +   @ . $

multiplions  @ . $   par  '1', soit   (x  +  /x)

       z =     x . @   +  /x . $   +   @ . $ . (x  +  /x)

développons :
       z =     x . @   +   /x . $   +   x . @ . $   +   /x . @ . $

simplifions par inclusions de première espèce ou inclusions directes:

       z =     x . @   +   /x . $

Le rajout du consensus n'a pas modifié  z. Ce consensus est en fait un monome inclus dans la somme  mi + mj. Il est dit monome inclus de  deuxième espèce.
 

Cas particulier de simplification par consensus:

Simplification par adjacence.

La simplification par adjacence n'est qu'un cas particulier de simplification par consensus. Alors que les monomes considérés jusqu'ici étaient d'ordre quelconque, on considère ici pour écriture d'un consensus deux monomes du mème ordre et fonctions des mèmes variables dont une seule est biforme.
 

exemple:    F  =  /a.b.c  +  b.c./d./e  +  b.c.d./e       (Consensus par rapport à d des monomes  b.c./d./e et b.c.d./e)
rajout du consensus  bc/e:

                   F  =  /abc + bc/d/e +  bcd/e +  bc/e

Disparition des deux monomes bc/d/e et bcd/e par inclusions de première espèce dans bc/e.  soit:

                   F  =  /abc + bc/e
 


Simplifications d'une expression booléenne

Simplifier une somme de monomes, c'est aboutir à une écriture telle qu'aucun des monomes n'est de trop et  qu'aucune des variables dans chacun de ces monomes n'est de trop (monomes premiers). On dit disposer alors d'une  base irredondante de l'expression booléenne.

On peut simplifier une fonction booléenne de deux façons:

- Recherche directe d'une base irredondante (voie algébrique intuitive).
- Recherche systématique.

1) recherche directe.

On commence par traquer les inclusions de première espèce (trivial).
On rajoute les consensus possibles en examinant chaque fois si cela n'entraine pas de simplifications par inclusions de première espèce. En réitérant ces essais on parvient à l'écriture d'une des bases irredondantes.

2) Recherche systématique.

Consiste à travailler en deux temps:

    1) Ecriture de la base complète.
    2) Ecritures des bases irredondantes par exploitation d'un  tableau de recouvrement.
 

1)  Base complète

On amène la base complète d'une fonction booléenne en rajoutant à l'expression, de façon systématique, tous les consensus possibles. On élimine, à chaque tour de consensus, toutes les inclusions de première espèce. La somme de monomes qui reste constitue la liste exhaustive de tous les monomes premiers de la fonction.

2)  Tableau de recouvrement

Disposant de la base complète d'une fonction F, amenée par autant de tours de consensus que nécessaires, on peut procéder à la sélection d'un minimum de monomes (forcément premiers) qui suffisent à recouvrir la fonction  F à l'aide d'un tableau de recouvrement.

Exemple:

F  = /a/b/c/d  + /ab/c  + a/b/c  + a/cd  + bd  + /b/c/d  + /ab/c  + a/b/c  + a/cd  +  /a/c/d

Base complète:

F  =  b/c/d  + /ab/c  + a/b/c  + a/cd  + bd  + /a/c/d

qui s'écrit aussi par profils binaires:

         -100  +  010-  +  100-  +  1-01  +  -1-1  +  0-00
 

Tableau de recouvrement

On dresse une table à deux entrées. En  x, les profils binaires de la base complète. En y les profils des monomes fondamentaux.
 

             b  a  s  e         c  o  m  p  l  e  t  e
  -100   010-   100-   1-01   -1-1   0-00
 0100      x       x             x
 1100    <x>          
 0101        x          x  
 1000        <x>      
 1001           x      x    
 1101            x      x  
 0111            <x>  
 1111            <x>  
 0000               <x>
<x>  :  repère les monomes essentiels

Dans une table de recouvrement un monome est essentiel si il est le seul à recouvrir certains monomes fondamentaux.  Ici les  <x>  gras

Monomes essentiels:      -100,  100-,    -1-1,    0-00

soit:                                 b/c/d,  a/b/c,   bd,     /a/c/d

Ces monomes feront forcément partie de toute écriture simplifiée de  F.

F1  =     b/c/d  + a/b/c +  bd +  /a/c/d  +  ........      ;
F2  =     b/c/d  + a/b/c +  bd +  /a/c/d  +  ........      ;
F3  =    ............                                                     ;

Pour chaque forme simplifiée ou irredondante, on rajoute les monomes premiers qui servent à terminer le recouvrement de  F.   (/ab/c,    a/cd)


Le concept P.L.A
 
 
cd \ ab   00   01   11   10
  00   X   0   1   1
  01   1   0   1   1
  11   1   1   0   0
  10   X   1   1   X



Exercices:

A)  Simplifier par  tours de consensus:

Y1  =  a + /a.b + /a/b.c + /a/b/c.d

Y2  =  a + /a.b  + /a/b/c/d.e  +  /a/b/c/d/e.f

Y3  =  a + /a/b.c  + /a/b/c/d.e  + /a/b/c/d/e/f.g

Y4  =  ab + /a.b.c + /a/b.c.e + /a/b/c.d.e  + /a/b/c/d.e.f  + /a/b/c/d/e.f.g  + /a/b/c/d/e/f.h

Y5  =  ac + /a.b.d  + /a/b.c.e  + /a/b/c.d.f  + /a/b/c/d.e.g  + /a/b/c/d/e.f.h  +  /a/b/c/d/e/f.i

NB:  Le < . > d'intersection logique est rappelé uniquement la ou il est supposé apporter à la clarté de l'écriture.

Considérons Y4:

Les tours de consensus peuvent se faire en balayant les variables les unes après les autres ou par considérations des monomes tour à tour deux à deux. Choisissons cette dernière approche:
Soit donc le couple ab + /abc. Un consensus immédiat s'écrit bc. On peut donc écrire en lieu et place de ce couple ab + /abc + bc. bc absorbe /abc, on écrira donc ab +bc. La nouvelle écriture de Y4 est donc:

Y4  =  ab + b.c + /a/b.c.e + /a/b/c.d.e  + /a/b/c/d.e.f  + /a/b/c/d/e.f.g  + /a/b/c/d/e/f.h

Restons sur le monome ab et intéressons nous maintenant au couple ab + /a/b.c.e . Deux variables biformes, il n'y a pas de consensus, ou si on tentait d'écrire un consensus par rapport à b par exemple, ce consensus vaudrait 0, puisqu'il s'écrirait a./a.c.e. Cela veut dire que dans le cas d'écriture d'un programme de simplification automatique, on peut décider de l'écriture systèmatique de tous les consensus possibles sachant que chaque écriture d'un monome sera suivi de la vérification que ce monome n'est pas nul.
Nous ferons la mème observation pour tous les autres couples creés à partir de ce monome ab. Il convient de passer au monome suivant soit bc. Le couple bc + /a/b.c.e amène le consensus /a.c.e. Y s'écrit maintenant:

Y4  =  ab + b.c + /a.c.e + /a/b/c.d.e  + /a/b/c/d.e.f  + /a/b/c/d/e.f.g  + /a/b/c/d/e/f.h

De proche en proche, la susccession de tours de consensus amènera l'écriture définitive:

Y4  =  ab + b.c + /a.c.e + /a/b/c.d.e  + /a/b/c/d.e.f  + /a/b/c/d/e.f.g  + /a/b/c/d/e/f.h