Électronique numérique : logique/Assemblage de fonctions
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
[modifier | modifier le wikicode]À 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)
[modifier | modifier le wikicode]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ées Sorties c b a d y 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 1 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1
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é
[modifier | modifier le wikicode]À 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
Équation logique d'un assemblage à partir du schéma
[modifier | modifier le wikicode]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 : est une forme disjonctive. 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
[modifier | modifier le wikicode]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ées Fils et sorties c b a d e f yG yD 0 0 0 0 1 1 1 1 0 0 1 0 1 1 1 1 0 1 0 0 1 1 1 1 0 1 1 1 1 0 1 1 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 1 0 0 0 1 0 0 1 1 1 1 0 0 1 1
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
[modifier | modifier le wikicode]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
[modifier | modifier le wikicode]Programme VHDL et équations
[modifier | modifier le wikicode]Un programme VHDL comporte une partie entité et une partie architecture.
-- Commentaire VHDL
-- voici l'entité
ENTITY et IS
PORT(a,b : IN BIT;
y : OUT BIT);
END et;
-- voici l'architecture
ARCHITECTURE truc OF et IS
BEGIN
-- equation logique
y<=a AND b;
END truc;
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 :
-- voici l'entité
ENTITY et IS
PORT(a,b,c : IN BIT;
y : OUT BIT);
END et;
-- voici l'architecture
ARCHITECTURE truc OF et IS
BEGIN
-- equation logique y = a.b + c
y<= c OR (a AND b); -- parenthèses OBLIGATOIRES !!!
END truc;
Programmation VHDL structurelle
[modifier | modifier le wikicode]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
[modifier | modifier le wikicode]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
[modifier | modifier le wikicode]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
[modifier | modifier le wikicode]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ées Fils et sorties z y x d e S1 S2 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 1 0 1 1 0 0 0 1 1 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 1 0 0 1 1 0 1 0 1 1 1 1 1 0 0 1 0
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 (À ce stade on ne vous demande pas de simplifier).
Pour S2, inutile de faire un tableau de Karnaugh :
Exercice 3
[modifier | modifier le wikicode]'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.