Bascules (Flip-flops)

Les loquets peuvent remplir le rôle de mémoriser des valeurs binaires, mais le fait que les changements d’état soient activés par un niveau pose des difficultés. En effet, si les valeurs à l’entrée changent pendant que le signal de contrôle est actif, la valeur qui sera mémorisée par la rétroaction sera la dernière qui aura eu le temps de s’y établir, qui ne sera pas nécessairement la valeur souhaitée. Si la sortie du loquet est acheminée, directement ou à travers un circuit combinatoire, vers ses entrées ou les entrées d’autres loquets (activés par le même signal de contrôle) dans une boucle du circuit séquentiel, il se peut que les délais de propagation et de prise en compte des entrées fassent que la sortie globale du circuit séquentiel soit imprévisible.

La conception des bascules vise à corriger ce problème, en établissant un instant précis et prévisible de déclenchement où les valeurs d’entrée seront prises en compte systématiquement. Le concept essentiel est que l’état d’une bascule est modifié uniquement au moment où il y a un changement dans son signal de contrôle. Ce changement momentané est appelé transition et on dit que c’est la transition qui provoque le changement d’état qui déclenche la bascule.

On parlera de déclenchement sur le front montant lorsque la transition qui provoque le déclenchement passe d’un niveau bas vers un niveau élevé, et de déclenchement sur le front descendant dans le cas d’une transition du haut vers le bas. On illustre parfois le front de déclenchement au moyen d’une flèche, comme on peut le voir sur la figure suivante.

Signaux d'horloge avec fronts de déclenchement. Signaux d’horloge avec fronts de déclenchement

Bascule D

Le secret pour isoler la valeur mémorisée par l’élément de mémoire des changements qui pourraient survenir sur les entrées consiste à utiliser un mécanisme semblable à celui d’un sas. Selon le Larousse, la définition d’un sas est

Enceinte ou passage clos, muni de deux portes ou systèmes de fermeture dont on ne peut ouvrir l’un que si l’autre est fermé et qui permet de passer ou de faire passer d’un milieu à un autre en maintenant ceux-ci isolés l’un de l’autre.

Dans notre contexte, nous utiliserons deux loquets en série, avec la sortie du premier, appelé maître, reliée à l’entrée du second, appelé esclave. Le loquet maître sera activé par le signal d’horloge alors que le loquet esclave sera activé par le complément du signal d’horloge. De cette façon, un seul des loquets sera actif à la fois, comme dans un sas. La figure suivante illustre la configuration pour réaliser une bascule D maître-esclave.

Schéma d'une bascule D maître-esclave. Bascule D maître-esclave

Lorsque le signal d’horloge est au niveau haut, seul le loquet maître pourra réagir au signal d’entrée. Puis, lorsque le signal d’horloge sera au niveau bas, ce premier loquet sera désactivé, sa sortie sera maintenue, et le deuxième loquet sera activé. Comme l’entrée du loquet esclave est alimentée par le loquet maître dont la sortie est maintenue, c’est la valeur mémorisée par le maître qui sera mémorisée dans l’esclave et qui apparaîtra donc en sortie de l’ensemble.

La valeur qui sera ultimement mémorisée est celle qui se trouvait tout juste avant la transition de l’horloge passant du niveau haut vers le niveau bas. Nous avons donc créé une bascule sensible au front descendant.

En résumé:

  1. La sortie \(Q\) ne changera qu’une fois par cycle d’horloge.
  2. Un changement de valeur sera causé par la valeur d’entrée présente juste avant le front descendant de l’horloge.
  3. La valeur de sortie changera effectivement (s’il y a lieu) pendant la demi-période basse de l’horloge.

D’autres configurations permettent de réaliser ce comportement de sas. Par exemple, le circuit de la figure suivante utilise trois éléments en loquet SR NAND: les deux premiers sont activés par le signal de donnée \(D\) et l’horloge, et le dernier mémorise et fournit le signal de sortie \(Q\). Cette configuration réalise une bascule D à déclenchement sur front montant.

Schéma d'une bascule D à déclenchement sur front montant. Bascule D à déclenchement sur front montant

