Electronique : logique

Circuits séquentiels et mémoires : bascules, compteurs, stockage des données

Un circuit combinatoire oublie tout dès que ses entrées changent. Pour compter, pour attendre, pour se souvenir, il faut boucler la sortie d'une porte sur l'entrée d'une autre : le circuit acquiert alors un état, qui dépend de son passé. Cinq planches pour passer du verrou de deux portes aux mémoires de milliards de bits, en simulant chaque circuit délai après délai.

Deux inverseurs bouclés l'un sur l'autre ont deux états stables : si la sortie du premier vaut 1, celle du second vaut 0, ce qui maintient le premier à 1, et inversement. C'est un bit de mémoire. Tant que l'alimentation est là, il garde sa valeur. Toute la suite consiste à pouvoir écrire dans cette boucle au bon moment, puis à en assembler des milliards. Dans un circuit séquentiel synchrone, une horloge donne le rythme : les bascules ne changent d'état qu'à ses fronts, et entre deux fronts, la logique combinatoire a le temps de calculer l'état suivant.

La boucle de deux inverseurs garde son bit. Une impulsion d'écriture force brièvement la boucle, qui bascule puis conserve la nouvelle valeur une fois l'impulsion terminée.
MémoirePrincipeGarde le bit sans alimentation ?Usage
Bascule, registreportes boucléesnonétat du processeur, quelques centaines de bits
SRAMdeux inverseurs bouclés, 6 transistorsnonmémoires caches, rapides
DRAMcharge d'un condensateur, 1 transistornon, et il faut la rafraîchirmémoire vive principale, dense
Flashcharge piégée dans une grille isoléeoui, pendant des annéesclés USB, disques SSD, téléphones
Planche 1

Le verrou RS : deux portes qui se souviennent

Croisons deux portes NON-OU : la sortie de chacune entre dans l'autre. Tant que S et R restent à 0, chaque porte se contente d'inverser l'autre, et le verrou garde son état. Une impulsion sur S (set) force Q̅ à 0, donc Q à 1 ; une impulsion sur R (reset) fait l'inverse. Mais l'impulsion doit durer assez longtemps pour que le signal fasse le tour de la boucle : trop brève, elle est oubliée. Et activer S et R ensemble est interdit : les deux sorties tombent à 0, et si on les relâche au même instant, les deux portes repartent ensemble et le verrou oscille, faute de savoir de quel côté tomber. Dans un circuit réel, l'une finit par l'emporter au hasard : c'est la métastabilité.

Q = R + Q̅  ·  Q̅ = S + Q  ·  chaque porte réagit avec un délai d'une unité
Les deux portes NON-OU croisées, avec l'état de chaque fil. Rouge : 1 ; gris : 0.
Chronogramme en temps réel, en délais de porte : les commandes S et R, puis les sorties Q et Q̅. Le circuit est simulé porte par porte, un délai à la fois.
Commandes
État actuel du verrou
—
Durée minimale d'impulsion (essais de 1 à 6 délais)
—
Tour de boucle : 2 portes, soit 2 délais
—
Délai entre le début de S et la montée de Q (mesuré)
—
Après S et R relâchés ensemble : période d'oscillation mesurée
—
—
Planche 2

La bascule D : n'écouter qu'au front d'horloge

Le verrou réagit à tout instant ; un système synchrone veut au contraire que chaque bascule prenne sa nouvelle valeur à un instant précis, le front montant de l'horloge. La bascule D maître-esclave enchaîne deux verrous. Le maître est transparent quand l'horloge est basse : il suit l'entrée D. L'esclave est transparent quand l'horloge est haute : il recopie le maître. Au front montant, le maître se fige et l'esclave affiche ce qu'il contenait : Q prend la valeur de D à cet instant, et la garde jusqu'au front suivant. D doit cependant être stable un peu avant le front, le temps de prépositionnement, faute de quoi le maître n'a pas fini de basculer quand il se fige.

au front montant : Q ← D  ·  verrou D : S̅ = D·E, R̅ = D̅·E, puis deux NON-ET croisés  ·  maître : E = H ; esclave : E = H
Les deux verrous de la bascule. Le verrou transparent est entouré en vert, le verrou figé en gris.
Horloge H, entrée D, sortie du maître M et sortie Q. Les traits verticaux marquent les fronts montants ; le point indique la valeur capturée par Q.
Fronts où Q a capturé la nouvelle valeur de D
—
Temps de prépositionnement minimal (essais)
—
Temps de maintien : avance la plus tardive capturant encore l'ancienne valeur
—
Délai horloge → sortie (front montant → Q)
—
Portes de la bascule
—
—
Planche 3

