# Électronique numérique : logique/Tables de vérité généralisées (SI-ALORS)

* 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

### Caractéristiques des tables de vérité

Reprenons une table de vérité simple :

#### Table de vérité

    EntréesSorties abyz 0001 0110 1011 1110
Quelles sont ses caractéristiques ?
* elle a deux parties, une à gauche (Entrées) que l'on appellera SI, une à droite (Sorties) que l'on appellera ALORS,
* la partie SI décrit toutes les possibilités sur les entrées : c'est toujours le cas, ainsi si vous comptez n entrées, vous savez automatiquement que votre table de vérité aura 2**n (deux puissance n) lignes.
* la partie ALORS ne contient que des 1 et des 0.
* Définition
* La partie SI d'une table de vérité est la partie qui gère les entrées. Son remplissage se fait de manière systématique en code binaire. La partie ALORS gère les sorties. Cette appellation est liée au fait qu'une ligne de table de vérité peut se lire en langage courant : SI les entrées sont à XX ALORS les sorties sont à YY. N'est-ce pas ce que vous feriez si vous aviez une table de vérité à transmettre par téléphone ?
Exemple : si nous reprenons l'exemple de notre table de vérité de départ, on peut la réécrire avec ces définitions :

#### Table de vérité

    SIALORS EntréesSorties abyz 0001 0110 1011 1110
Pour le moment, la partie ALORS de nos tables de vérité n'a toujours contenu que des 1 et des 0. C'est ce que l'on va changer maintenant.

### Tables de vérité généralisées

Commençons par définir ce nouveau concept.

#### Qu'est-ce qu'une table de vérité généralisée ?

* Définition
* On appelle table de vérité généralisée ou table SI-ALORS toute table de vérité pour laquelle on autorise dans la partie ALORS des 0 des 1 et des équations logiques sur les entrées. Les entrées apparaissant dans la partie SI seront appelées entrées de programmation ou entrées de sélection. Elles seront dessinées en général du bas vers le haut (on utilise ici pour simplifier la notation américaine). Les autres entrées (entrées normales) apparaîtront seulement dans des équations dans la partie ALORS.
Un exemple sera plus parlant.
Exemple :
Cette figure montre qu'une entrée de sélection se retrouve dans la partie SI de la table de vérité généralisée (correspondance en rouge dans la figure). Par contre une entrée normale peut se retrouver dans une équation de la partie ALORS de la table (comme le montre la correspondance en vert dans la figure).
On ne peut éviter de se poser la question : OK, j'ai une table de vérité généralisée, mais comment j'obtiens l'équation algébrique correspondante ?

#### Recherche de l'équation algébrique correspondante

En fait, quel que soit le type de table de vérité, on procède de la même manière :
Pour trouver une équation à partir d'une table SI-ALORS on fait comme avec une table de vérité : on multiplie la partie alors par la partie SI pour chacune des lignes.
Ici, par exemple, on obtient facilement :
$s=0.{\overline {e1}}.{\overline {e0}}+1.{\overline {e1}}.e0+e2.e1.{\overline {e0}}+(e2+e3).e1.e0$
soit :
$s={\overline {e1}}.e0+e2.e1.{\overline {e0}}+e2.e1.e0+e3.e1.e0$
Remarque : une table de vérité pour ce circuit contiendrait 16 lignes. C'est un des grands intérêts de la table SI-ALORS : de donner une information identique à une table de vérité mais de manière plus compacte (avec moins de ligne). L'autre intérêt est de permettre de voir les fonctions, même simples, avec un autre point de vue, comme le montre l'exercice 1 ci-dessous.

#### Exercice 1

Faire une table si alors (ou table de vérité généralisée) du ou exclusif.
La table de vérité du OU exclusif peut être trouvée ici avec comme entrées A et B. Si la sortie est nommée S, la table si alors s'en déduit immédiatement :
* si A = 0 alors S = B
* si A = 1 alors S = /B
Cela nous permet de regarder maintenant le OU exclusif comme un inverseur/non inverseur programmable.

#### Exercice 2 (Le multiplexeur)

C'est un interrupteur programmable qui est décrit ici : Multiplexeur. MUX sera parfois utilisé en lieu et place de multiplexeur. Pour la suite de l'exercice on s'intéressera au multiplexeur 4/1 (qui n'existe pas dans la série 7400) Ses entrées (normales) sont appelées e0, e1, e2 et e3 tandis que les entrées de sélection sont c0 et c1 (c0 poids faible). La sortie est s.
* Combien d'entrées et donc combien de lignes comporterait une table de vérité normale décrivant ce composant ?
* Établir la table SI-ALORS de cette fonction. (Combien de lignes ?)
* En déduire l'équation logique de ce multiplexeur.
* Le multiplexeur 4/1, comme son nom l'indique comporte 4 entrées (normales). Pour choisir une parmi ces 4 entrée il faut deux entrées supplémentaires (de sélection). Il faudrait donc une table de vérité de $2^{6}=64$ lignes pour décrire ce composant.
* la table de vérité généralisée se fera sur les deux entrées de sélection, elle comportera donc $2^{2}=4$ lignes.
* L'équation est naturellement : $s=e0.{\overline {c1}}.{\overline {c0}}+e1.{\overline {c1}}.c0+e2.c1.{\overline {c0}}+e3.c1.c0$

