17.12.2013 Views

Cours 9

Cours 9

Cours 9

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!