Pour bien comprendre le comportement du circuit, la série de figures suivantes permet d’en suivre le fonctionnement. Sur les figures, les valeurs binaires sont indiquées par des couleurs: un signal en vert sombre dénote la valeur 0 et un signal en vert clair représente la valeur 1.

Comme on peut le voir sur la première figure, lorsque \(clk = 0\), les entrées intermédiaires \(S\) et \(R\) sont maintenues au niveau 1, quelle que soit la valeur de l’entrée \(D\), ce qui assure de maintenir la valeur de sortie en \(Q\).

Bascule au repos  clk = 0, D=0. Bascule au repos \(clk = 0, D=0\)

Même lorsque l’entrée de donnée \(D\) change, la valeur de sortie est maintenue, comme on voit sur la figure suivante.

Bascule au repos  clk = 0, D passe à 1. Bascule au repos \(clk = 0, D \rightarrow 1\)

Si l’entrée de donnée \(D = 0\) lorsque \(clk\) passe à 1, \(R\) devient 0, ce qui met \(Q\) à 0 (opération reset) (figure suivante).

Bascule opération reset, clk passe à 1, D=0. Bascule reset \(clk \rightarrow 1, D=0\)

Si l’entrée de donnée \(D\) change pendant que \(clk = 1\), comme sur la figure suivante, \(R\) reste à 0, parce que la porte NAND à trois entrées a ses trois entrées à 1: par le signal \(clk = 1\), par la rétroaction du signal \(S\) et par le signal de sortie de la porte NAND du bas.

Bascule, clk = 1, D passe à 1. Bascule \(clk = 1, D \rightarrow 1\)

Quand \(clk\) revient à 0, on a \(S= 1, R=1\) et la sortie \(Q\) ne peut plus changer.

La figure suivante présente la bascule dans l’état \(Q=0\) avec l’entrée de donnée \(D = 1\), juste avant que \(clk\) passe à 1. On voit que les deux portes NAND du haut sont prêtes à provoquer un changement d’état de \(S\) lorsque l’horloge passera à 1.

Bascule  clk = 0, D = 1. Bascule \(clk =0, D = 1\)

Si l’entrée de donnée \(D = 1\) lorsque \(clk\) passe à 1, on voit que \(S\) est devenu 1, ce qui a amené \(Q\) à 1 (opération set) (figure suivante).

Bascule opération set clk passe à 1, D=1. Bascule set \(clk \rightarrow 1, D=1\)

La figure suivante présente un chronogramme qui montre la bascule qui passe de l’état 0 à l’état 1 et retourne, au cycle suivant, à l’état 0.

Chronogramme pour une bascule D. Chronogramme pour une bascule D

Délais et réponse temporelle

Comme dans tout circuit logique, les changements de valeurs logiques dans les différentes portes qui constituent une bascule ne sont pas instantanés. Il faut donc laisser le temps nécessaire pour que les changements puissent se propager, être pris en compte et se stabiliser.

Sur la figure suivante, on indique le délai \(t_{setup}\) entre le moment où la valeur à l’entrée de donnée D est modifiée et la prochaine transition de déclenchement de l’horloge. Pour assurer un fonctionnement adéquat de la bascule, on doit respecter un temps de mise en place (setup) minimum pendant lequel la valeur à l’entrée de donnée D doit être maintenue avant la transition de déclenchement.

Chronogramme avec temps et délais. Chronogramme avec temps et délais

On montre aussi sur la figure le délai \(t_{hold}\) entre le moment de déclenchement, et un prochain changement de valeur à l’entrée de donnée D. Pour un fonctionnement adéquat, on doit également respecter un temps de maintien (hold) minimum pendant lequel la valeur à l’entrée de donnée D doit être maintenue après la transition de déclenchement de l’horloge.

Enfin, la figure montre le délai de propagation à la sortie de la bascule \(t_{prop}\), qui se mesure entre le moment du déclenchement et le moment où la sortie se stabilise à sa nouvelle valeur.

Le symbole graphique d’une bascule D (figure ci-dessous) comporte un petit triangle à l’entrée d’horloge pour indiquer que le déclenchement se fait sur une transition. Un déclenchement sur front descendant est indiqué par un petit cercle d’inversion à l’entrée d’horloge.

Symboles de bascules. Symboles de bascules


Sous-module précédent:
Sous-module suivant: