# Électronique numérique : logique/Fonctions logiques élémentaires

* Fonctions logiques élémentaires
* Assemblage de fonctions
* Simplification et implantation de formes disjonctives
* Simplification et implantation de formes conjonctives
* Compléments sur la simplification
* Sorties multiples, addition, codes
* Tables de vérité généralisées (SI-ALORS)
* Ressources sur Wikipédia
Dans ce chapitre, nous allons définir la notion de fonction logique (ou fonction booléenne) ainsi que la notion de table de vérité. Quelques définitions nous seront utiles pour commencer.

### Définitions

* Définition
* On appelle valeur logique ou valeur booléenne ou encore valeur binaire toute valeur notée par deux symboles. On choisit souvent les couples de valeurs suivants : {0,1}, {vrai, faux}, {true, false}. On utilisera essentiellement {0,1} dans la suite de ce livre.
Exemple : un interrupteur peut être ouvert ou fermé. Son état peut donc être qualifié de booléen.
Cette définition nous permet de définir la notion de variable booléenne.
* Définition
* Une variable booléenne (ou variable logique) est une grandeur représentée par un nom et pouvant prendre des valeurs booléennes.
Il n'y a aucune règle sur le choix des noms des variables booléennes.
Exemple : donnez un nom à un interrupteur et il devient une variable booléenne. Notez d'ailleurs que l'on utilisera énormément les interrupteurs lors du déroulement des séances de travaux pratiques.
Il est grand temps de définir maintenant l'objet de nos études, les fonctions logiques.
* Définition
* Une fonction logique est une fonction d'une ou plusieurs variables booléennes. Les variables sur lesquelles porte la fonction seront appelées variables d'entrées (ou simplement entrées). L'affectation d'une fonction permet quant à elle de définir une variable de sortie.
Par exemple, dans l'écriture y=F(a,b), y est une sortie et a et b sont des entrées. On pourra ainsi représenter une fonction par un schéma.
Exemple : reprenons l'interrupteur qui nous a servi de guide et ajoutons lui une ampoule. L'état de l'ampoule peut aussi être booléen allumé ou éteint. L'entrée est donc l'interrupteur et la sortie la lampe. Vous avez ainsi réalisé une fonction logique entre un interrupteur (entrée) et une ampoule (sortie).
Exemple 2 : si nous voulons réaliser une fonction logique plus complexe vous pouvez chercher dans vos maisons deux interrupteurs montés en va et vient. Vous avez deux interrupteurs donc quatre états possibles et une lampe qui en possède toujours deux (états).
Une fonction sera représentée par un dessin ou en langage de description matérielle VHDL comme ci-dessous :
* -- Commentaire VHDL
* ENTITY Fct IS
* PORT(a,b : IN BIT;
* y : OUT BIT);
* END Fct;
Cette fonction comporte deux entrées a et b et une sortie y. Cette distinction entre entrées et sorties est bien visible dans le schéma ci-dessus, mais aussi dans l'entité VHDL avec les mots clés "IN" et "OUT".
Remarque : La partie entité d'un programme VHDL ne correspond pas à un programme VHDL complet. Il manque la partie architecture qui sera présentée plus loin et complétée dans un autre livre.

### Représentation

Comment savoir ce que fait une fonction booléenne ? Tout simplement en énumérant toutes les possibilités sur ses entrées et en regardant la sortie correspondante : c'est ce que l'on appelle une table de vérité si l'on représente cette information dans un tableau. Contrairement aux fonctions rencontrées en analyse, fonctions sur des nombres réels, on va s'intéresser à des fonctions logiques sur une, deux, trois (ou plus) variables.
Avec cette table on connaît parfaitement la fonction F. Voici un exemple.
Exemple :

#### Table de vérité

| Entrées | Entrées | Sortie |
| a | b | y |
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Cette table de vérité comporte quatre lignes (après les entêtes) car elle spécifie une fonction de deux variables. Il en sera toujours ainsi pour toutes les fonctions de deux variables. Une autre manière de dire les choses, c'est que la partie entrée (ou partie gauche ou encore partie SI) est complètement établie à partir du moment où l'on connaît le nombre de variables de la fonction (le nombre d'entrées pour nous). Pour trois entrées, par exemple une table de vérité composée, il y aura 8 lignes.
Chaque fonction booléenne peut être écrite sous forme algébrique à l'aide de trois opérateurs, le complément (noté / ou avec une barre au-dessus : ${\bar {q}}$), le ET (noté .) et le OU (noté +).
* Définition
* On appelle forme algébrique ou expression algébrique toute écriture utilisant les opérateurs complément, OU et ET précédemment cités.
Exemple : ${\bar {a}}.b+((a+{\bar {b}}).(a+b))$ est une expression algébrique. Pour le moment vous ne savez pas très bien ce qu'elle représente mais c'est normal.
Remarque : Il n'est pas inutile, à ce point, de connaître la notation mathématique des opérateurs logiques (notation utilisée dans certains articles WIKI) :
* OU (noté $A\lor B$) tandis que notre notation sera A + B
* ET (noté $A\land B$) tandis que notre notation sera A . B ou même AB
* complément logique (noté $\neg {A}$) tandis que notre notation sera ${\bar {A}}$.
Revenons à notre écriture de fonction sous forme algébrique à partir d'une table de vérité.
Le principe est le suivant : on cherche les 1 dans la partie sortie de la table de vérité et à chaque 1 trouvé correspond un terme réalisé à l'aide de la partie entrée de cette même table. Chacun des termes est alors séparé par un OU (+). Les termes sont des ET entre les variables (complémentées si elles sont à 0 et non complémentées si elles sont à 1). Dans l'exemple ci-dessus, il y a un seul 1 dans la partie sortie, donc un seul terme formé par a . b car il y a un 1 pour chacune des variables (d'entrée) donc pas de complément logique.
Prenons un autre exemple.
Exemple :

#### Autre table de vérité

| Entrées | Entrées | Sortie |
| a | b | y |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
C'est la table de vérité d'une fonction qui s'appelle OU inclusif ou tout simplement OU. L'équation correspondante est $y={\bar {a}}.b+a.{\bar {b}}+a.b$
Essayez de retrouver pourquoi : il est très important de savoir partir d'une table de vérité pour obtenir une équation logique.
Principe : Le signe "=" n'est pas commutatif contrairement aux mathématiques. C'est d'ailleurs pour cela qu'il est écrit "<=" en VHDL. Ce qui est à gauche du signe "=" est toujours une sortie tandis que ce qui est à droite est toujours une fonction sur les entrées. Pour l'équation ci-dessus y est une sortie tandis que a et b sont des entrées. Il n'y aura aucune dérogation à ce principe dans la suite de ce livre.

### Fonctions élémentaires

Il est inutile de poursuivre la lecture de ce livre sans passer de temps sur les fonctions logiques élémentaires. Vous devez connaître au moins les tables de vérités de ces fonctions élémentaires.
Vous trouverez ailleurs des informations sur l'Algèbre de Boole qui ne sont pas nécessaires pour une première lecture.
Remarque : dans la première référence ci-dessus certaines fonctions sont appelées NON-OU et NON-ET alors que nous avons tendance à les appeler OU-NON et ET-NON. Il est bon de garder à l'esprit les deux appellations avec en plus l'appellation anglaise correspondante : NOR et NAND.

### Exercice 1

On appellera dans toute la suite de ce cours fonction identité le complément de la fonction ou exclusif. On rappelle la table de vérité du ou exclusif :

#### Table de vérité du OU EXCLUSIF

    EntréesSortie aby 000 011 101 110
La fonction identité est appelée ainsi car elle vaut 1 dès que les entrées sont identiques. Elle est parfois aussi appelée équivalence et notée EQV.
* Établir la table de vérité de la fonction identité.
* Établir les équations algébriques du OU EXCLUSIF et de la fonction identité.

#### Solution de l'exercice 1
##### Table de vérité de la fonction IDENTITE

    EntréesSortie aby 001 010 100 111
L'équation algébrique du OU EXCLUSIF est $y_{1}={\bar {a}}.b+a.{\bar {b}}$
L'équation algébrique de la fonction IDENTITE est $y_{2}={\bar {a}}.{\bar {b}}+a.b$

### Retour sur les équations algébriques

Nous avons vu comment partir d'une table de vérité et obtenir une équation algébrique en écrivant un terme d'un ET par 1 trouvé dans la table de vérité. Une des conséquences de cette façon de procéder est que chaque table de vérité ne comportant qu'un seul 1 pourra être écrite comme un ET. La table de vérité ci-dessous, par exemple :

#### Table de vérité d'un exemple avec un seul un en sortie

    EntréesSortie aby 000 010 101 110
se transforme facilement en $y=a.{\bar {b}}$.
Comme la table de vérité d'un OU logique ne comporte qu'un seul zéro, on peut se demander s'il n'est pas possible de généraliser.
Toute table de vérité ne comportant qu'un seul zéro peut être écrite sous forme de OU. Ce n'est pas forcément aussi simple que dans le cas du ET, mais on y arrive facilement quand même. En remarquant que le zéro d'un OU simple est en face des deux zéros on peut se dire qu'il faut mettre les deux entrées à zéro et qu'ainsi une variable qui est à un se complémente.
Un exemple sera plus parlant. Soit la table de vérité ne comportant qu'un seul zéro :

#### Table de vérité d'un exemple avec un seul zéro en sortie

    EntréesSortie aby 001 010 101 111
Puisque le zéro en sortie est en face de a=0, on garde a, mais puisque ce même zéro est en face de b=1, on complémente b. Ainsi, la fonction OU correspondant à cette table de vérité est : $y=a+{\bar {b}}$.
Un exercice d'application va nous permettre de mettre tout cela en place.

### Exercice 2

Compléter le tableau suivant. Pour la partie ET on cherchera des fonctions sous la forme de ET (comme /a . b par exemple). Pour la partie OU on cherchera des fonctions sous la forme de OU (comme a + /b par exemple)

#### Tableau à compléter

    EntréesET logiquesOU logiques ab 0000011110 0100101101 1001001011 1110000111 Fonction F Fonction /F équivalent d'après /F
Indication : Remplissez d'abord les deux premières lignes complètement. Puis, pour trouver l'équivalent d'après /F on procède ainsi : on part de F, on cherche la fonction qui correspond à son complément dans une autre colonne et on la complémente encore une fois. Cela permet de passer de l'écriture en ET à l'écriture en OU (et inversement) avec des règles que l'on appellera plus tard règles de De Morgan. Concrètement, on part de la première colonne du ET par exemple, son complément est la première colonne du OU donc je peux écrire que le /F du OU (deuxième complément) est la même chose que le F du ET.

#### Solution de l'exercice 2
##### Tableau complété

    EntréesET logiquesOU logiques ab 0000011110 0100101101 1001001011 1110000111 Fonction Fa.ba./b/a.b/a./b/a+/b/a+ba+/ba+b Fonction /F${\overline {a.b}}$${\overline {a.{\bar {b}}}}$${\overline {{\bar {a}}.b}}$${\overline {{\bar {a}}.{\bar {b}}}}$${\overline {{\bar {a}}+{\bar {b}}}}$${\overline {{\bar {a}}+b}}$${\overline {a+{\bar {b}}}}$${\overline {a+b}}$ équivalent d'après /F${\overline {{\bar {a}}+{\bar {b}}}}$${\overline {{\bar {a}}+b}}$${\overline {a+{\bar {b}}}}$${\overline {a+b}}$${\overline {a.b}}$${\overline {a.{\bar {b}}}}$${\overline {{\bar {a}}.b}}$${\overline {{\bar {a}}.{\bar {b}}}}$
Vous pouvez bien sûr contempler ce tableau (de solutions) et y trouver une certaine beauté artistique, même si l'auteur est inconnu. Mais il me semble plus important d'en déduire les règles de De Morgan de la manière suivante. Dans ce tableau, pour une colonne quelconque, si vous partez de l'équivalent d'après /F, vous pouvez couper la grande barre au-dessus de l'expression en changeant alors l'opérateur OU en ET et vice versa, pour obtenir F.
Pour un approfondissement, vous pouvez aussi consulter les lois de De Morgan présentées d'un point de vue plus mathématique.
Et voici avec les notations internationales les deux principales règles de De Morgan qui nous serviront par la suite :
* Fonctions logiques élémentaires
* Assemblage de fonctions
* Simplification et implantation de formes disjonctives
* Simplification et implantation de formes conjonctives
* Compléments sur la simplification
* Sorties multiples, addition, codes
* Tables de vérité généralisées (SI-ALORS)
* Ressources sur Wikipédia
Consultez également ces pages dans d’autres projets Wikimedia :