# Électronique numérique : logique/Assemblage de fonctions

* 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
Comment trouver la fonction qui résulte de l'assemblage d'autres fonctions connues ? C'est la question à laquelle on va tenter de répondre dans ce chapitre.

### Assemblage des fonctions élémentaires

À partir des fonctions logiques élémentaires présentées au TD 1 et encore ici, il est possible d'en construire de plus complexes, ayant par exemple 3 variables d'entrées... par association. Une question vient alors à l'esprit : comment trouver la table de vérité correspondante ?

#### Table de vérité d'un assemblage de fonctions élémentaires (ou pas)

Prenons un exemple simple pour commencer. Soit le schéma ci-dessous, comment trouver sa table de vérité ?
Comme indiqué dans le schéma ci-dessus, il suffit de nommer tous les fils intermédiaires, puis de calculer leurs valeurs en fonction des entrées, c'est à dire à dire, pour chaque ligne de la table de vérité. Par exemple, en calculant d'abord d (sur la figure ci-dessus), puis y, on trouve la table de vérité complète :

##### Table de vérité du schéma ci-dessus

    EntréesSorties cbady 00000 00100 01000 01111 10001 10101 11001 11111
Remarques :
* seule la partie gauche (ou partie SI) de la table de vérité est conforme aux règles du chapitre précédent. Dans la partie sortie (ou partie ALORS), on trouve ici la variable d qui n'est pas une sortie ! Ne vous inquiétez pas trop de ce fait.
* d peut être (et doit être) calculé avant y. Pour tous les schémas ce principe pourra être appliqué.
Principe : Pour tous les schémas ce principe devra être appliqué : nommer les fils intermédiaires et les calculer au fur et à mesure que les calculs peuvent être réalisés. Avec l'avancement de vos calculs, vous vous rapprocherez inexorablement du calcul de la sortie, c'est à dire de l'objectif final.

#### Équation logique d'un assemblage à partir de la table de vérité

À partir d'un schéma il est donc très simple de trouver une table de vérité puis une équation algébrique (on a appris à le faire dans le chapitre précédent.
La table de vérité donne quant à elle $y={\bar {c}}.b.a+c.{\bar {b}}.{\bar {a}}+c.{\bar {b}}.a+c.b.{\bar {a}}+c.b.a$

#### Équation logique d'un assemblage à partir du schéma

La lecture d'un schéma peut donner directement l'équation algébrique. Il faudra alors connaître l'expression algébrique de chacun des blocs utilisés dans le schéma.
Principe : Pour tous les schémas, si vous connaissez les expressions algébriques de chacun des blocs vous les utilisez pour le calcul des fils intermédiaires. En remplaçant au fur et à mesure que les fils intermédiaires peuvent être calculés, vous vous rapprocherez inexorablement du calcul de la sortie, c'est à dire de l'objectif final pour obtenir l'équation finale (qui peut être complexe avec beaucoup de parenthèses).
Cette équation possédera plusieurs parenthèses si elle est établie directement à partir du schéma, dans le cas général. On peut supprimer ces parenthèses en utilisant la distributivité (elle sera expliquée plus tard). Un moyen de ne pas avoir de parenthèses est d'établir les équations à partir de la table de vérité.
Exemple : dans l'exemple ci-dessus, puisqu'on a : d = a.b, il vient y = a.b + c, solution trouvée à partir du schéma qui est exceptionnellement simple.
Cet exemple nous montre que "y" peut être écrit sous deux formes différentes : une simple à partir du schéma et une plus complexe à partir de la table de vérité. Un schéma ne donnera pas toujours une équation simple, mais la table de vérité par contre donnera toujours une forme disjonctive canonique (pas simplifiée du tout).
* Définition
* On appelle forme disjonctive toute expression composée de termes reliés entre eux par des OU (appelé aussi parfois somme car noté +). Chaque terme sera composé de produits. Cette forme disjonctive sera canonique si elle n'est absolument pas simplifiée.
Exemple : $y={\bar {c}}.b.a+c.{\bar {b}}.{\bar {a}}+c.{\bar {b}}.a+c.b.{\bar {a}}+c.b.a$ est une forme disjonctive. $y={\bar {c}}.b+c.{\bar {b}}.{\bar {a}}+c.a$ en est une autre.
Il est facile de montrer que plusieurs schémas différents peuvent donner une même table de vérité. On peut donc avoir plusieurs équations logiques pour une même fonction et plusieurs schémas pour la réaliser. Le but de la logique est en général de trier un peu ces équations et de trouver quelles sont celles qui ont un intérêt pour des réalisations simples par des circuits.

#### Exercice 1

