Beruflich Dokumente
Kultur Dokumente
Le but de l’exercice est de déterminer le sens de rotation d’un moteur en appliquant la méthode
de résolution des problèmes de Logique Séquentielle de Huffman.
Cette méthode ne tient aucunement compte de la technologie utilisée et génère les équations
logiques par déductions successives.
A B
V e r t
D A
B C i r c u i t R o u g e
I
C L o g i q u e
L’axe d’un moteur supporte une came excentrique équilibrée. Sur le bâti sont fixés trois
détecteurs concentriquement à l'axe qui donnerons un signal "un" logique lorsque la partie
la plus excentrée de la came passera devant.
On veut réaliser un circuit logique qui allumera un voyant vert pour un sens de rotation
du moteur, et un voyant rouge pour l'autre sens. Au démarrage du moteur, pendant la phase
d'indétermination, aucun voyant ne doit être allumé.
A chaque arrêt du moteur l'alimentation du circuit est coupée.
La position de départ de la came est quelconque. A la mise sous tension un dispositif
électronique maintient les signaux A, B, C à l'état logique "zéro" le temps que le circuit
logique trouve son état stable.
Il est demandé de déterminer les équations "booléennes" du circuit qui commandera
l'allumage des voyants.
La solution doit être homogène. Elle ne doit pas attribuer un rôle particulier à l'un ou
l'autre des capteurs, car dans ce cas la solution empirique est triviale.
Le but est de faire émerger la solution de l'application rigoureuse de l'algèbre de Boole.
(Je reprendrai ce mode de penser dans un prochain exercice de programmation en
application du processus de programmation structurée décrit par Mr Arsac dans son ouvrage
« La construction de programmes structurés »)
C'est un tableau qui contient autant de colonnes que de combinaisons binaires des
entrées, ici avec trois capteurs, il faut 2^3=8 colonnes, numérotées comme dans les tableaux
de Karnaugh, plus les colonnes des variables de sorties, plus, éventuellement, des colonnes
de commentaires.
Il comprendra autant de lignes que d'états possibles des entrées et des sorties, en passant
d'un état au suivant par variation d'un seul digit à la fois.
C'est la mise en équation du problème. Il peut y avoir des redondances, voire des oublis,
cela se corrigera.
On donne un numéro d'ordre à chacun de ces états dits stables, même momentanément,
qu'on inscrit dans la colonne correspondante à l'état binaire considéré. En fait un numéro
par ligne qu'on cercle pour le distinguer des états transitoires qui vont suivrent.
On va partir de l'état tous zéro, came entre les capteurs, on lui donne le numéro (1) dans
la colonne 000.
On va arbitrairement dire que la came va passer ensuite devant le capteur A, (2) dans la
colonne 100 (on dira à l'avenir C100), puis la came est à nouveau entre deux capteurs, (3)
dans C000. Elle peut passer ensuite devant B ou C, puis elle se trouve de nouveau entre les
capteurs, d'où (4) dans C010 et (5) dans C000, (6) dans C001 et (7) dans C000. A tous ces
états correspond une indétermination du sens de rotation, on mettra donc i dans la variable
de sortie correspondante, et pour que le système soit fiable on mettra 0 dans une variable de
contrôle.
On a par la force « des choses » introduit deux variables de sortie.
On va maintenant admettre qu'après A, elle passe sur B, puis sur C, puis de nouveau sur
A, d'où les numéros 8, 9, 10, 11, 12, 13, et ainsi de suite. La came tourne dans un certain
sens qu'on appelle 1 dans la variable SR, sens de rotation, et on va également mettre 1 dans
la variable CR, contrôle, puisque maintenant le sens est déterminé.
Si après A, la came passe sur C, puis sur B, puis sur A et ainsi de suite on donne les
numéros 14, 15, 16, 17, 18, et19. On met alors 0 dans la variable SR, et 1 dans CR.
Les transitions horizontales sont considérées instantanées, les transitions verticales font
intervenir un délai.
sens de contrôle
Capteur Capteur Capteur
ABC rotation rotation
C B A SR CR
---------- ---------- ----------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
Etats
000 001 011 010 110 111 101 100 --- ---
mise
sous
tensio (1) 6 --- 4 --- --- --- 2 i 0
n
départ
A 3 --- --- --- --- --- --- (2) i 0
(3) 14 --- 8 --- --- --- 2 i 0
départ
B 5 --- --- (4) --- --- --- --- i 0
(5) 10 --- 4 --- --- --- 18 i 0
départ
C 7 (6) --- --- --- --- --- --- i 0
(7) 6 --- 16 --- --- --- 12 i 0
On va d'abord faire une simplification technique qui considère que le moteur ne peut pas
changer de sens sous tension, c'est à dire qu'on ne peut pas changer de sens sans passer par
l'état initial. Cela supprime deux états transitoires sur les lignes des états stables 9, 11, 13,
15, 17, et 19.
On fait ensuite la recherche des états stables équivalents. Ils sont dans la même colonne,
ont la même variable de sortie et leurs transitions aboutissent aux mêmes états stables, ou
eux mêmes équivalents.
Il faut une certaine maîtrise pour détecter dans les tableaux complexes les équivalences
conditionnelles, les équivalences en boucles ou les pseudo équivalences, c'est-à-dire lorsque
l’un des états est optionnel ou interdit car obtenu par des changements d’états simultanés
des variables d’entrées.
Il existe heureusement une méthode systématique pour les détecter qui consiste au
départ à faire un tableau en fonction des couples d’états stables se trouvant dans une même
colonne, pour un même état des sorties.
Il n’y pas dans le tableau ci-dessus de couples d’états stables dans une même colonne
correspondants au même état des sorties. Il n’y a donc pas d’état stable équivalent.
(La description complète de la méthode nécessite un tableau beaucoup plus complexe
pour être mise en œuvre : la méthode est néanmoins très simple. Ce serait trop fastidieux de
l’étudier sans un support concret.)
Lorsqu’il y a des états stables équivalents on les supprime ainsi que les lignes qui les
contiennent.
Il n'y en a pas dans notre tableau.
Cela consiste à réduire le nombre de lignes par fusion de lignes, c'est à dire en logeant
plusieurs états stables sur la même ligne. Les états stables doivent être dans des colonnes
distinctes, les lignes doivent être identiques, colonne par colonne, sauf pour les états stables
bien évidemment. Les cases vides sont considérées égales aux pleines, les numéros cerclés
absorbent les non cerclés, les indéterminées prennent la valeur des déterminées.
Ici on peut fusionner les lignes (2,3), (4,5) et (6,7).
Pourquoi vouloir réduire le nombre de lignes ? Parce que c'est lui qui impose le nombre
de variables auxiliaires et donc la complexité du schéma.
On arrive ainsi au tableau réduit des états.
Les variables auxiliaires c’est quoi ? Ce sont les composants internes du système qui
mémorisent les états intermédiaires du système, c'est-à-dire l’état d’avancement du
déroulement de la séquence logique.
Lorsqu’on loge plusieurs états stables sur la même ligne, cela veut dire qu’on peut
passer de l’un à l’autre uniquement par changement d’état d’une variable d’entrée, donc
sans étape intermédiaire, donc sans variable auxiliaire.
Pour faire le regroupement des états réductibles on peut faire un graphe des états
stables, dans lequel on joint par une ligne les états réductibles.
Par exemple :
6 1--------2
5 |
7 4 -------3
Correspondrait au tableau :
(1) _ _ 4
1 (2) _ _
5 (3) _ 4
_ 3 _ (4)
(5) 2 _ 6
5 3 7 (6)
1 _ (7) 6
Les lignes (1), (2) et (4), (3) sont réductibles, on pourrait aussi réduire (1), (4), mais
alors (1), (3) ne le sont pas. On perd une simplification.
Comme nous allons le voir, il n’est pas toujours nécessaire de faire le maximum de
simplifications possibles. D’autant plus que cela peut engendrer un fonctionnement instable
et aléatoire qu’on rencontre constamment en informatique, mais comme cela touche le
grand public cela n’a pas d’importance et n’empêche pas les trusts d’informatique de faire
fortune.
En automatisme industriel le disfonctionnement d’une machine peut entraîner des
accidents graves, et la recherche des courses critiques est fondamentale et entraîne toujours
l’augmentation du nombre de variables auxiliaires.
Par ailleurs le nombre de variables auxiliaires dépend de la numérotation binaire des
lignes du tableau des états, donc d’une puissance de 2 qui doit être supérieure ou égale au
nombre de lignes. Donc 5, 6, 7 ou 8 lignes donnera le même nombre de variable égal à 3
puisque 2^3=8 et 2^2=4.
Les courses critiques se présentent lorsqu’il y a plusieurs états stables dans la même
colonne et qu’il est nécessaire de traverser plusieurs lignes pour passer d’un état transitoire
à l’état stable correspondant. Il y a alors risque de passer par un autre état stable en fonction
des temps de réponse des variables auxiliaires qui peuvent commuter dans un ordre
indéterminé.
Pour éviter ces risques, il faut que les états transitoires et stables de même numéro
soient dans des lignes adjacentes.
Dans le tableau réduit des états, on va nomme chaque ligne par une lettre, et faire un
graphe des liaisons entre états transitoires et états stables.
On fait la liste des liaisons, et on essaye de faire un graphe minimisant le nombre de
croisements.
S'il n'y a aucun croisement le nombre de variables auxiliaires sera tel que
2^n>=nombre de lignes.
S'il y a des croisements, il faudra ajouter des variables auxiliaires.
Dans notre cas il y a 16 lignes, donc 4 variables auxiliaires devraient suffire. Mais
comme il y a un croisement il en faut 5.
TABLEAU réduit des ETATS
sens de contrôle
ABC 000 001 011 010 110 111 101 100 rotation rotation
SR CR
---------- ---------- ----------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
Etats
--- --- --- --- --- --- --- --- --- ---
mise sous
tension
a (1) 6 --- 4 --- --- --- 2 i 0
Sixième phase, réécriture dans l’ordre binaire du tableau réduit des états.
On constate que pour VW=11 on a des vides, on a donc pris pour l’ordre binaire des
lignes, l’ordre VWUXY .
Pour les colonnes on a pris l’ordre binaire ABC.
Les états stables et leurs transitoires associés ne peuvent pas sortir d’une colonne, on
leur donne donc comme valeur binaire la valeur de la ligne de l’état stable. On indique pour
mémoire le numéro de l’état du tableau primaire.
On réécrit en binaire le tableau primaire dans l’ordre des variables binaires choisi ci-
dessus, ce qui nous donne le tableau binaire des états.
Il faut maintenant construire les tableaux de Karnaugh des variables auxiliaires qui
deviennent variables d’excitation car par rebouclage sur les entrées, elles assurent les
fonctions de mémorisation de l’avancement de la séquence.
Pour chaque variable auxiliaire, on inscrit dans chaque case la valeur binaire 0 ou 1
donnée par son poids dans la même case du tableau réduit des états. Par exemple, pour y
c'est le poids 0, pour x le poids 1, pour u le poids 2 et ainsi de suite.
Cela donne les tableaux de u, v, w, x, y en fonction des 8 variables :
U, V, W, X, Y, A, B et C.
Ce sont des tableaux de Karnaugh de 8 variables, heureusement qu’il y a beaucoup de
vide.
On obtient les équations logiques de ces variables par la méthode des unions
d'intersections des groupements dans les tableaux de Karnaugh.
On construit enfin les tableaux de Karnaugh des variables de sorties en fonction des
variables auxiliaires, d'où les équations logiques des sorties.
Ces équations tiennent compte des aléas de transitions, les groupements de Karnaugh se
chevauchant tous. Il ne doit pas y avoir de groupements disjoints, ou même adjacents.
TABLEAU de transitions
des variables
auxiliaires
Présentation verticale:
VW = 00
U\XY 10 00 01 11
0 b a c ---
1 --- d --- ---
VW = 01
U\XY 10 00 01 11
0 k --- o p
1 l m n ---
VW = 11
U\XY 10 00 01 11
0 --- --- --- ---
1 --- --- --- ---
VW = 10
U\XY 10 00 01 11
0 e --- g h
1 j i h ---
Présentation horizontale:
U=0
VW\XY 10 00 01 11
01 k --- o p
00 b a c ---
10 e --- g f
11 --- --- --- ---
U=0
VW\XY 10 00 01 11
01 l m n ---
00 --- d --- ---
10 j i h ---
11 --- --- --- ---
TABLEAU BINAIRE DES ETATS
Variable y
AB
00 01 11 10
C
V=0 U\XY 00 01 11 10 U\XY 00 01 11 10 U\XY 00 01 11 10
W=0 0 0 0 1 0 0 0 1 0 0 1 1 0
1 0 1 0 1 0
U\XY -- -- -- -- U\XY -- -- -- -- U\XY -- -- -- --
1 0 0 1 0 0 0
1 0 1 1
AB
00 01 11 10
C
V=0 U\XY 00 01 11 10 U\XY 00 01 11 10 U\XY 00 01 11 10
W=1 0 0 1 1 0 0 0 0 0
1 1 1 0 1 1 0 0
U\XY -- -- -- -- U\XY -- -- -- -- U\XY -- -- -- --
1 0 1 0 0
1 1 1 1
V=1,W=1
AB
00 01 11 10
C
V=1 U\XY 00 01 11 10 U\XY 00 01 11 10 U\XY 00 01 11 10
W=0 0 0 1 1 1 0 1 1 0 0
1 0 1 0 1 1 0
U\XY -- -- -- -- U\XY -- -- -- -- U\XY -- -- -- --
1 0 0 0
1 0 0 1 1
Variable x
AB
00 01 11 10
C
V=0 U\XY 00 01 11 10 U\XY 00 01 11 10 U\XY 00 01 11 10
W=0 0 0 0 0 1 0 0 0 1 0 0 0 1
1 0 1 0 1 0
U\XY -- -- -- -- U\XY -- -- -- -- U\XY -- -- -- --
1 0 1 0 1 0 0
1 0 1 1
AB
00 01 11 10
C
V=0 U\XY 00 01 11 10 U\XY 00 01 11 10 U\XY 00 01 11 10
W=1 0 0 1 1 1 0 1 1 0
1 0 0 1 1 1 0 0
U\XY -- -- -- -- U\XY -- -- -- -- U\XY -- -- -- --
1 0 0 0 0
1 0 1 1
V=1,W=1
AB
00 01 11 10
C
V=1 U\XY 00 01 11 10 U\XY 00 01 11 10 U\XY 00 01 11 10
W=0 0 0 0 1 1 0 0 0 0 1
1 1 0 1 1 1 1
U\XY -- -- -- -- U\XY -- -- -- -- U\XY -- -- -- --
1 0 0 0
1 0 0 1 1
Tableaux de Karnaugh des variables d'excitation
Variable u
AB
00 01 11 10
C
V=0 U\XY 00 01 11 10 U\XY 00 01 11 10 U\XY 00 01 11 10
W=0 0 0 0 0 0 0 1 0 0 0 0 0 0
1 1 1 1 1 1
U\XY -- -- -- -- U\XY -- -- -- -- U\XY -- -- -- --
1 0 0 0 0 0 0
1 1 1 1
AB
00 01 11 10
C
V=0 U\XY 00 01 11 10 U\XY 00 01 11 10 U\XY 00 01 11 10
W=1 0 0 0 0 1 0 0 0 0
1 1 1 1 1 1 1 1
U\XY -- -- -- -- U\XY -- -- -- -- U\XY -- -- -- --
1 0 0 0 0
1 0 1 1
V=1,W=1
AB
00 01 11 10
C
V=1 U\XY 00 01 11 10 U\XY 00 01 11 10 U\XY 00 01 11 10
W=0 0 0 1 0 0 0 0 0 0 0
1 1 1 1 1 1 0
U\XY -- -- -- -- U\XY -- -- -- -- U\XY -- -- -- --
1 0 0 0
1 1 1 1 1
Tableaux de Karnaugh des variables d'excitation
Variable w
AB
00 01 11 10
C
V=0 U\XY 00 01 11 10 U\XY 00 01 11 10 U\XY 00 01 11 10
W=0 0 0 0 0 0 0 0 0 1 0 0 0 0
1 0 1 0 1 1
U\XY -- -- -- -- U\XY -- -- -- -- U\XY -- -- -- --
1 0 0 1 0 0 0
1 0 1 1
AB
00 01 11 10
C
V=0 U\XY 00 01 11 10 U\XY 00 01 11 10 U\XY 00 01 11 10
W=1 0 0 1 1 1 0 1 1 0
1 1 1 1 1 1 1 1
U\XY -- -- -- -- U\XY -- -- -- -- U\XY -- -- -- --
1 0 1 0 0
1 1 1 1
V=1,W=1
AB
00 01 11 10
C
V=1 U\XY 00 01 11 10 U\XY 00 01 11 10 U\XY 00 01 11 10
W=0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 1 0
U\XY -- -- -- -- U\XY -- -- -- -- U\XY -- -- -- --
1 0 0 0
1 0 0 1 1
Variable v
AB
00 01 11 10
C
V=0 U\XY 00 01 11 10 U\XY 00 01 11 10 U\XY 00 01 11 10
W=0 0 0 0 0 0 0 0 1 0 0 0 0 1
1 0 1 0 1 0
U\XY -- -- -- -- U\XY -- -- -- -- U\XY -- -- -- --
1 0 0 0 0 0 0
1 1 1 1
AB
00 01 11 10
C
V=0 U\XY 00 01 11 10 U\XY 00 01 11 10 U\XY 00 01 11 10
W=1 0 0 0 0 0 0 0 0 0
1 0 0 0 1 1 0 0
U\XY -- -- -- -- U\XY -- -- -- -- U\XY -- -- -- --
1 0 0 0 0
1 0 1 1
V=1,W=1
AB
00 01 11 10
C
V=1 U\XY 00 01 11 10 U\XY 00 01 11 10 U\XY 00 01 11 10
W=0 0 0 1 1 1 0 1 1 0 1
1 1 1 1 1 1 1
U\XY -- -- -- -- U\XY -- -- -- -- U\XY -- -- -- --
1 0 0 0
1 1 1 1 1
Tableaux de Karnaugh des variables de sortie
V=1 W=1
EQUATIONS BOOLEENNES :
Vert = SSR.CTR
Rouge =(/SSR).CTR
On constatera la belle symétrie des permutations circulaires à l’intérieur des groupements des
variables U, X et Y d’une part, et V et W d’autre part. Cela rassure en partie la validité des formules.
Cette étude est un résumé succinct de la méthode complète que vous pouvez trouver
dans un cours de logique séquentielle de l'ECOLE SUPERIEURE D'ELECTRICITE.
Les points les plus succinctement abordés sont la simplification et la réduction du
tableau des états, et la recherche des courses critiques.
On peut présenter les tableaux d’une manière plus compact.
Variable u
V
0 1
W
UXY
000 001 011 010 110 111 101 100 000 001 011 010 110 111 101 100
ABC
000 0 0 -- 0 -- -- -- 1 -- 1 0 0 1 -- 1 1
001 1 0 -- 0 -- -- -- 1 -- 0 0 -- -- -- -- --
011
0
010 0 0 -- 0 -- -- -- 1 -- -- -- 0 0 -- -- --
110
111
101
100 0 0 -- 0 -- -- -- 1 -- -- -- -- -- -- 1 1
UXY
000 001 011 010 110 111 101 100 000 001 011 010 110 111 101 100
ABC
000 -- 0 0 1 1 -- 1 1
001 -- -- 0 0 -- -- -- --
011
1
010 -- -- -- -- 1 -- -- 1
110
111
101
100 -- 0 -- -- -- -- 0 --
Tableaux de Karnaugh des variables
Variable y
V
0 1
W
UXY
000 001 011 010 110 111 101 100 000 001 011 010 110 111 101 100
ABC
000 0 1 -- 0 -- -- -- 0 -- 1 1 1 0 -- 1 0
001 0 1 -- 0 -- -- -- 0 -- 1 1 -- -- -- -- --
011
0
010 1 1 -- 0 -- -- -- 0 -- -- -- 0 0 -- -- --
110
111
101
100 0 1 -- 0 -- -- -- 0 -- -- -- -- -- -- 0 0
UXY
000 001 011 010 110 111 101 100 000 001 011 010 110 111 101 100
ABC
000 -- 1 1 0 0 -- 1 1
001 -- -- 0 0 -- -- -- --
011
1
010 -- -- -- -- 0 -- -- 0
110
111
101
100 -- 1 -- -- -- -- 1 --
Variable x
V
0 1
W
UXY
000 001 011 010 110 111 101 100 000 001 011 010 110 111 101 100
ABC
000 0 0 -- 1 -- -- -- 0 -- 0 1 1 1 -- 0 1
001 0 0 -- 1 -- -- -- 0 -- 0 0 -- -- -- -- --
011
0
010 0 0 -- 1 -- -- -- 0 -- -- -- 1 1 -- -- --
110
111
101
100 1 0 -- 1 -- -- -- 0 -- -- -- -- -- -- 0 0
UXY
000 001 011 010 110 111 101 100 000 001 011 010 110 111 101 100
ABC
000 -- 1 1 1 1 -- 0 0
001 -- -- 1 1 -- -- -- --
011
1
010 -- -- -- -- 0 -- -- 0
110
111
101
100 -- 0 -- -- -- -- 0 --
Tableaux de Karnaugh des variables
Variable w
V
0 1
W
UXY
000 001 011 010 110 111 101 100 000 001 011 010 110 111 101 100
ABC
000 0 0 -- 0 -- -- -- 0 -- 0 0 0 0 -- 0 0
001 0 0 -- 1 -- -- -- 0 -- 0 0 -- -- -- -- --
011
0
010 0 0 -- 0 -- -- -- 1 -- -- -- 0 0 -- -- --
110
111
101
100 0 1 -- 0 -- -- -- 0 -- -- -- -- -- -- 0 0
UXY
000 001 011 010 110 111 101 100 000 001 011 010 110 111 101 100
ABC
000 -- 1 1 1 1 -- 1 1
001 -- -- 1 1 -- -- -- --
011
1
010 -- -- -- -- 1 -- -- 1
110
111
101
100 -- 1 -- -- -- -- 1 --
Variable v
V
0 1
W
UXY
000 001 011 010 110 111 101 100 000 001 011 010 110 111 101 100
ABC
000 0 0 -- 0 -- -- -- 0 -- 1 1 1 1 -- 1 1
001 0 1 -- 0 -- -- -- 0 -- 1 1 -- -- -- -- --
011
0
010 0 0 -- 1 -- -- -- 0 -- -- -- 1 1 -- -- --
110
111
101
100 0 0 -- 0 -- -- -- 1 -- -- -- -- -- -- 1 1
UXY
000 001 011 010 110 111 101 100 000 001 011 010 110 111 101 100
ABC
000 -- 0 0 0 0 -- 0 0
001 -- -- 0 0 -- -- -- --
011
1
010 -- -- -- -- 0 -- -- 0
110
111
101
100 -- 0 -- -- -- -- 0 --
Tableaux de Karnaugh des variables de sortie
UXY
000 001 011 010 110 111 101 100
VW .
00
01 0 0 0 0 0 0
11
10 1 1 1 1 1 1
UXY
000 001 011 010 110 111 101 100
VW .
00 0 0 0 0 0 0 0 0
01 0 1 1 1 1 0 1 1
11 0 0 0 0 0 0 0 0
10 0 1 1 1 1 0 1 1
On constate déjà que la belle symétrie de permutation circulaire a disparu. En affectant un poids à
chaque terme représentant le nombre de cellules du tableau qu’il représente, on peut vérifier le poids de
chaque formule ce qui donne un petit contrôle d’homogénéité : cette technique a permis de déceler
plusieurs erreurs de groupement. Bien sûr ce n’est qu’une preuve par 9.
Les deux formules ci-dessus ont un poids de 200. (une erreur m’avait donné 200 et 208)
Les trois formules qui suivent ont un poids de 160. On retrouve les groupements V, W et U, X, Y.
Un poids de 156 dans la formule de u m’a permis de déceler une erreur importante de groupement.
A part les termes en U, X, Y, ces formules n’ont pas beaucoup de ressemblance avec celles du
premier groupe, pourtant elles doivent être équivalentes !!
Pour le vérifier, il faut faire une table de vérité !!
Les deux dernières formules sont :
XY 00 01 11 10
U
0 0 1 1 1
1 1 1 0 1
Les vérifications par le calcul, dossier annexe, montrent qu’il y a une erreur dans les formules
du premier groupe qui paraissent si homogènes, il ne faut pas se fier aux apparences et à la
preuve par 9.