Circuits séquentiels#
Se souvenir d'un bit#
Jusqu'ici, tous nos circuits étaient combinatoires : leur sortie ne dépend que de la valeur des entrées à l'instant présent. Un additionneur ou un multiplexeur oublient tout dès qu'on change leurs entrées, ils n'ont aucun passé. C'est parfait pour calculer, mais un ordinateur doit aussi retenir des informations : le contenu d'une case mémoire, un résultat en attente d'être réutilisé, le nombre de tours déjà effectués dans une boucle, etc. Il nous faut donc une nouvelle famille de circuits, capables de se souvenir d'une valeur même quand les entrées changent ou disparaissent.
On appelle ces circuits des circuits séquentiels : leur sortie dépend non seulement des entrées du moment, mais aussi de ce qui s'est passé avant, c'est-à-dire de leur état. Ce sont eux qui serviront de brique de base aux registres, de petites mémoires internes au processeur.
L'ingrédient qui rend cette mémoire possible dans nos circuits logiques est la rétroaction (ou feedback). Il s'agit d'un fil qui reboucle une sortie vers une entrée du même circuit. Dans un circuit combinatoire, l'information circulait toujours dans un seul sens, des entrées vers la sortie. Avec la rétroaction, la sortie peut désormais influencer sa propre entrée.
Voici ci-dessous un circuit séquentiel très simple. La sortie de la porte OU est réingurgitée dans l'une de ses entrées. Quel effet ce branchement a-t-il sur le bit de sortie ?
La bascule SR#
Le circuit séquentiel le plus simple s'appelle la bascule SR (ou SR latch,
"S" pour set et "R" pour reset). Il se construit avec deux portes NON-OU
(ou NOR, ¬(a ∨ b)) dont les sorties sont croisées :
La bascule SR : deux portes NON-OU dont les sorties sont croisées.#
Deux entrées commandent ce circuit :
S(set, "mettre à 1") : demande de faire passer la mémoire à1;R(reset, "remettre à 0") : demande de faire passer la mémoire à0.
Et deux sorties, toujours opposées l'une à l'autre sauf dans un cas particulier :
Q: la valeur retenue par la bascule, celle qui nous intéresse ;¬Q: son complément, l'inverse deQ.
Voici le comportement de ce circuit :
|
|
|
Effet |
|---|---|---|---|
|
|
|
on met la mémoire à |
|
|
|
on efface la mémoire (remise à |
|
|
valeur précédente |
la mémoire garde sa valeur |
|
|
interdit |
état incohérent, à éviter |
Essayez la bascule SR avec le composant de Logix ci-dessous.
La bascule D#
La bascule SR a deux défauts. Premièrement, la
combinaison S = R = 1 est interdite. Même si elle ne pose pas de problèmes dans le simulateur Logix, il faut toujours veiller à ne jamais l'envoyer par erreur dans un vrai circuit électrique. Le deuxième problème est plus subtil : rien dans ce circuit ne permet de synchroniser le changement de données avec d'autres bascules SR. Dans la mémoire d'un processeur, cela est primordial.
La bascule D (D pour data) corrige ces deux défauts. Le bit d'entrée
D commande le set et le reset : la combinaison interdite S = R = 1 ne peut jamais
se produire. Elle ne possède plus qu'une seule entrée de donnée, D, accompagnée
d'une seconde entrée un peu particulière : l'horloge, notée clk (de l'anglais clock). Une horloge est
un signal qui bat régulièrement, en alternant entre 0 et 1, un peu comme le
tic-tac d'une horloge murale ou le métronome qui donne la mesure à tout un
orchestre. Lorsque l'horloge passe de 0 à 1, on parle d'un flanc montant.
Le symbole de la bascule D : la donnée D, l'horloge clk (petit triangle), et
la sortie Q.#
Le comportement de la bascule D tient en une phrase : sur le moment exact de chaque flanc montant de clk, la valeur de D est recopiée dans Q. Entre deux flancs montants, Q conserve sa valeur. Vous pouvez voir la bascule D comme une sorte d'appareil photo : même si l'image devant l'objectif change, on ne capture l'image que pile lorsqu'on appuie sur le déclencheur.
|
Flanc montant |
|
|---|---|---|
|
non |
garde sa valeur |
|
oui |
|
|
oui |
|
Exercices#
Exercice 32#
Un boîtier d'alarme de voiture est commandé par une bascule SR : le bouton S
arme l'alarme (Q = 1 signifie "alarme active"), le bouton R la
désarme. Quand aucun des deux boutons n'est pressé (S = 0, R = 0),
l'alarme garde son état précédent : c'est la mémoire de la bascule.
Voici, étape par étape, l'état des boutons. Au départ, avant l'étape 1, l'alarme
est désactivée : Q = 0. Complétez la valeur de Q après chaque étape.
étape |
|
|
|
|---|---|---|---|
1 |
|
|
|
2 |
|
|
|
3 |
|
|
|
4 |
|
|
|
5 |
|
|
|
6 |
|
|
Exercice 33#
Le même boîtier envoie l'état d'une porte à un petit écran, cette fois avec une
bascule D. Une horloge interne génère un top toutes les secondes ; à
chaque top, la bascule recopie sur Q la valeur qui se trouvait sur son entrée
D juste avant (D = 1 signifie "porte ouverte"). Entre deux tops, Q reste
inchangé, même si D varie.
Voici la valeur de D mesurée juste avant chacun des six tops. Au départ, avant
le premier top, l'écran affiche Q = 0. Complétez Q après chaque top.
top |
|
|
|---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
|
|
6 |
|