Les compteurs : asynchrone ou synchrone

Une bascule qui s'inverse à chaque front divise la fréquence par deux. Dans le compteur asynchrone, chaque bascule est commandée par la précédente : c'est le plus simple, mais le changement se propage de bit en bit, et pendant ce temps la sortie affiche des valeurs fausses. Passer de 7 (0111) à 8 (1000) fait défiler 0110, 0100 et 0000. Pour compter jusqu'à 9 seulement, on remet tout à zéro dès que 10 apparaît : la valeur 10 existe donc brièvement. Dans le compteur synchrone, toutes les bascules reçoivent la même horloge, et une logique combinatoire calcule l'état suivant à l'avance : tous les bits changent ensemble, au prix de quelques portes de plus.

compteur asynchrone de n bits : jusqu'à n délais de bascule avant que la valeur soit juste  ·  synchrone : un seul délai
Les bascules du compteur et la valeur affichée, en temps réel. En orange, une valeur transitoire fausse.
Chronogramme : horloge H, bits Q0 à Qn−1 et valeur décimale lue sur les sorties. Les cases orange signalent les valeurs transitoires.
Compteur
Valeurs justes juste avant chaque front
—
Temps de stabilisation le plus long après un front (mesuré)
—
Prévision
—
Valeurs transitoires fausses observées
—
Fréquence d'horloge maximale (pour lire une valeur juste)
—
—
Planche 4

Les registres à décalage et les suites pseudo-aléatoires

Un registre à décalage aligne n bascules D, chacune recopiant la précédente à chaque front : les bits avancent d'une case par coup d'horloge. On s'en sert pour convertir un message série, reçu bit par bit sur un seul fil, en un mot parallèle, et inversement. Rebouclons maintenant l'entrée sur un OU exclusif de quelques sorties, les prises : on obtient un registre à rétroaction linéaire (LFSR). Avec des prises bien choisies, celles d'un polynôme primitif, il parcourt les 2n − 1 états non nuls avant de revenir au départ, en produisant une suite de bits qui a toutes les apparences du hasard. On l'utilise pour brouiller les signaux, tester les circuits, générer du bruit ou calculer des codes de contrôle (CRC).

