You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Objectifs<br />
Circuits Logiques<br />
ELE1300<br />
Conception et analyse de circuits<br />
séquentiels simples (machines à états)<br />
JP David<br />
• Connaître et comprendre<br />
Les deux types de machines à états de base<br />
• Être capable de<br />
Reformuler un problème sous forme d’une<br />
machine à états<br />
Construire le circuit logique correspondant à un<br />
diagramme d’états et réciproquement.<br />
12 novembre 2012 Circuits logiques - JP David 2<br />
Cybernétique<br />
La table de transition<br />
Minute courante<br />
Minute suivante<br />
Chant Rire Orgue Encens Chant Rire<br />
0 0 0 0 0 1<br />
0 0 0 1 0 0<br />
0 0 1 0 1 1<br />
0 0 1 1 1 0<br />
0 1 0 0 0 1<br />
0 1 0 1 0 0<br />
0 1 1 0 0 1<br />
0 1 1 1 0 0<br />
1 0 0 0 1 0<br />
1 0 0 1 1 1<br />
1 0 1 0 0 0<br />
1 0 1 1 0 1<br />
1 1 0 0 1 0<br />
1 1 0 1 1 1<br />
1 1 1 0 1 0<br />
1 1 1 1 1 1<br />
3<br />
12 novembre 2012 Circuits logiques - JP David 4
Moore et Mealy<br />
Circuit logique séquentiel : un circuit dont la sortie ne dépend pas<br />
seulement des entrées présentes, mais également de l’historique des<br />
entrées. Il contient des éléments de mémorisation pour garder l’état du<br />
circuit.<br />
Machine à états finis : C’est une machine à états qui a une quantité<br />
finie de mémoire pour représenter les états. (en anglais : FSM –<br />
Finite State Machine)<br />
Il existe deux grandes catégories de machine à états finis séquentielles:<br />
Machine de Moore : Les sorties dépendent des états seulement<br />
Machine de Mealy : Les sorties dépendent des états et des entrées<br />
Moore et Mealy<br />
Machine de Moore:<br />
ENTRÉES<br />
CIRCUIT<br />
COMBINATOIRE (1)<br />
Machine de Mealy:<br />
ENTRÉES<br />
CIRCUIT<br />
COMBINATOIRE (1)<br />
CIRCUIT<br />
MÉMOIRES<br />
COMBINATOIRE (2)<br />
CIRCUIT<br />
MÉMOIRES COMBINATOIRE (2)<br />
(1) Communément appelé IFL (Input-Forming Logic)<br />
(2) Communément appelé OFL (Output-Forming Logic)<br />
SORTIES<br />
SORTIES<br />
12 novembre 2012 Circuits logiques - JP David 5<br />
12 novembre 2012 Circuits logiques - JP David 6<br />
Synthèse de machines à états<br />
Exemple des feux de circulation<br />
1. Diagramme d’états<br />
2. Tableau d’états<br />
3. Tableau de transition<br />
4. Expressions des entrées des bascules<br />
5. Expressions des sorties<br />
6. Schéma<br />
nord<br />
sud<br />
S[0]<br />
S[1]<br />
S[2]<br />
S[3]<br />
S[4]<br />
S[5]<br />
12 novembre 2012 Circuits logiques - JP David 7<br />
12 novembre 2012 Circuits logiques - JP David 8
Un compteur mesure le temps<br />
Vue globale du système<br />
Pour faire un feux de circulation, il faut pouvoir mesurer le<br />
temps qui passe! Pour cela, il faut un compteur :<br />
horloge<br />
activer<br />
Compteur<br />
initialiser<br />
activer<br />
horloge<br />
compte<br />
N<br />
Les entrées du compteur<br />
déterminent la valeur que<br />
prendra le compte au<br />
PROCHAIN cycle d’horloge.<br />
1<br />
horloge<br />
activer<br />
initialiser<br />
compteur<br />
Constante<br />
Temps vert<br />
Exemple : 5<br />
Constante<br />
Temps jaune<br />
Exemple : 3<br />
A<br />
B<br />
A<br />
B<br />
comparateur<br />
A=B<br />
comparateur<br />
A=B<br />
T1<br />
T2<br />
FSM<br />
S[5..0]<br />
IniCpt<br />
initialiser<br />
compte<br />
0 1 2<br />
3 4 0 1<br />
S[3]<br />
S[4]<br />
S[5]<br />
S[0]<br />
S[1]<br />
S[2]<br />
12 novembre 2012 Circuits logiques - JP David 9<br />
12 novembre 2012 Circuits logiques - JP David 10<br />
Fonctionnement détaillé<br />
Fonctionnement détaillé (suite)<br />
1. Le circuit débute et le compteur<br />
est à 0. Le feu en direction sud<br />
est vert et l’autre feu est rouge.<br />
2. La valeur du compteur augmente jusqu’au<br />
temps correspondant à « temps vert », la<br />
valeur T1 devient alors égale à 1. Notez que<br />
l’on ignore T2 tout simplement!<br />
3. Le circuit réinitialise le compteur<br />
à 0 avec Init et le feu devient<br />
jaune. Le feu de l’autre direction<br />
demeure rouge.<br />
4. La valeur du compteur augmente jusqu’au<br />
temps correspondant à « temps jaune », la<br />
valeur T2 devient alors égale à 1.<br />
horloge<br />
Compteur<br />
Init<br />
T1<br />
T2<br />
0<br />
1<br />
2<br />
horloge<br />
Compteur<br />
Init<br />
T1<br />
T2<br />
2<br />
3<br />
4<br />
5<br />
horloge<br />
Compteur<br />
Init<br />
T1<br />
T2<br />
6<br />
0<br />
1<br />
horloge<br />
Compteur<br />
Init<br />
T1<br />
T2<br />
1<br />
2<br />
3<br />
S[3]<br />
S[4]<br />
S[5]<br />
S[0]<br />
S[1]<br />
S[2]<br />
S[3]<br />
S[4]<br />
S[5]<br />
S[0]<br />
S[1]<br />
S[2]<br />
S[3]<br />
S[4]<br />
S[5]<br />
S[0]<br />
S[1]<br />
S[2]<br />
S[3]<br />
S[4]<br />
S[5]<br />
S[0]<br />
S[1]<br />
S[2]<br />
12 novembre 2012 Circuits logiques - JP David 11<br />
12 novembre 2012 Circuits logiques - JP David 12
5. Le circuit réinitialise le compteur<br />
à 0 avec Init et le feux jaune<br />
devient rouge. Le feux de l’autre<br />
direction devient vert.<br />
horloge<br />
Compteur<br />
Init<br />
T1<br />
T2<br />
Fonctionnement détaillé (suite)<br />
S[3]<br />
S[4]<br />
S[5]<br />
4<br />
0<br />
S[0]<br />
S[1]<br />
S[2]<br />
1<br />
6. On continue de faire la même chose pour<br />
chaque côté indéfiniment.<br />
horloge<br />
Compteur<br />
Init<br />
T1<br />
T2<br />
12 novembre 2012 Circuits logiques - JP David 13<br />
S[3]<br />
S[4]<br />
S[5]<br />
2<br />
3<br />
S[0]<br />
S[1]<br />
S[2]<br />
4<br />
5<br />
0<br />
0<br />
A<br />
T1<br />
B<br />
C<br />
1<br />
S = 100 001<br />
IniCpt = 0<br />
S = 100 001<br />
IniCpt = 1<br />
S = 010 001<br />
IniCpt = 0<br />
1. Diagramme d’états<br />
0<br />
E<br />
T1<br />
F<br />
G<br />
1<br />
S = 001 100<br />
IniCpt = 0<br />
S = 001 100<br />
IniCpt = 1<br />
S = 001 010<br />
IniCpt = 0<br />
0<br />
A<br />
S = 100 001<br />
IniCpt = T1<br />
C<br />
T1<br />
T1<br />
0<br />
1 1<br />
S = 001 100<br />
IniCpt = T1<br />
T2<br />
T2<br />
1<br />
1<br />
0<br />
1<br />
1<br />
1<br />
Note : Mealy donnera des diagrammes temporels<br />
D S = 010 001<br />
S = 001 010 légèrement différents de ce qui a été présenté<br />
H<br />
IniCpt = 1<br />
IniCpt = 1 précédemment puisque les étapes 2 et 3 sont<br />
combinées, ainsi que les étapes 4 et 5.<br />
12 novembre 2012 Circuits logiques - JP David 14<br />
Moore<br />
0<br />
B<br />
T2<br />
S = 010 001<br />
IniCpt = T2<br />
0<br />
Mealy<br />
D<br />
T2<br />
S = 001 010<br />
IniCpt = T2<br />
2. Tables d’états<br />
3. Table de transitions<br />
Nous continuons l’analyse pour la version de Mealy :<br />
État présent État futurs Sorties<br />
Entrées<br />
(T1, T2)<br />
Entrées<br />
(T1, T2)<br />
00 01 10 11 00 01 10 11<br />
A A A B - S=100001<br />
IniCpt = 0<br />
B B C - - S=010001<br />
IniCpt = 0<br />
C C C D - S=001100<br />
IniCpt = 0<br />
D D A - - S=001010<br />
IniCpt = 0<br />
S=100001<br />
IniCpt = 0<br />
S=010001<br />
IniCpt = 1<br />
S=001100<br />
IniCpt = 0<br />
S=001010<br />
IniCpt = 1<br />
S=100001<br />
IniCpt = 1<br />
-<br />
- -<br />
S=001100<br />
IniCpt = 1<br />
-<br />
- -<br />
On remplace les états par une valeur binaire<br />
État présent<br />
(Q 1 Q 0 )<br />
État futurs<br />
(Q 1+ Q 0+ )<br />
Entrées<br />
(T1, T2)<br />
Sorties<br />
Entrées<br />
(T1, T2)<br />
00 01 10 11 00 01 10 11<br />
00 00 00 01 - S=100001<br />
IniCpt = 0<br />
01 01 11 - - S=010001<br />
IniCpt = 0<br />
11 11 11 10 - S=001100<br />
IniCpt = 0<br />
10 10 00 - - S=001010<br />
IniCpt = 0<br />
S=100001<br />
IniCpt = 0<br />
S=010001<br />
IniCpt = 1<br />
S=001100<br />
IniCpt = 0<br />
S=001010<br />
IniCpt = 1<br />
S=100001<br />
IniCpt = 1<br />
-<br />
- -<br />
S=001100<br />
IniCpt = 1<br />
- -<br />
-<br />
12 novembre 2012 Circuits logiques - JP David 15<br />
12 novembre 2012 Circuits logiques - JP David 16
Les entrées des bascules<br />
5. Expression des sorties<br />
Avec l’utilisation de bascules D<br />
Q 1<br />
+<br />
T 1 T 2<br />
00 01 11 10<br />
00<br />
0 0<br />
- 0<br />
01 0 1 - -<br />
Q 1 Q 0<br />
11 1 1 - 1<br />
10<br />
1 0<br />
- -<br />
Q + 1<br />
= Q1 T1 + Q1 Q0 + Q0T1<br />
Q 0<br />
+<br />
T 1 T 2<br />
00 01 11 10<br />
00<br />
0 0<br />
- 1<br />
01 1 1 - -<br />
Q 1 Q 0<br />
11 1 1 - 0<br />
10<br />
0 0<br />
- -<br />
Q + 0<br />
= Q0 T1 + Q0T1 = Q0 ⊕T1<br />
IniCpt<br />
00<br />
00<br />
0 0<br />
T 1 T 2<br />
01 11<br />
10<br />
- 1<br />
01 0 1 - -<br />
Q 1 Q 0<br />
11 0 0 - 1<br />
10<br />
0 1<br />
- -<br />
IniCpt = T1 + T2 Q1 Q0 + T2 Q1 Q0<br />
S[5]<br />
00<br />
T 1 T 2<br />
00 01 11 10<br />
1 1 - 1<br />
01<br />
0 0<br />
- -<br />
Q 1 Q 0<br />
11 0 0 - 0<br />
10<br />
On répète pour les sorties S[4] à S[0]<br />
0 0<br />
S[5] =<br />
- -<br />
Q Q<br />
1 0<br />
12 novembre 2012 Circuits logiques - JP David 17<br />
12 novembre 2012 Circuits logiques - JP David 18<br />
6. Schéma<br />
Rappel sur les bascules T et JK<br />
T2 T 1<br />
T 2<br />
Q<br />
+<br />
1 Q 1<br />
D Q<br />
Q<br />
IniCpt<br />
Lors de l’étape 4, il est possible qu’il soit plus avantageux d’utiliser<br />
des bascules autres que les bascules D, telles que les bascules JK ou<br />
T. Reprenons donc l’étape 4, mais cette fois en comparant<br />
l’utilisation de bascules D, T et JK.<br />
+<br />
J K H Q Q +<br />
T1<br />
H<br />
Q<br />
+<br />
0<br />
Q 0<br />
D Q<br />
S[5]<br />
Q<br />
On répète pour les sorties S[4] à S[0]<br />
+<br />
T H Q Q<br />
×<br />
×<br />
0<br />
1<br />
Q<br />
Q<br />
Q<br />
Q<br />
0<br />
1<br />
↑<br />
↑<br />
Q<br />
Q<br />
Q<br />
Q<br />
+<br />
× × 0 Q Q<br />
× × 1 Q Q<br />
0 0 ↑ Q Q<br />
0 1 ↑ 0 1<br />
1 0 ↑ 1 0<br />
1 1 ↑ Q Q<br />
12 novembre 2012 Circuits logiques - JP David 19<br />
Bascule T<br />
Bascule JK<br />
12 novembre 2012 Circuits logiques - JP David 20
D’une bascule D vers T<br />
Il est possible de modifier la table de Karnaugh d’une bascule D pour<br />
obtenir la table de Karnaugh pour une bascule T. Examinons les<br />
différents cas possibles de transitions d’états (Q -> Q+) :<br />
Q<br />
D<br />
0<br />
1<br />
00<br />
1 1<br />
0 1<br />
Q Q+ D T<br />
0 0 0 0<br />
0 1 1 1<br />
1 0 0 1<br />
1 1 1 0<br />
T = D<br />
T = D<br />
Exemple de table de Karnaugh :<br />
AB<br />
01 11<br />
10<br />
0 0<br />
1 0<br />
1 1<br />
1 0<br />
12 novembre 2012 Circuits logiques - JP David 21<br />
Q<br />
T<br />
0<br />
1<br />
00<br />
01<br />
AB<br />
11<br />
10<br />
0 0<br />
0 1<br />
D’une bascule D vers JK<br />
Il est possible de faire la même chose pour les bascules JK. Examinons<br />
les différents cas possibles de transitions d’états (Q -> Q+) :<br />
Q<br />
D<br />
Q Q+ D J K<br />
0 0 0 0 -<br />
0 1 1 1 -<br />
1 0 0 - 1<br />
1 1 1 - 0<br />
Exemple de table de Karnaugh :<br />
0<br />
1<br />
00<br />
01<br />
1 1<br />
0 1<br />
AB<br />
11<br />
10<br />
0 0<br />
1 0<br />
J = D, K = -<br />
J = - , K = D<br />
1 1<br />
- -<br />
0 - - - -<br />
Q<br />
12 novembre 2012 Circuits logiques - JP David 1 1 0 0 1 22<br />
Q<br />
J<br />
K<br />
0<br />
1<br />
00<br />
00<br />
AB<br />
01 11<br />
AB<br />
01 11<br />
10<br />
0 0<br />
- -<br />
10<br />
Q<br />
+<br />
1<br />
T 1 T 2<br />
00 01 11 10<br />
00 0 0 - 0<br />
01 0 1 - -<br />
Q 1 Q 0<br />
11 1 1 - 1<br />
10 1 0 - -<br />
Application aux feux<br />
Bascules D<br />
Bascules JK - J<br />
Q<br />
+<br />
0<br />
T 1 T 2<br />
00 01 11 10<br />
00 0 0 - 1<br />
01 1 1 - -<br />
Q 1 Q 0<br />
11 1 1 - 0<br />
10 0 0 - -<br />
T 1<br />
T 1 T 2 T<br />
00 01 11 10 0<br />
T 1 T 2<br />
00 01 11 10<br />
00 0 0 - 0 00 0 0 - 1<br />
01 0 1 - - 01 0 0 - -<br />
Q 1 Q 0 Q<br />
11 0 0 - 0<br />
1 Q 0<br />
11 0 0 - 1<br />
10 0 1 - - 10 0 0 - -<br />
Bascules T<br />
Bascules JK - K<br />
J 1<br />
T 1 T 2 J<br />
00 01 11 10 0<br />
T 1 T 2<br />
K 1<br />
T 1 T 2 K<br />
00 01 11 10<br />
00 01 11 10 0<br />
T 1 T 2<br />
00 01 11 10<br />
00 0 0 - 0 00 0 0 - 1<br />
00 - - - - 00 - - - -<br />
01 0 1 - - 01 - - - - Q 1 Q 0<br />
01 - - - - 01 0 0 - -<br />
Q 1 Q 0 Q<br />
11 - - - -<br />
1 Q 0 Q<br />
11 - - - -<br />
11 0 0 - 0<br />
1 Q 0<br />
11 0 0 - 1<br />
10 - - - - 10 0 0 - -<br />
10 0 1 - - 10 - - - -<br />
12 novembre 2012 Circuits logiques - JP David 23<br />
Q 1 :<br />
Q 0 :<br />
Analyse et comparaison de coût<br />
Avec D : 2 * (2 + 1) + (2 + 1) = 9<br />
Avec T : 2 * (3 + 1) + (2 + 1) = 11<br />
Avec JK : (2 + 1) + (2 + 1) = 6<br />
Avec D : 2 * (2 + 1) + (2 + 1) = 9<br />
Avec T : = 0<br />
Avec JK : = 0<br />
Meilleure combinaison<br />
Note : Lorsque plusieurs types ont des coûts égaux, on choisi en ordre de<br />
préférence les bascules D, les bascules T et finalement les bascules JK.<br />
12 novembre 2012 Circuits logiques - JP David 24