Apprendre › Chapitre 9
Verrous (latches) et bascules : SR, D, JK et T pas à pas
7 min de lecture · Équipe bitGateLab
Jusqu'ici, les sorties de vos circuits ne dépendaient que des entrées du moment. Pour compter, conserver une donnée ou se souvenir de l'étape où en est un processus, il vous faut de la mémoire, et la plus petite cellule mémoire est le verrou, ou latch. Vous allez construire ici un verrou avec deux portes, le transformer en bascule (flip-flop) déclenchée sur front et utiliser les tables dont vous aurez besoin pour concevoir des compteurs et des machines à états.
Le verrou SR
Deux portes NOR dont les sorties sont croisées vers les entrées forment un verrou SR. C'est la rétroaction qui crée la mémoire : une fois que la sortie a pris une valeur, elle se maintient toute seule.
| S | R | Q suivant | Action |
|---|---|---|---|
| 0 | 0 | Q | Maintien |
| 0 | 1 | 0 | Reset |
| 1 | 0 | 1 | Set |
| 1 | 1 | — | Interdit |
Avec S = R = 1, les deux NOR fournissent 0, si bien que Q et Q cessent d'être complémentaires. Pire encore : si les deux entrées repassent ensuite à 0 en même temps, l'état final dépend de la porte la plus rapide. C'est pourquoi cette combinaison est interdite. Son équation caractéristique, valable à la condition S·R = 0, est Q+ = S + R·Q.
Avec des portes NAND, on obtient le verrou SR, à entrées actives à l'état bas : 11 maintient, 01 force Q = 1, 10 force Q = 0 et 00 est la combinaison interdite (les deux sorties à 1).
Le verrou D : transparent tant qu'il est validé
Pour éliminer la combinaison interdite, on ajoute une entrée de validation EN et l'on génère S = D·EN et R = D·EN. Comme S et R ne valent jamais 1 en même temps, le problème disparaît. Le comportement est simple :
- EN = 1 : le verrou est transparent, Q suit D à tout instant.
- EN = 0 : Q se fige sur la dernière valeur qu'avait D.
La transparence est le point faible du verrou. Si vous reliez la sortie d'un verrou à sa propre entrée à travers de la logique, le signal peut faire plusieurs tours tant que EN = 1 et le résultat est imprévisible. Pour les circuits séquentiels synchrones, il faut un élément qui capture la donnée à un instant unique.
Bascules déclenchées sur front
Une bascule D déclenchée sur front montant recopie D sur Q uniquement à l'instant où l'horloge passe de 0 à 1. Le reste du temps, elle ignore D. On la construit avec deux verrous D en cascade (maître et esclave) dont les validations sont opposées : tant que l'horloge est à 0, le maître suit D et l'esclave est fermé ; lorsque l'horloge monte, le maître se ferme et l'esclave transmet à la sortie la valeur capturée. Son équation est la plus simple qui soit : Q+ = D.
À partir de cette bascule de base, on définit deux autres types très utilisés en conception :
- JK : comme la SR, mais sans combinaison interdite. J = K = 1 fait changer Q (basculer) à chaque front. Équation :
Q+ = J·Q + K·Q. - T (toggle) : avec T = 0 elle maintient, avec T = 1 elle bascule. Équation :
Q+ = T ⊕ Q. On l'obtient à partir d'une JK avec J = K = T, ou d'une D avec D = T ⊕ Q.
| J | K | Q+ | Action |
|---|---|---|---|
| 0 | 0 | Q | Maintien |
| 0 | 1 | 0 | Reset |
| 1 | 0 | 1 | Set |
| 1 | 1 | Q | Basculement |
Exemple : une bascule JK part de Q = 0 et reçoit cinq fronts avec (J, K) = (1,0), (0,0), (1,1), (0,1), (1,1). Appliquez Q+ = J·Q + K·Q à chacun :
- (1,0), Q = 0 : 1·1 + 1·0 = 1.
- (0,0), Q = 1 : 0·0 + 1·1 = 1 (maintien).
- (1,1), Q = 1 : 1·0 + 0·1 = 0 (basculement).
- (0,1), Q = 0 : 0·1 + 0·0 = 0.
- (1,1), Q = 0 : 1·1 + 0·0 = 1 (basculement).
Suite des valeurs de Q après chaque front : 1, 1, 0, 0, 1.
Tables d'excitation
La table caractéristique répond à la question « étant donné les entrées, où va Q ? ». Pour concevoir, il faut la question inverse : « je veux que Q passe de telle valeur à telle autre, quelles entrées dois-je appliquer ? ». C'est la table d'excitation, et vous allez l'utiliser pour chaque compteur et chaque machine à états.
| Q → Q+ | D | T | J K | S R |
|---|---|---|---|---|
| 0 → 0 | 0 | 0 | 0 X | 0 X |
| 0 → 1 | 1 | 1 | 1 X | 1 0 |
| 1 → 0 | 0 | 1 | X 1 | 0 1 |
| 1 → 1 | 1 | 0 | X 0 | X 0 |
Les X de la JK expliquent pourquoi cette bascule donne souvent des équations plus courtes : pour passer de 0 à 1, peu importe que K vaille 0 (set) ou 1 (basculement), et cette liberté s'exploite dans le tableau de Karnaugh.
Temps de setup, de hold et fréquence maximale
Une bascule réelle a besoin que D soit stable un certain temps avant le front, le temps de setup ou de prépositionnement (tsu), et qu'il le reste un certain temps après, le temps de hold ou de maintien (th). Si D change à l'intérieur de cette fenêtre, la sortie peut rester un moment à un niveau intermédiaire avant de se décider : c'est la métastabilité. De plus, la sortie met un temps tCQ à changer après le front.
Dans un circuit synchrone, le signal sort d'une bascule, traverse de la logique combinatoire et arrive à la bascule suivante. La période minimale de l'horloge est :
Tmin = tCQ + tlogique + tsu
Exemple : tCQ = 15 ns, le chemin combinatoire le plus long met 20 ns et tsu = 5 ns.
Tmin = 15 + 20 + 5 = 40 ns, donc fmax = 1 / 40 ns = 25 MHz.
Pour le hold, on considère le chemin le plus court : si le tCQ minimal vaut 5 ns et qu'il n'y a pas de logique entre deux bascules, la nouvelle donnée arrive 5 ns après le front. Avec th = 3 ns, la contrainte est respectée, car 5 ns ≥ 3 ns.
Erreurs fréquentes
- Confondre verrou et bascule : le verrou réagit au niveau de la validation, la bascule au front de l'horloge.
- Utiliser la table caractéristique alors que la conception demande la table d'excitation.
- Oublier que, dans le verrou à NAND, les entrées sont actives à l'état bas et que la combinaison interdite est 00, et non 11.
- Changer D juste sur le front de l'horloge et s'attendre à un résultat défini.
- Laisser non connectées les entrées asynchrones preset et clear d'une bascule réelle : elles doivent être reliées à leur niveau inactif.
Essayez dans le simulateur
La différence entre verrou et bascule saute aux yeux sur un chronogramme. Réalisez les deux et attaquez-les avec le même signal.
- Placez deux portes NOR et reliez la sortie de chacune à une entrée de l'autre ; ajoutez les entrées S et R ainsi que deux voyants.
- Changez S et R pour vérifier les quatre lignes de la table, y compris la ligne interdite, et observez que Q et Q valent alors 0 en même temps.
- Placez un verrou D et une bascule D, puis reliez aux deux la même entrée de donnée et le même signal d'horloge ou de validation.
- Ouvrez le chronogramme et changez D plusieurs fois pendant que l'horloge est à 1 : le verrou suit les changements, tandis que la bascule ne retient que la valeur présente au front montant.
- Recommencez avec une bascule JK avec J = K = 1 et observez que la fréquence de sa sortie est la moitié de celle de l'horloge.
Exercices
- Une bascule T part de Q = 1 et reçoit T = 1, 1, 0, 1 sur quatre fronts. Quelles valeurs prend Q ?
Réponse
Q+ = T ⊕ Q : 1⊕1 = 0, 1⊕0 = 1, 0⊕1 = 1, 1⊕1 = 0. Suite : 0, 1, 1, 0.
- Quelles valeurs de J et K faut-il pour qu'une bascule passe de Q = 1 à Q = 0 ?
Réponse
J = X, K = 1. Avec K = 1 et J = 0, on fait un reset ; avec J = K = 1, elle bascule. Les deux options amènent Q à 0.
- Avec tCQ = 12 ns, tsu = 4 ns et une fréquence visée de 40 MHz, combien de temps la logique entre bascules peut-elle mettre au maximum ?
Réponse
T = 1 / 40 MHz = 25 ns. tlogique ≤ 25 − 12 − 4 = 9 ns.
- Écrivez l'équation de D pour qu'une bascule D se comporte comme une JK.
Réponse
D = J·Q + K·Q, c'est-à-dire l'équation caractéristique de la JK.
Avec ces éléments, vous pouvez passer aux compteurs et registres, puis aux machines à états.