bit entrant = OU exclusif des bits aux prises  ·  période maximale 2n − 1  ·  sur une période : 2n−1 uns et 2n−1 − 1 zéros, plus longue suite de 1 : n
Le registre et sa rétroaction : les bits avancent d'une case vers la droite à chaque coup d'horloge. En rouge, les cases reliées au OU exclusif.
La suite de bits sortie du registre (les plus récents à droite).
Prises (cliquer pour changer)
Période mesurée (pas avant de revenir à l'état de départ)
—
Période maximale 2n − 1
—
Nombre de 1 / de 0 sur une période
—
Plus longue suite de 1 (attendu n si période maximale)
—
Polynôme de rétroaction
—
—
Planche 5 · signature

Les mémoires : adresser, rafraîchir, corriger

Une mémoire est un immense tableau de bits. Trois questions se posent : comment désigner une case parmi des milliards, comment garder un bit quand il est stocké sous forme d'une charge qui fuit, et comment se protéger des bits qui basculent par accident, sous l'effet d'une particule cosmique ou d'une cellule défaillante.

Les bits sont rangés en lignes, ou mots. Une adresse de a bits entre dans un décodeur, qui active exactement une ligne parmi 2a : chaque bit d'adresse en plus double la capacité. À l'écriture, les bits du mot sont envoyés sur les colonnes et recopiés dans les cellules de la ligne active ; à la lecture, la ligne active pose son contenu sur les colonnes. L'animation écrit des mots dans une petite mémoire de 16 mots de 8 bits, puis les relit.

Le décodeur d'adresse (à gauche) active une ligne de la matrice ; les flèches indiquent le sens du transfert, écriture ou lecture.
Opération en cours
—
Mots relus identiques aux mots écrits
—
Capacité avec a bits d'adresse et des mots de 8 bits
—
—

Une cellule de DRAM stocke son bit comme une charge dans un minuscule condensateur, de l'ordre de 25 femtofarads, isolé par un seul transistor. La charge fuit : la tension décroît comme e−t/τ, et le bit devient illisible quand elle passe sous le seuil de lecture, ici la moitié de la tension écrite. Il faut donc relire et réécrire chaque ligne périodiquement : c'est le rafraîchissement, toutes les 64 ms dans les mémoires usuelles. Les constantes de temps varient beaucoup d'une cellule à l'autre (loi log-normale) ; ce sont les plus fuyantes qui fixent la période.

une cellule perd son bit si τ < Tr/ln 2  ·  fraction défaillante = Φ((ln(Tr/ln 2) − ln τm)/σ)
À gauche : tension de quelques cellules entre deux rafraîchissements, et seuil de lecture. À droite : répartition des constantes de temps de 200 000 cellules simulées ; à gauche du trait rouge, les cellules qui perdent leur bit.
Cellules défaillantes (simulation de 200 000 cellules)
—
Prévision par la loi log-normale · écart
—
Période maximale pour moins d'une défaillance par million
—
Constante de temps médiane τm
—
—

Le code de Hamming (1950) ajoute 3 bits de parité à 4 bits de données. Chaque bit de parité surveille un groupe différent de positions. Si un bit bascule, les parités fausses forment, écrites en binaire, la position du bit fautif : le syndrome. Il suffit de l'inverser pour corriger l'erreur. Une erreur simple est toujours corrigée ; deux erreurs dans le même mot, en revanche, trompent le code. Cliquez sur un bit du mot codé pour simuler une erreur.

mot non protégé (4 bits) : Perr = 1 − (1 − p)4  ·  Hamming (7,4) : Perr = 1 − (1 − p)7 − 7p(1 − p)6
Les 7 bits du mot codé (p : parité, d : donnée), les trois contrôles de parité, le syndrome, et le mot corrigé.
Mots faux sans protection (500 000 mots simulés)
—
1 − (1 − p)4 · écart
—
Mots faux après correction de Hamming
—
1 − (1 − p)7 − 7p(1 − p)6 · écart
—
Erreurs simples corrigées (les 7 positions × 16 mots essayés)
—
—

Repères historiques

Ce qu'il faut retenir

La boucle fait la mémoire

Deux portes croisées ont deux états stables. Le verrou les commande à tout instant ; la bascule D, faite de deux verrous en maître-esclave, ne change qu'au front d'horloge, à condition que D soit stable un peu avant.

Synchrone ou non

Les compteurs et registres assemblent des bascules. Le montage asynchrone est simple mais affiche des valeurs transitoires et ralentit avec le nombre de bits ; le montage synchrone fait tout changer ensemble. Un registre rebouclé par un OU exclusif produit une suite pseudo-aléatoire de période 2n − 1.

Des milliards de bits fiables

Le décodeur d'adresse sélectionne une ligne parmi 2a. La DRAM doit être rafraîchie avant que ses charges fuient ; les codes correcteurs, comme celui de Hamming, réparent les bits qui basculent.
Pour aller plus loin : modèles et calculs de contrôle

Planches 1 et 2. Simulation à délai unitaire : à chaque pas, chaque porte prend la valeur calculée à partir de ses entrées au pas précédent. Les durées minimales sont trouvées en rejouant la scène avec toutes les durées possibles. La bascule D comporte 2 inverseurs et 8 portes NON-ET.

Planche 3. Bascules de délai 1, porte de détection du modulo de délai 1, remise à zéro asynchrone (compteur asynchrone) ou chargement synchrone de 0 (compteur synchrone). La simulation porte sur 2M + 2 périodes d'horloge ; la valeur lue juste avant chaque front est comparée à la suite 0, 1, …, M − 1, 0, …

Planche 4. Registre de Fibonacci : le bit entrant est le OU exclusif des bits aux prises choisies. La période est comptée en faisant tourner le registre depuis l'état 1 jusqu'à ce qu'il y revienne. Les prises maximales proposées sont celles de polynômes primitifs connus.

Planche 5. DRAM : constantes de temps log-normales de médiane 2 s, graine fixe. Hamming : positions 1 à 7, parités aux positions 1, 2 et 4 ; erreurs indépendantes de probabilité p sur chaque bit ; un mot est compté faux si les 4 données décodées diffèrent des données d'origine.