Synthèse des fonctions logiques

Représenter la structure ou le comportement

Dans les sections précédentes, nous avons présenté quelques fonctions logiques et leur réalisation avec des transistors. Nous nous sommes appuyés sur trois types de représentations :

Ces représentations répondent à trois types de préoccupations : pour une combinaison de valeurs d’entrée, la table de vérité nous donne immédiatement le résultat ; les équations nous expliquent comment calculer le résultat ; le schéma représente un circuit capable de calculer le résultat.

On dit que le schéma propose une représentation structurelle d’un circuit (de quels éléments il est constitué) tandis que la table de vérité et les équations représentent son comportement (ce qu’il fait).

Synthèse logique

La synthèse logique est le processus qui consiste à passer d’une représentation comportementale d’une fonction logique à une représentation structurelle du circuit. Aujourd’hui, ce processus est automatisé dans des outils de conception assistée par ordinateur. En anglais, le terme couramment utilisé est EDA pour Electronic Design Automation.

Dans cette page, nous allons dérouler un exemple consistant à synthétiser un circuit en partant d’une table de vérité.

Un exemple fil rouge

Dans la suite de ce chapitre, nous allons développer un système de commande pour un robot. Ce système de commande sera réalisé au moyen de circuits logiques.

Dans un premier temps, nous considérerons que le robot obéit aux ordres d’un opérateur humain équipé d’une télécommande. Celle-ci possède quatre boutons correspondant aux commandes Avancer, Reculer, Gauche, Droite. Le robot possède également deux roues motrices qui lui permettent d’effectuer différents déplacements vers l’avant ou vers l’arrière, en ligne droite ou en rotation.

La figure ci-dessous représente les différents mouvements que le robot devra effectuer en fonction de l’état des boutons de la télécommande.

Mouvements du robot

Nous nous concentrerons ici sur la conception du cerveau du robot, c’est-à-dire le circuit qui sélectionnera les actions appropriées en fonction de l’état des boutons. Dans le domaine de l’automatisme, ce cerveau est appelé partie commande du système. Il est associé à la partie opérative dont le rôle est d’effectuer les actions physiques (ici, faire tourner les roues) et d’acquérir des données (ici, recevoir les signaux en provenance de la télécommande).

Ainsi, d’un point de vue logique, la partie commande de notre robot aura les entrées/sorties suivantes :

Nom Direction Valeur
BA (Bouton Avancer) Entrée 1 lorsque le bouton A est pressé, 0 sinon
BR (Bouton Reculer) Entrée 1 lorsque le bouton R est pressé, 0 sinon
BG (Bouton Gauche) Entrée 1 lorsque le bouton G est pressé, 0 sinon
BD (Bouton Droit) Entrée 1 lorsque le bouton D est pressé, 0 sinon
MGA (Moteur Gauche Avancer) Sortie 1 pour faire tourner la roue gauche vers l’avant, 0 sinon
MGR (Moteur Gauche Reculer) Sortie 1 pour faire tourner la roue gauche vers l’arrière, 0 sinon
MDA (Moteur Droit Avancer) Sortie 1 pour faire tourner la roue droite vers l’avant, 0 sinon
MDR (Moteur Droit Reculer) Sortie 1 pour faire tourner la roue droite vers l’arrière, 0 sinon

Elles sont symbolisées par ce schéma.

Commandes des moteurs du robot

Table de vérité

Nous allons traduire dans les termes de la logique les mouvements que le robot doit effectuer en fonction de l’état des boutons. Une table de vérité décrira de façon exhaustive les combinaisons possibles d’appuis sur les quatre boutons et indiquera pour chacune les commandes à envoyer aux moteurs.

Pour faciliter la lecture, nous allons découper cette table de vérité en plusieurs parties sans suivre l’ordre de la numération binaire. Tout d’abord, lorsqu’aucun bouton n’est pressé, ou lorsque l’utilisateur presse simultanément deux boutons contradictoires (avancer et reculer, gauche et droite), nous imposons au robot de rester immobile.