Vérifier si les deux circuits combinatoires ci-dessous ont la même table de vérité, écrire ensuite la ou les équations booléennes correspondantes.
Nous appelons d et e les fils intermédiaire du schéma de gauche et f l'unique fil intermédiaire du schéma de droite. La sortie du schéma de gauche est renommée yG et celle de droite yD.
La table de vérité ci-dessous doit entrer dans la liste déroulante ci-dessus mais je ne sais pas faire pour le moment !!!

##### Table de vérité du schéma ci-dessus

    EntréesFils et sorties cbadefyGyD 00001111 00101111 01001111 01111011 10000100 10100100 11000100 11110011
On constate tout simplement qu'il s'agit de la même fonction logique car yG=yD quelles que soient les valeurs des entrées.

### Table de vérité des expressions algébriques

Si vous disposez d'une expression algébrique, il est possible d'en construire sa table de vérité : pour chacune des lignes, vous remplacez les variables par leurs valeurs pour trouver la valeur de la fonction. Pour vous exercer, regardez ces exemples.

### Retour sur le langage VHDL
#### Programme VHDL et équations

Un programme VHDL comporte une partie entité et une partie architecture.
Toute équation logique peut être transcrite en VHDL par ce principe. Les opérateurs logiques VHDL sont AND (ET), OR (OU), XOR (OU Exclusif), NOT (NON) sans aucune priorité. Le programme VHDL correspondant au schéma du début de ce chapitre pourra donc s'écrire :

#### Programmation VHDL structurelle

Le style de programmation structurel consiste à décrire un schéma en VHDL. On appelle cela aussi décrire une NETLIST. Une NETLIST est une liste des équipotentielles d'un schéma électronique, ou ce qui revient au même une liste des connexions entre circuits. Tous les outils de CAO proposant une saisie de schéma sont capables de sortir une NETLIST. Certains outils sont capables de sortir une NETLIST en VHDL.
Pour écrire un programme VHDL qui décrit un schéma, on commence par décrire les portes élémentaires. On suppose que les portes élémentaires du TD1 s'appellent oui, inverseur, et, et_non, ou, ou_non, ouex. À partir de ces fonctions élémentaires on peut décrire un schéma (description structurelle) de la façon suivante :
* -- Commentaire VHDL
* ENTITY Fct IS
* PORT(e0,e1,e2 : IN BIT;
* s : OUT BIT);
* END Fct;
* ARCHITECTURE truc OF Fct IS
* SIGNAL e0e1,e2bar : BIT;
* BEGIN
* i1:et PORT MAP(e0=>e0,e1=>e1,s=>e0e1);
* i2:inverseur PORT MAP(e=>e2,s=>e2bar);
* i3:ou PORT MAP(e0=>e0e1,e1=>e2bar,s=>s);
* END truc;
Remarque : l'écriture du programme précédent n'est pas tout à fait complète, il manque le "package" mais nous n'évoquons pas ce problème pour le moment (voir le WIKIBOOK Conception et VHDL, particulièrement la section assembler des composants pour un complément).
Le signe "=>" dans les "PORT MAP" doit être lu : "est relié à".
Passons maintenant aux tables de Karnaugh.

### Les tables de Karnaugh

Une représentation plus synthétique existe pour les fonctions à plusieurs variables, c'est la table de Karnaugh.
On rappelle leur structure maintenant pour deux, trois et quatre variables (voir ci-contre).
Remarquez la similitude pour le cas à deux variables avec la table de multiplication présentée dans algèbre de Boole.

#### Exercice 2

Trouver les tables de vérités et les tableaux de Karnaugh pour S1 et S2 donnés par les schémas ci-dessous. Écrire les programmes VHDL correspondants.

##### Solution de l'exercice 2

En remarquant que les calcul intermédiaires sont identiques pour les deux schémas, il vient si l'on nomme ces fils "d" et "e" :

###### Table de vérité du schéma ci-dessus

    EntréesFils et sorties zyxdeS1S2 0001100 0011100 0101100 0110110 1001100 1011100 1101011 1110010
Le tableau de Karnaugh de S1 s'écrit :
Table de la loi S1 :
| z\yx | 00 | 01 | 11 | 10 |
| 0 | 0 | 0 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 |
qui donne comme résultat $S_{1}={\bar {z}}.y.x+z.y.{\bar {x}}+z.y.x$ (À ce stade on ne vous demande pas de simplifier).
Pour S2, inutile de faire un tableau de Karnaugh : $S_{2}=z.y.{\bar {x}}$

#### Exercice 3

'Aucun intérêt : À CHANGER'. Pour une des relations de De Morgan du TD précédent, faire deux schémas (à partir des sept fonctions élémentaires) et écrire les programmes VHDL (descriptions structurelles) correspondants.
* 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 :