Construisons un élément de mémorisation

Le verrou RS (SR latch)

Notre objectif est de construire un circuit capable de conserver une information binaire aussi longtemps que souhaité, et de la mettre à jour au moment souhaité. Pris individuellement, les circuits logiques que nous connaissons savent uniquement calculer des sorties en fonction de leurs entrées. L’astuce consiste à construire un circuit qui forme une boucle comme dans le schéma suivant :

Cellule de mémorisation élémentaire

Grâce à la propriété Q=Q\overline{\overline Q} = Q, la sortie QQ conserve sa valeur tant que les inverseurs sont alimentés. Cependant, ce circuit ne permet pas de mettre à jour cette valeur.

Certaines portes logiques ont la propriété de se comporter comme un inverseur lorsqu’une de leurs entrées est fixée à une valeur bien choisie. C’est le cas, par exemple, de la porte NON-OU, dont nous rappelons la table de vérité ci-dessous :

aa bb a+b\overline{a + b}
0 0 1
0 1 0
1 0 0
1 1 0

Réécrivons cette table de vérité pour faire apparaître bb dans la colonne de sortie :

aa a+b\overline{a + b}
0 b\overline b
1 0

Ainsi, lorsque nous fixons l’entrée aa d’une porte NON-OU à 0, elle se comporte comme un inverseur vis-à-vis de l’entrée bb. Lorsque nous fixons l’entrée aa à 1, la sortie vaut 0.

En mettant deux portes NON-OU tête-bêche, nous pourrons les utiliser comme deux inverseurs, comme dans le schéma précédent. L’entrée aa des portes NON-OU sera utilisée pour injecter une nouvelle valeur dans la boucle lorsque nous souhaiterons mémoriser une nouvelle information.

Verrou RS avec des portes NON-OU

Le circuit représenté ci-dessus s’appelle un verrou RS (en anglais SR latch). Les entrées RR et SS sont utilisées de la manière suivante :

Ainsi, les deux premiers cas permettent de donner la valeur de notre choix à QQ. Le troisième cas permet de verrouiller la dernière valeur qui a été affectée.

Fonctionnement d'un verrou RS

En fonctionnement normal, la sortie nQnQ est toujours égale à Q\overline Q. La combinaison R=S=1R = S = 1 ne vérifie pas cette propriété et n’est pas utilisée en pratique.

Les entrées RR et SS sont nommées d’après leur rôle : « S » comme « Set », utilisé dans le sens de « activer » (mettre à 1) ; « R » comme « Reset », utilisé dans le sens de « réinitialiser » (mettre à 0).

R S Q Opération
0 0 QprecQ_{prec} Maintien
0 1 1 Écriture d’un 1 (Set)
1 0 0 Écriture d’un 0 (Reset)

Voici le symbole d’un verrou RS :

Symbole d'un verrou RS

Le verrou D (D latch)

Dans un verrou RS, les entrées RR et SS servent à la fois à sélectionner l’opération à effectuer (maintien ou écriture) et à indiquer la valeur à écrire (0 ou 1). Il n’y a pas de séparation entre les commandes et les données.

Dans un verrou D, il existe une entrée DD (Data) qui indique la valeur de la donnée à écrire et une entrée EE (Enable) qui autorise la mise à jour de la donnée mémorisée. Son fonctionnement peut être résumé par le tableau suivant :

E D Q Opération
0 QprecQ_{prec} Maintien
1 0 0 Écriture d’un 0
1 1 1 Écriture d’un 1

Ou plus simplement :

E Q Opération
0 QprecQ_{prec} Maintien
1 DD Écriture

Le symbole d’un verrou D est illustré ci-dessous :

Symbole d'un verrou D

Structure interne d’un verrou D

Il est possible de construire un verrou D à partir d’un verrou RS et de quelques portes. Voici une solution possible :

Réalisation d'un verrou D avec un verrou RS

On dit qu’un verrou D est transparent pendant toute la durée où son entrée EE est active. Pendant cette durée, la sortie QQ suit les variations de DD (cf les régions colorées sur le chronogramme ci-dessous). Lorsque EE est à zéro, le verrou ignore les variations de DD et maintient sa sortie QQ stable.

Exemple de scénario de fonctionnement d'un verrou D

La bascule D (D flip-flop)

Dans une bascule D, l’opération d’écriture est un événement ponctuel. La mise à jour de QQ s’effectue à des instants précis identifiés par les fronts d’une entrée de commande appelée horloge et souvent nommée CLKCLK (clock) – on parle de front montant (rising edge) lorsque l’entrée horloge passe de 0 à 1 et de front descendant (falling edge) lorsque l’entrée horloge passe de 1 à 0.

Le chronogramme ci-dessous met en évidence la différence entre une bascule et un verrou D. Ici, les mises à jour de QQ ont lieu sur les fronts montants de CLKCLK.

Exemple de scénario de fonctionnement d'une bascule D