BA BR BG BD MGA MGR MDA MDR Remarque
0 0 0 0 0 0 0 0 Aucun bouton pressé, pas bouger
1 1 0 0 0 0 0 0 Ordres contradictoires, pas bouger
1 1 0 1 0 0 0 0 Ordres contradictoires, pas bouger
1 1 1 0 0 0 0 0 Ordres contradictoires, pas bouger
0 0 1 1 0 0 0 0 Ordres contradictoires, pas bouger
0 1 1 1 0 0 0 0 Ordres contradictoires, pas bouger
1 0 1 1 0 0 0 0 Ordres contradictoires, pas bouger
1 1 1 1 0 0 0 0 Ordres contradictoires, pas bouger

Pour alléger la table, nous pouvons fusionner certaines lignes en indiquant par un tiret les cas où la valeur d’une entrée est indifférente. Par exemple, lorsque BA et BR sont pressés en même temps, le robot doit rester immobile quelles que soient les valeurs de BG et BD.

BA BR BG BD MGA MGR MDA MDR Remarque
0 0 0 0 0 0 0 0 Aucun bouton pressé, pas bouger
1 1 0 0 0 0 Ordres contradictoires, pas bouger
1 1 0 0 0 0 Ordres contradictoires, pas bouger

Ne pas confondre les expressions « valeur indifférente » et « valeur indéterminée ».

Habituellement, on parle de valeur indéterminée lorsque la valeur d’une sortie ne peut pas être déterminée de façon certaine à partie des entrées. Cela arrive typiquement lorsque les conditions de fonctionnement normal du circuit ne sont pas respectées.

On parle de valeur indifférente lorsqu’un circuit produit les mêmes sorties quelle que soit la valeur d’une entrée.

Lorsque l’utilisateur presse un seul bouton, le robot doit se déplacer en ligne droite (les deux roues tournent dans le même sens) ou tourner sur place (les deux roues tournent dans des sens opposés).

BA BR BG BD MGA MGR MDA MDR Remarque
1 0 0 0 1 0 1 0 Avancer en ligne droite
0 1 0 0 0 1 0 1 Reculer en ligne droite
0 0 1 0 0 1 1 0 Tourner à gauche sur place
0 0 0 1 1 0 0 1 Tourner à droite sur place

Lorsque l’utilisateur presse deux boutons, le robot doit avancer ou reculer en pivotant sur une roue. Pour cela, il bloque une roue et fait tourner l’autre.

BA BR BG BD MGA MGR MDA MDR Remarque
1 0 1 0 0 0 1 0 Avancer vers la gauche
1 0 0 1 1 0 0 0 Avancer vers la droite
0 1 1 0 0 0 0 1 Reculer vers la gauche
0 1 0 1 0 1 0 0 Reculer vers la droite

Mise en équations

Nous avons identifié 16 combinaisons possibles d’états des boutons, et nous avons associé à chacune une combinaison de commandes de moteurs. L’étape suivante consiste à établir les équations logiques de MGA, MGR, MDA et MDR en fonction de BA, BR, BG et BD.

MGA vaut 1 sur trois lignes de la table de vérité rappelées ci-dessous. Elle vaut 0 dans tous les autres cas.

BA BR BG BD MGA
1 0 0 0 1
0 0 0 1 1
1 0 0 1 1

On peut écrire que MGA vaut 1 si, et seulement si, cette condition est vérifiée :

BA=1ETBR=0ETBG=0ETBD=0OUBA=0ETBR=0ETBG=0ETBD=1OUBA=1ETBR=0ETBG=0ETBD=1\begin{array}{cccccccc} & BA=1 & ET & BR=0 & ET & BG=0 & ET & BD=0 \\ OU & BA=0 & ET & BR=0 & ET & BG=0 & ET & BD=1 \\ OU & BA=1 & ET & BR=0 & ET & BG=0 & ET & BD=1 \end{array}

Cette condition peut être reformulée en utilisant la négation logique de manière à ne faire apparaître que des 1 à droite des égalités :

BA=1ETBR=1ETBG=1ETBD=1OUBA=1ETBR=1ETBG=1ETBD=1OUBA=1ETBR=1ETBG=1ETBD=1\begin{array}{cccccccc} & BA=1 & ET & \overline{BR}=1 & ET & \overline{BG}=1 & ET & \overline{BD}=1 \\ OU & \overline{BA}=1 & ET & \overline{BR}=1 & ET & \overline{BG}=1 & ET & BD=1 \\ OU & BA=1 & ET & \overline{BR}=1 & ET & \overline{BG}=1 & ET & BD=1 \end{array}

