Architecture Et Technologie Des Ordinateurs - 4 - Logique Séquentielle
Architecture Et Technologie Des Ordinateurs - 4 - Logique Séquentielle
Architecture Et Technologie Des Ordinateurs - 4 - Logique Séquentielle
Dans le chapitre précédent portant sur la logique combinatoire nous avons fait abstraction
du temps : les signaux de sortie ne dépendaient que des états des variables d'entrée. Pour les
circuits de logique séquentielle nous devons tenir compte de l'état du système. Ainsi les sorties
dépendent des entrées mais également de l'état du système. Celui-ci dépend aussi des entrées. Si
nous notons Q l'état d'un système séquentiel, X ses entrées et Y ses sorties, nous avons de
manière générale :
Q = f ( X, Q)
Y = g ( X, Q)
La logique séquentielle permet de réaliser des circuits dont le comportement est variable
avec le temps. L'état d'un système constitue une mémoire du passé.
Lorsque les changements d'état des divers composants d'un circuit séquentiel se
produisent à des instants qui dépendent des temps de réponse des autres composants et des temps
de propagation des signaux on parle de logique séquentielle asynchrone. Cependant les retards
peuvent ne pas être identiques pour toutes les variables binaires et conduire à certains aléas.
Ceux-ci peuvent être évités en synchronisant la séquence des diverses opérations logiques sur les
signaux périodiques provenant d'une horloge. La logique séquentielle est alors dite synchrone :
tous les changements d'état sont synchronisés sur un signal de contrôle.
Nous commençons notre étude par celle des bascules, éléments de base des circuits
séquentiels. Puis nous étudierons les registres et les compteurs.
Une bascule (flip-flop) a pour rôle de mémoriser une information élémentaire. C'est une
mémoire à 1 bit. Une bascule possède deux sorties complémentaires Q et Q . La mémorisation
fait appel à un verrou (latch) ou système de blocage, dont le principe de rétro-action peut être
représenté de la façon suivante :
B Q
Figure 1
(Q = 1) ⇒ (B = 1) ⇒ (Q = 0) ⇒ (A = 0) ⇒ (Q = 1)
(Q = 0) ⇒ (B = 0) ⇒ (Q = 1) ⇒ (A = 1) ⇒ (Q = 0)
Une bascule ne peut donc être que dans deux états : "1" (Q = 1, Q = 0) et "0" (Q = 0, Q = 1) . Les
interconnexions du verrou interdisent les deux autres combinaisons : Q = Q = 1 ou Q = Q = 0 .
Ce type de circuit, qui n'a que deux états stables possibles, est encore appelé circuit bistable.
Un verrou permet de conserver un état, il nous faut maintenant savoir comment charger
cet état.
Les verrous les plus fréquemment rencontrés sont réalisés avec deux portes NOR ou
NAND. Considérons dans un premier temps le circuit suivant :
R
Q
Q
S
Figure 2
S R Q Q
0 0 Q Q Sorties inchangées
1 0 1 0 Set : Remise à Un : RAU
0 1 0 1 Reset : Remise à Zéro : RAZ
1 1 0 0 A proscrire
Table 1
S S
Q
Q
R
R
Figure 3
S R S R Q Q
0 0 1 1 Q Q
1 0 0 1 1 0
0 1 1 0 0 1
1 1 0 0 1 1
Table 2
L'utilisation des deux inverseurs sur les lignes d'entrée nous permet de retrouver une table de
vérité comparable à celle de la bascule RS précédente.
S Q
R Q
Figure 4
On est souvent amené à commander un état physique à l'aide d'un bouton poussoir ou d'un
inverseur (par exemple les touches d'un clavier). Cependant lorsqu'on ferme un interrupteur le
contact n'est pas franc instantanément et on peut observer une série de rebonds du signal avant
d'obtenir la position fermée (fig. 5). Pour éviter ce défaut on réalise un montage équivalent à celui
présenté sur la figure 6 faisant appel à un inverseur et une bascule.
+5 V
I
S S
I
t
Figure 5
+5 V I
1 2 1
S
Q S
2 I 1
Q
R
t1 t2 t3t4
Figure 6
La bascule R.S.T. est une bascule pour laquelle les entrées S et R ne sont prises en compte
qu'en coïncidence avec un signal de commande. Ce signal peut être fourni par une horloge, nous
avons alors une bascule synchrone. Ce circuit peut être réalisé de la façon suivante et sa
représentation est donnée sur la figure 8.
S
Q
Clk
Q
R
Figure 7
Lorsque le signal de commande, noté ici Clk, est à 1 la bascule fonctionne comme indiqué
précédemment et les sorties suivent les variations des entrées S et R. Par contre, lorsque le signal
de commande est à 0, la bascule est bloquée : Q est indépendant des éventuels changements de S
et R. L'état mémorisé correspond au dernier état avant le passage de la ligne de commande de 1 à
0.
S Q
Clk
R Q
Figure 8
Dans un système synchrone le signal de commande est fourni par une horloge (clock).
Celui-ci est constitué par une succession périodique d'impulsions de largeur tp, supposée petite
devant la période T. L'état de chacune des sorties restera donc bloqué pendant les intervalles
séparant deux impulsions. Nous notons Qn la valeur de la sortie Q pendant le nième intervalle
précédant la nième impulsion et Qn+1 la valeur correspondante dans l'intervalle suivant la nième
impulsion (fig 9).
0 T (n-1)T nT (n+1)T t
Figure 9
Sn Rn Qn+1
0 0 Qn
1 0 1
0 1 0
1 1 ?
Table 3
La bascule J-K permet de lever l'ambiguïté qui existe dans la table 3. Ceci peut être
obtenu en asservissant les entrées R et S aux sorties Q et Q selon le schéma logique indiqué sur
la figure 10.
J
S Q
Q
Clk
K
R Q
Q
Figure 10
Jn Kn Qn Qn S R Qn+1
0 0 0 1 0 0 0
0 0 1 0 0 0 1
0 1 0 1 0 0 0
0 1 1 0 0 1 0
1 0 0 1 1 0 1
1 0 1 0 0 0 1
1 1 0 1 1 0 1
1 1 1 0 0 1 0
Table 4
Nous constatons que nous ne rencontrons jamais la combinaison R = S = 1. Cette table peut se
résumer sous la forme suivante :
Jn Kn Qn+1
0 0 Qn
0 1 0
1 0 1
1 1 Qn
Table 5
La figure 11 explicite le diagramme logique d'une bascule J-K. Le rôle des entrées Pr et Cr sera
étudié dans le prochain paragraphe.
Pr
J
Q
Clk
Q
K
Cr
Figure 11
Qn Qn+1 Jn Kn
0 0 0 X
0 1 1 X
1 0 X 1
1 1 X 0
Table 6
Comme les deux entrées ne sont jamais spécifiées simultanément il est possible de choisir pour
simplifier l'égalité des deux entrées :
J=K
On utilise parfois l'expression logique donnant Qn+1 en fonction de Jn, Kn et Qn. Pour cela
nous pouvons par exemple construire le tableau de Karnaugh à partir de la table de vérité
(table 4) de la bascule J-K :
JK
Q 00 01 11 10
0 1 1
1 1 1
D'où nous tirons l'équation caractéristique qui exprime l'état futur en fonction de l'état présent et
des entrées :
Q n +1 = J n Q n + K n Q n
Les entrées asynchrones (car à utiliser en absence de signal d'horloge, lorsque Clk = 0) Pr
(Preset) et Cr (Clear) permettent d'assigner l'état initial de la bascule, par exemple juste après la
mise sous tension pour éviter tout aléa. En fonctionnement normal ces deux entrées doivent être
maintenues à 1. Lorsque le signal d'horloge est à 0 nous avons la table de vérité suivante :
Pr Cr Q
1 1 Q
0 1 1
1 0 0
Table 7
La figure 12 donne la représentation symbolique d'une bascule J-K avec les entrées Preset et
Clear.
Pr
J Q
Clk
K Q
Cr
Figure 12
Jusqu'à présent nous avons construit les tables de vérité à partir de la logique combinatoire
qui suppose que les entrées sont indépendantes des sorties. Or dans la bascule J-K nous avons
introduit des connexions d'asservissement entre les entrées et les sorties. Ainsi supposons
qu'avant le signal d'horloge nous avons J = K = 1 et Q = 0 (notations de la figure 11). Lorsque le
signal d'horloge passe à 1 la sortie Q devient 1. Ce changement intervient après un intervalle de
temps ∆t. Nous avons alors J = K = Q = 1. D'après la table 4 nous voyons que la sortie Q doit
alors revenir à 0. Ainsi la sortie Q va osciller entre 0 et 1 pendant toute la durée du signal
d'horloge rendant le résultat ambigu.
Pour éviter ce problème on monte deux bascules R-S en cascade (fig. 13) en asservissant
les entrées de la première (Maître) aux sorties de la seconde (Esclave). D'autre part, le signal
d'horloge parvenant à l'esclave est inversé.
(Q M = 1, Q M = 0) ⇒ (S = 1, R = 0) ⇒ (Q n +1 = 1, Q n +1 = 0)
(Q M = 0, Q M = 1) ⇒ (S = 0, R = 1) ⇒ (Q n +1 = 0, Q n +1 = 1)
L'état de la bascule maître est transféré à la bascule esclave lors de la transition 1 → 0 (front
descendant) du signal d'horloge. Les changements d’état éventuels des sorties Q et Q
interviennent donc sur le front descendant du signal de commande Clk. Les entrées J et K qui
définissent le nouvel état de ces sorties sont prises en compte lorsque le signal Clk est à 1.
Pr
QM S
J Q
Clk
K R Q
QM
Cr
Figure 13
entrées synchrones J et K
temps de temps de
stabilisation maintien
Figure 14
Le problème de l’oscillation de la bascule J-K lorsque le signal Clk est haut, réglé par les
deux étages de la bascule maître-esclave, peut également être éliminé par l’utilisation d’un
détecteur de front. Un tel circuit produit en coïncidence avec le front montant ou le front
descendant du signal Clk une impulsion de largeur juste suffisante pour permettre un basculement
d’état. Les figures suivantes illustrent le principe d’un détecteur de front montant (fig. 15) et d’un
détecteur de front descendant (fig. 16). Une fois n’est pas coutume dans ce cours, nous tenons
compte d’un retard induit par l’inverseur.
Clk
Y
Clk
Clk
Figure 15
Clk
Y
Clk
Clk
Figure 16
Pr
J
Q
Détecteur
Clk de front
Q
K
Cr
Figure 17
La figure 18 présente les symboles d’une bascule déclenchée par le front montant et d’une
bascule déclenchée par le front descendant du signal de commande.
Pr Pr
J Q J Q
Clk Clk
K Q K Q
Cr Cr
Figure 18
IV.4.e Bascule D
Une bascule D (Delay) est obtenue à partir d'une bascule J-K en envoyant simultanément
une donnée sur l'entrée J et son inverse sur l'entrée K (fig. 19).
D n = 1 ⇒ (J n = 1, K n = 0) ⇒ Q n +1 = 1
D n = 0 ⇒ (J n = 0, K n = 1) ⇒ Q n +1 = 0
Pr
D J Q
H Clk
K Q
Cr
Figure 19
Pr
D Q
Clk
Q
Cr
Figure 20
Preset
4
Clear 3 6 Q
H 2 5 Q
1
D
Figure 21
Considérons le circuit schématisé sur la figure 21. Notons S1, S2, S3 et S4 les sorties des
portes NAND numérotées respectivement 1, 2, 3 et 4. En fonctionnement normal nous devons
avoir Clear = 1 pour ne pas bloquer les portes 1, 3 et 5 et Preset = 1 pour ne pas bloquer les portes
4 et 6. Pour H = 0 nous avons S2 = S3 = 1. Considérons maintenant le passage de H à 1.
1er cas : D = 1
Porte 1 : D = S2 = Clear = 1 ⇒ S1 = 0
Porte 2 : S1 = 0 ⇒ S2 = 1
Porte 4 : S1 = 0 ⇒ S4 = 1
Porte 3 : H = S4 = Clear = 1 ⇒ S3 = 0
Porte 6 : S3 = 0 ⇒ Q=1
Porte 5 : Q = S2 = Clear = 1 ⇒ Q=0
2ème cas : D = 0
Porte 1 : D=0 ⇒ S1 = 1
Porte 2 : H = S1 = S3 = 1 ⇒ S2 = 0
Porte 4 : S1 = S3 = Preset = 1 ⇒ S4 = 0
Porte 3 : S4 = 0 ⇒ S3 = 1
Porte 5 : S2 = 0 ⇒ Q =1
Porte 6 : S3 = Pr eset = Q = 1 ⇒ Q=0
Dans les deux cas nous vérifions que Q = D. Maintenant considérons une transition de D alors
que le signal H est encore à 1.
Porte 1 : D=0 ⇒ S1 = 1
Porte 2 : S3 = 0 ⇒ S2 = 1
Porte 4 : S3 = 0 ⇒ S4 = 1
Porte 3 : H = S4 = Clear = 1 ⇒ S3 = 0
Porte 1 : S2 = 0 ⇒ S1 = 1
Porte 2 : H = S1 = S3 = 1 ⇒ S2 = 0
Porte 4 : S1 = S3 = Preset = 1 ⇒ S4 = 0
Porte 3 : S4 = 0 ⇒ S3 = 1
Porte 5 : S2 = 0 ⇒ Q =1
Porte 6 : S3 = Pr eset = Q = 1 ⇒ Q=0
Dans les deux cas la sortie Q reste inchangée. Etudions maintenant les opérations de Remise à
Zéro et Remise à Un :
Preset = 0 et Clear = 1 :
Preset = 0 ⇒ S4 = Q = 1
si H = 0 alors S2 = 1
si H = 1 alors H = S4 = Clear = 1 ⇒ S3 = 0 ⇒ S2 = 1
Preset = 1 et Clear = 0 :
Clear = 0 ⇒ S1 = S3 = Q = 1
S3 = Q = Pr eset = 1 ⇒ Q=0
IV.4.g Bascule T
Figure 22
Tn Qn+1
1 Qn
0 Qn
Table 7
Pr
T Q
Clk
Q
Cr
Figure 23
D Q D Q D Q D Q
W
R
Q0 Q1 Q2 Q3
Figure 24
Dans un registre à décalage les bascules sont interconnectées de façon à ce que l'état
logique de la bascule de rang i puisse être transmis à la bascule de rang i+1 (ou i-1) quand un
signal d'horloge est appliqué à l'ensemble des bascules. L'information peut être chargée de deux
manières dans ce type de registre.
- Entrée parallèle : comme dans le cas d'un registre de mémorisation. En général une porte
d'inhibition est nécessaire pour éviter tout risque de décalage pendant le chargement parallèle.
- Entrée série : l'information est présentée séquentiellement bit après bit à l'entrée de la première
bascule. A chaque signal d'horloge un nouveau bit est introduit pendant que ceux déjà
mémorisés sont décalés d'un niveau dans le registre. La figure 25 schématise le chargement d'un
registre 4 bits en quatre coups d'horloge.
a4
a3 a4 top n° 1
a2 a3 a4 top n° 2
a1 a2 a3 a4 top n° 3
a1 a2 a3 a4 top n° 4
Figure 25
Sorties
parallèles
Sortie série Sortie série
Entrée décalage à gauche décalage à droite
série
Registre à décalage
Validation
entrée série
Horloge Entrées
parallèles
Décalage à droite
ou à gauche
Validation
entrées parallèles
Figure 26
La figure suivante donne un exemple de registre de 4 bits à entrée série et sortie parallèle
réalisé avec des bascules D.
S0 S1 S2 S3
E.S. D Q D Q D Q D Q S.S.
Figure 27
Ce type de registre permet de transformer un codage temporel (succession des bits dans le
temps) en un codage spatial (information stockée en mémoire statique).
E.S. D Q D Q S.S.
Clk Clk
H
X
E0 E1
Figure 28
Un registre à décalage à entrée parallèle et sortie série transforme un codage spatial en codage
temporel.
Pr Pr
E.S. D Q D Q
ClK ClK
Cr Cr
H
E0 E1
Figure 29
Clk = H + S0 • S1 = H • (S0 + S1 )
S0 + S1 = S0 • S1 = 1
Pour sélectionner le décalage à droite (entrée E1, sortie QD) il nous faut S0 = 1 et S1 = 0 et pour
le décalage à gauche (entrée E0, sortie QA) S0 = 0 et S1 = 1. Ce qui est résumé dans le tableau 8.
S1
S0
H
E1 A
R Cr
Clk
S
Q
QA
B
R Cr
Clk
S
Q
QB
C
R Cr
Clk
S
Q
QC
D E0
R Cr
Clk
S
Q
QD
Figure 30
Table 8
IV.7 Compteurs
Un compteur est un ensemble de n bascules interconnectées par des portes logiques. Ils
peuvent donc mémoriser des mots de n bits. Au rythme d'une horloge ils peuvent décrire une
séquence déterminée c'est-à-dire occuper une suite d'états binaires. Il ne peut y avoir au
maximum que 2n combinaisons. Ces états restent stables et accessibles entre les impulsions
d'horloge. Le nombre total N des combinaisons successives est appelé le modulo du compteur.
On a N ≤ 2n. Si N < 2n un certain nombre d'états ne sont jamais utilisés.
Considérons par exemple (fig. 31) un compteur modulo 8 suivant le code binaire pur
constitué de trois bascules J-K maîtres-esclaves. Supposons les trois bascules à zéro à l'instant
t = 0. Nous avons vu que pour une bascule maître-esclave la sortie change d'état juste après le
passage du signal d'horloge de l'état 1 à l'état 0 (front descendant). L'évolution temporelle des
trois sorties Q0, Q1 et Q2 par rapport aux impulsions d'horloge est représentée sur la figure 32. La
sortie Q0 bascule sur chaque front descendant du signal d'horloge. La sortie Q1 change d'état à
chaque transition 1 → 0 de la sortie Q0. De même le basculement de la sortie Q2 est déclenché
par une transition 1 → 0 de la sortie Q1.
J Q J Q J Q
H Clk Clk Clk
K Q K Q K Q
"1"
Figure 31
H 1 2 3 4 5 6 7 8
Q0
Q1
Q2
Figure 32
A partir de ce chronogramme nous pouvons écrire la liste des états successifs des trois sorties :
Impulsion Q2 Q1 Q0
état initial 0 0 0
1 0 0 1
2 0 1 0
3 0 1 1
4 1 0 0
5 1 0 1
6 1 1 0
7 1 1 1
8 0 0 0
Table 9
Nous constatons que les sorties Q0, Q1 et Q2 fournissent des signaux périodiques de
fréquences respectivement 2, 4 et 8 fois plus faibles. La division de fréquence est une des
applications des compteurs.
X = 1 ⇒ compteur;
X = 0 ⇒ décompteur.
Qi Q i+1
Figure 33
Pour RAZ : R = 0
Chargement : (DS = 0, R = 1)
Dans ces deux cas nous obtenons Q = D. Nous sommes donc capable de charger chaque bit du
compteur avec une valeur donnée à présenter sur l'entrée D, donc d'initialiser le compteur.
Pr
J Q
ClK
K Q
Cr
D.S.
R
D
Figure 34
On peut souhaiter compter jusqu'à un nombre N qui ne soit pas une puissance de 2, par
exemple 10 (système décimal). Pour cela on utilise un compteur de n bascules, tel que 2n > N. On
lui ajoute un asservissement de l'entrée Clear pour remettre le compteur à zéro tous les N coups.
Considérons par exemple un compteur modulo 10. Nous voulons que l'entrée Clear soit à
0 lorsque le compteur atteint 1010 = 10102. Pour cela nous pouvons écrire l'expression logique :
Cr = Q 3 • Q 2 • Q1 • Q 0
En fait dans ce cas particulier nous pouvons simplifier cette relation logique en ne tenant compte
de ce que des sorties à 1 dans l'expression binaire de N. En effet il ne peut y avoir ambiguïté :
toute combinaison contenant les mêmes sorties à 1 et au moins une autre à 1 correspond à un
nombre plus grand que N et ne peut être rencontrée dans la séquence décrite par le compteur.
Pour un compteur modulo 10 nous pouvons donc utiliser :
Cr = Q 3 • Q1
ce qui nous conduit au schéma suivant :
Q0 Q1 Q2 Q3
J Q J Q J Q J Q
H Clk Clk Clk Clk
K Cr K Cr K Cr K Cr
"1"
Figure 35
Q0
Q1
Q2
Q3
Figure 36
Dans un compteur synchrone toutes les bascules reçoivent en parallèle le même signal
d'horloge. Pour faire décrire au compteur une séquence déterminée il faut à chaque impulsion
d'horloge définir les entrées synchrones J et K. Pour cela on utilise la table de transition de la
bascule J-K (table 6). Nous avons déjà remarqué que cette table peut se simplifier. En effet, pour
chacune des quatre transitions possibles une seule des entrées J ou K est définie. Rien ne nous
interdit donc de les mettre dans le même état, c'est-à-dire J = K, comme dans une bascule T.
Prenons l'exemple d'un compteur synchrone 3 bits fonctionnant selon le code binaire pur.
Nous pouvons dresser un tableau précisant les valeurs des entrées J et K permettant d'obtenir
chaque transition (passage d'une ligne à la suivante). Pour qu'une bascule change d'état il faut que
ses deux entrées soient à 1.
# top Q2 Q1 Q0 J2 = K2 J1 = K1 J0 = K0
0 0 0 0 0 0 1
1 0 0 1 0 1 1
2 0 1 0 0 0 1
3 0 1 1 1 1 1
4 1 0 0 0 0 1
5 1 0 1 0 1 1
6 1 1 0 0 0 1
7 1 1 1 1 1 1
8 0 0 0
Table 10
J 0 = K 0 = 1
J1 = K 1 = Q 0
J 2 = K 2 = Q 0 • Q1
De manière générale nous pouvons vérifier que les équations de commutation satisfont les
relations de récurrence suivantes :
J 0 = K 0 = 1
J i = K i = Q 0 • Q1 • ... • Q i −1
ou encore :
J 0 = K 0 = 1
J i = K i = J i −1 • Q i − 1
Procédons de même pour réaliser un décompteur, nous écrivons la table des transitions
recherchées :
# top Q2 Q1 Q0 J2 = K2 J1 = K1 J0 = K0
0 1 1 1 0 0 1
1 1 1 0 0 1 1
2 1 0 1 0 0 1
3 1 0 0 1 1 1
4 0 1 1 0 0 1
5 0 1 0 0 1 1
6 0 0 1 0 0 1
7 0 0 0 1 1 1
8 1 1 1
Table 11
J 0 = K 0 = 1
J1 = K 1 = Q 0
J 2 = K 2 = Q 0 • Q1
Aux deux manières d'exprimer les relations de récurrence des équations de commutation
correspondent deux types de circuits. Le premier (fig. 37) est dit à report parallèle, le second
(fig. 38) à report série. Dans le report série on utilise la fonction Ji-1. On évite ainsi des portes à
multiples entrées. Par contre, il faut tenir compte du retard dans l'établissement de Ji-1. Il faut
donc que la largeur des impulsions d'horloge soit assez grande et la vitesse maximum de
fonctionnement sera plus faible que pour le report parallèle.
Les deux schémas présentés sur les figures 37 et 38 correspondent à des compteurs-décompteurs
(X = 0 ⇒ compteur, X = 1 ⇒ décompteur).
J Q J Q J Q J Q
"1" Clk Clk Clk Clk
K Q K Q K Q K Q
Figure 37
J Q J Q J Q J Q
"1" Clk Clk Clk Clk
K Q K Q K Q K Q
Figure 38