### Retour sur VHDL

Il est important de garder en tête le fait qu'une table de vérité ou une table généralisée doit être réalisée avec une structure with-select-when (même s'il reste possible de faire autrement). Voici un exemple avec la table de vérité du tout début de ce TD.

#### Table de vérité et sa programmation VHDL

    EntréesSortiesVHDL abyz-- exemple de table de vérité ENTITY ex IS PORT ( -- a, b e : IN bit_vector(1 downto 0); -- y, z s : OUT bit_vector(1 downto 0)); END ex; ARCHITECTURE aex OF ex IS BEGIN WITH e SELECT s <= "01" WHEN "00", "10" WHEN "01", "11" WHEN "10", "10" WHEN OTHERS; END aex; 0001 0110 1011 1110
Soit la table de vérité généralisée de s donnée en exemple précédemment et rappelée maintenant

#### Table de vérité généralisée

    SIALORS EntréesSorties e1e0s 000 011 10e2 11e2+e3
Elle peut s'écrire en VHDL :

#### Exercice 3

Écrire un programme VHDL pour le multiplexeur de l'exercice 2.
On aurait pu choisir toutes les entrées en "bit_vector" :
Ce qui changerait l'architecture :

### Générateur de fonction logique combinatoire

Un multiplexeur utilisé comme ci-dessus permet de réaliser des fonctions combinatoires.
La notation $\angle$ chapeautant des lettres signifie que A est poids faible pour la figure de gauche et donc que B est poids faible pour la figure de droite. À gauche la fonction obtenue est :
$S={\bar {C}}.{\bar {B}}.{\bar {A}}+C.{\bar {B}}.A+x.{\bar {C}}.B.A+y.C.{\bar {B}}.{\bar {A}}+C.B.{\bar {A}}$

#### Exercice 4

Quelle est la fonction réalisée par le schéma de droite de la figure ci-dessus ?
$S=A.{\bar {D}}.{\bar {C}}.{\bar {B}}+{\bar {A}}.{\bar {D}}.{\bar {C}}.B+A.{\bar {D}}.C.{\bar {B}}+{\bar {A}}.{\bar {D}}.C.B+...$ (on alterne A et /A en entrée).
Il vient S = A XOR B XOR C XOR D

#### Exercice 5

Une société est composée de 4 actionnaires ayant les nombres suivants d'actions A=60, B=100, C=160 et D=180.
Nous désirons construire une machine à voter automatiquement, tenant compte dans le résultat du poids en actions de chaque personne. La machine dispose de 4 boutons poussoirs A, B, C, D et le résultat sera un voyant V qui s'allumera si la majorité pondérée appuie sur les boutons.
Chercher les équations et implanter un circuit avec un MUX 8/1, puis un MUX 4/1 et enfin un MUX 2/1.
Pour remplir la table de vérité, on calcule pour chaque ligne le nombre d'actions qui vote OUI et le nombre d'action qui vote non à partir du nombre d'actions de chaque actionnaire. S'il y a plus d'actions qui votent oui la sortie est 1, sinon la sortie est 0. Il vient V = DC + CB + DB (fonction de trois variables seulement). Le vote de A ne sert à rien ! Si vous êtes responsable de la conception de la machine à voter mettez-lui un bouton poussoir quand même, même s'il ne sert à rien.
* La synthèse avec un MUX 8/1 se fait en reliant D,C,B aux 3 entrées de sélection du multiplexeur et en mettant des 1 et des 0. voir figure de gauche ci-dessous.
* La synthèse avec un MUX 4/1 se fait en reliant C,B aux 2 entrées de sélection et en cherchant les fonctions de D à réaliser sur les entrées.
* La synthèse avec un MUX 2/1 se fait en reliant B à l'entrée de sélection et en cherchant les fonctions de C et D à réaliser sur les deux entrées. On a ajouté les couleurs vertes et bleue pour trouver les deux fonctions dans le tableau de Karnaugh : la porte verte fait la partie verte du tableau de Karnaugh et la porte bleue la partie bleue.
ATTENTION : le tableau de Karnaugh ci-dessus n'est pas le tableau de Karnaugh original puisqu'il contenait 4 variables. Celui-ci est obtenu à partir de l'équation, et il suffit pour faire toutes les synthèses en MUX.
* 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