En faisant disparaître les comparaisons et en utilisant les opérateurs booléens, cela revient à écrire :

MGA=BABRBGBD+BABRBGBD+BABRBGBDMGA = BA\cdot\overline{BR}\cdot\overline{BG}\cdot\overline{BD} + \overline{BA}\cdot\overline{BR}\cdot\overline{BG}\cdot BD + BA\cdot\overline{BR}\cdot\overline{BG}\cdot BD

En généralisant cette méthode, nous pouvons associer à chaque ligne de la table de vérité un terme produit faisant intervenir une entrée ou sa négation.

BA BR BG BD Terme
0 0 0 0 BABRBGBD\overline{BA}\cdot\overline{BR}\cdot\overline{BG}\cdot\overline{BD}
1 1 BABRBA\cdot BR
1 1 BGBDBG\cdot BD
1 0 0 0 BABRBGBDBA\cdot\overline{BR}\cdot\overline{BG}\cdot\overline{BD}
0 1 0 0 BABRBGBD\overline{BA}\cdot BR\cdot\overline{BG}\cdot\overline{BD}
0 0 1 0 BABRBGBD\overline{BA}\cdot\overline{BR}\cdot BG\cdot\overline{BD}
0 0 0 1 BABRBGBD\overline{BA}\cdot\overline{BR}\cdot\overline{BG}\cdot BD
1 0 1 0 BABRBGBDBA\cdot\overline{BR}\cdot BG\cdot\overline{BD}
1 0 0 1 BABRBGBDBA\cdot\overline{BR}\cdot\overline{BG}\cdot BD
0 1 1 0 BABRBGBD\overline{BA}\cdot BR\cdot BG\cdot\overline{BD}
0 1 0 1 BABRBGBD\overline{BA}\cdot BR\cdot\overline{BG}\cdot BD

Ensuite, pour chaque sortie, il suffit de conserver les termes pour lesquels cette sortie vaut 1.

MGR=BABRBGBD+BABRBGBD+BABRBGBDMDA=BABRBGBD+BABRBGBD+BABRBGBDMDR=BABRBGBD+BABRBGBD+BABRBGBD\begin{aligned} MGR &= \overline{BA}\cdot\overline{BR}\cdot BG\cdot\overline{BD} + \overline{BA}\cdot BR \cdot \overline{BG} \cdot \overline{BD} + \overline{BA}\cdot BR \cdot \overline{BG} \cdot BD \\ MDA &= \overline{BA} \cdot \overline{BR} \cdot BG \cdot \overline{BD} + BA \cdot \overline{BR} \cdot \overline{BG} \cdot \overline{BD} + BA \cdot \overline{BR} \cdot BG\cdot \overline{BD} \\ MDR &= \overline{BA} \cdot \overline{BR} \cdot \overline{BG} \cdot BD + \overline{BA} \cdot BR \cdot \overline{BG} \cdot \overline{BD} + \overline{BA} \cdot BR \cdot BG \cdot \overline{BD} \end{aligned}

Ces équations suivent une forme canonique appelée « somme de produits ».

Schéma du circuit

La figure ci-dessous est une traduction directe des équations. Nous trouvons les quatre entrées en haut à gauche, associées à quatre inverseurs. Ainsi, les lignes verticales à gauche permettent d’accéder à la valeur des entrées et à leur inverses.

Au centre, des portes ET à quatre entrées calculent les termes produits correspondant à chaque ligne de la table de vérité. En bas à droite, chaque porte OU à trois entrées correspond à une colonne de sortie de la table de vérité.

Circuit de commande du robot

Optimisation

Dans tout le raisonnement que nous avons suivi, nous sommes passés directement de la table de vérité aux équations et des équations au schéma. Une analyse plus approfondie nous aurait peut-être permis d’obtenir des équations plus simples, qui auraient ensuite abouti à un circuit plus petit.

À l’étape de mise en équations, nous aurions pu utiliser des techniques algébriques exploitant les propriétés caractéristiques des fonctions logiques (distributivité, lois de De Morgan, etc). Par exemple, l’équation de MGA se simplifie de la manière suivante.

  1. Mise en facteur de BRBG\overline{BR}\cdot\overline{BG} :