Par convention, nous représentons le signal d’horloge avec des fronts bien verticaux car nous nous intéressons uniquement aux instants où ces fronts se produisent. Les transitions sur les autres signaux sont représentées avec une pente qui permet de séparer les deux valeurs successives dans le temps.

Le symbole d’une bascule D ressemble à celui d’un verrou D. Le triangle devant l’entrée CLKCLK indique que la bascule met sa sortie QQ à jour sur des fronts de CLKCLK. La bascule représentée ci-dessous réagit à des fronts montants de CLKCLK. On peut ajouter un petit cercle devant l’entrée CLKCLK pour représenter une bascule qui réagit aux fronts descendants.

Symboles des bascules D

La bascule D est le composant de mémorisation le plus utilisé dans les circuits numériques récents. Dans la suite de ce chapitre, nous n’utiliserons quasiment pas de verrous.

Structure interne d’une bascule D

Il existe différentes techniques pour réaliser une bascule D. Dans l’exemple ci-dessous, nous avons utilisé deux verrous D en cascade. Cette structure est appelée maître-esclave (master-slave).

Réalisation d'une bascule D avec des verrous D

Quand CLKCLK vaut 0, le verrou maître est transparent pendant que le verrou esclave maintient la sortie QQ stable. Au front montant de CLKCLK, le verrou maître passe en mode maintien et verrouille la valeur de QmQ_m. Pendant toute la durée où CLKCLK vaut 1, le verrou esclave laisse passer la valeur de QmQ_m. Le chronogramme ci-dessous illustre le fonctionnement de ce circuit. Les régions colorées représentent les intervalles de temps où chaque verrou est transparent, en bleu pour le verrou maître et en orange pour le verrou esclave.

Fonctionnement d'une bascule D réalisée avec des verrous D

La présence d’une double inversion sur l’entrée EE du verrou esclave peut sembler superflue. Pourquoi ne pas avoir simplement relié EE à CLKCLK ? Il s’agit d’une précaution qui exploite le fait que l’opération d’inversion prend du temps. Ainsi, le verrou maître passe en mode maintien en premier et le verrou esclave devient transparent légèrement plus tard, à un moment où la valeur de QmQ_m est stabilisée.

Bascule D avec entrée de validation

Les bascules D possèdent systématiquement les entrées/sorties suivantes :

Typiquement, l’entrée CLKCLK est reliée à un oscillateur qui produit un signal carré. Les fronts d’horloge se succèdent ainsi périodiquement pendant toute la durée où le système est en fonctionnement. Si l’on ne souhaite pas effectuer une mémorisation systématiquement sur tous les fronts d’horloge, on peut utiliser une bascule avec une entrée EE (Enable). La sortie QQ ne se mettra à jour que sur les fronts d’horloge où EE vaut 1.

Bascule D avec entrée de validation

Bascule D avec entrées de réinitialisation

Optionnellement, on trouvera des bascules avec les entrées suivantes :

Les entrées SS et RR peuvent être asynchrones ou synchrones. Asynchrones, elles prennent effet immédiatement, comme dans un verrou RS. Synchrones, elles prennent effet sur un front de CLKCLK.

Bascule D avec entrées de réinitialisation

Les entrées de réinitialisation asynchrones permettent d’affecter une valeur à une bascule au démarrage – ou au redémarrage – du circuit.

Pour donner une nouvelle valeur à une bascule au cours du fonctionnement normal du circuit, il faut la présenter sur l’entrée DD et attendre un front d’horloge.

Contraintes de temps

Pour bien utiliser une bascule D, il faut imaginer qu’elle lit son entrée D à l’instant où le front d’horloge se produit et qu’elle met à jour sa sortie Q juste après le front d’horloge.

En réalité, le bon fonctionnement d’un bascule D nécessite que l’entrée D soit stable pendant une certaine durée avant et après le front d’horloge. La sortie Q est alors mise à jour au bout d’un petit délai après le front d’horloge. La documentation constructeur d’une bascule D fournit généralement les grandeurs suivantes :

Sur le chronogramme ci-dessous, D est stable assez longtemps avant et après le front d’horloge. La donnée représentée en bleu est correctement copiée sur Q après le front d’horloge.

Contraintes de temps des bascules D

Métastabilité

Si D change de valeur à un instant trop proche du front d’horloge, la bascule peut entrer dans un état appelé métastable. Son comportement devient imprévisible. Sa sortie peut mettre un temps anormalement long à se stabiliser sans garantie que la valeur finale sera celle attendue.

Résumé

Un verrou ou une bascule est un élément de mémorisation qui permet de conserver un bit d’information. La valeur mémorisée est disponible sur une sortie QQ.

Une bascule D possède une entrée de donnée DD, une entrée horloge CLKCLK et une sortie QQ. Elle mémorise la valeur de son entrée DD sur des fronts de son entrée horloge.

Une bascule D peut posséder une entrée de validation EE et des entrées de réinitialisation SS et RR. Les entrées de réinitialisation peuvent prendre effet de façon synchrone (sur front d’horloge) ou asynchrone (sans attendre un front d’horloge).