MGA=BABRBGBD+BABRBGBD+BABRBGBD=BRBG(BABD+BABD+BABD)\begin{aligned} MGA &= BA\cdot\overline{BR}\cdot\overline{BG}\cdot\overline{BD} + \overline{BA}\cdot\overline{BR}\cdot\overline{BG}\cdot BD + BA\cdot\overline{BR}\cdot\overline{BG}\cdot BD \\ &= \overline{BR}\cdot\overline{BG}\cdot(BA\cdot\overline{BD} + \overline{BA}\cdot BD + BA\cdot BD) \end{aligned}
  1. Duplication d’un terme (a=a+aa = a + a) :
MGA=BRBG(BABD+BABD+BABD+BABD)MGA = \overline{BR}\cdot\overline{BG}\cdot(BA\cdot\overline{BD} + \overline{BA}\cdot BD + BA\cdot BD + BA\cdot BD)
  1. Encore des factorisations :
MGA=BRBG(BA(BD+BD)+(BA+BA)BD))MGA = \overline{BR}\cdot\overline{BG}\cdot\big(BA\cdot(\overline{BD} + BD) + (\overline{BA} + BA)\cdot BD)\big)
  1. Réduction de termes (a+a=1a + \overline a = 1 puis a1=aa\cdot 1 = a) :
MGA=BRBG(BA1+1BD)=BRBG(BA+BD)\begin{aligned} MGA &= \overline{BR} \cdot \overline{BG} \cdot(BA \cdot 1 + 1 \cdot BD) \\ &= \overline{BR} \cdot \overline{BG} \cdot(BA + BD) \end{aligned}
  1. Application des lois de De Morgan pour utiliser de préférence les fonctions NON-ET et NON-OU car elles nécessitent moins de transistors :
MGA=BR+BG(BA+BD)=BR+BG+BA+BD\begin{aligned} MGA &= \overline{BR + BG} \cdot(BA + BD) \\ &= \overline{BR + BG + \overline{BA + BD}} \end{aligned}

En utilisant des techniques similaires, nous obtenons les équations suivantes :

MGR=BA+BR+BG+BD+BR+BGMDA=BR+BD+BA+BGMDR=BA+BR+BG+BD+BR+BD\begin{aligned} MGR &= \overline{BA + \overline{\overline{BR + \overline{BG} + BD} + \overline{\overline{BR} + BG}}} \\ MDA &= \overline{BR + BD + \overline{BA + BG}} \\ MDR &= \overline{BA + \overline{\overline{BR + BG + \overline{BD}} + \overline{\overline{BR} + BD}}} \end{aligned}

Le circuit correspondant à ces équations (figure ci-dessous) peut être réalisé avec 62 transistors, contre 120 pour la version non optimisée.

Circuit de commande du robot optimisé

Pour passer de la table de vérité aux équations, la technique des tables de Karnaugh permet d’aboutir rapidement à des équations sous la forme de sommes de produits minimisant le nombre et la taille des termes. Cette méthode peut être pratiquée manuellement pour des équations jusqu’à quatre variables. Elle ne présente plus d’intérêt au-delà.

L’algorithme de Quine-Mc Cluskey est une méthode plus générale que les tables de Karnaugh et qui peut être plus facilement automatisée. Cependant, elle s’avère peu efficace en termes de temps de calcul lorsque la fonction logique à minimiser comporte de nombreuses variables. L’algorithme utilisé dans le logiciel Espresso et ses dérivés poursuit la même finalité, mais vise également à produire rapidement une solution acceptable même pour des fonctions logiques comportant de nombreuses variables.

Avec des circuits qui peuvent contenir plusieurs millions de portes logiques, l’usage d’outils de conception assistée par ordinateur est devenu incontournable. L’optimisation des circuits logiques est devenue une tâche si complexe qu’elle est aujourd’hui confiée à des logiciels spécialisés. Le rôle de l’ingénieur consiste alors à utiliser intelligemment ces outils en leur fournissant des informations exploitables et en les paramétrant de manière à respecter les contraintes du projet.

Résumé

Une même fonction logique peut être représentée sous différentes formes.

Une représentation comportementale décrit le comportement attendu indépendamment du matériel qui doit le réaliser.

Une représentation structurelle décrit une architecture matérielle constituée de composants interconnectés.

La synthèse logique est le processus qui consiste à passer d’une représentation comportementale d’une fonction logique à une représentation structurelle du circuit.