Ce chapitre propose de découvrir le mécanisme de rétro-action, exploité notamment dans les circuits bascules (flip-flops).
Un relais permet de construire un oscillateur simple. Fermez le circuit en cliquant sur l'interrupteur à gauche pour l'essayer.
Une bascule peut être obtenue à partir de deux portes NOR réunies de telle sorte que la sortie de l'une soit injectée en entrée de l'autre.
Allumez la lampe en cliquant l'interrupteur du haut. Cliquez-le à nouveau: la lampe reste allumée (fonction mémoire).
Éteignez la lampe en cliquant l'interrupteur du bas. Cliquez-le de nouveau: la lampe reste éteinte (fonction effacement).
Voici la même bascule redisposée pour rendre sa symétrie visible. Une sortie complémentaire est apparue.
Dans une utilisation normale de cette bascule, une seule des deux entrées peut être à tout moment. Pour le rendre sensible dans la simulation, nous avons opté pour des contacteurs-poussoirs: ils reviennent à l'état de repos d'eux-mêmes quand vous cliquez.
Sollicitez une fois le poussoir du bas (celui d'armement, Set) pour amener la sortie Q à 1. Les appuis ultérieurs sur le poussoir n'ont plus aucun effet. Sollicitez une fois le poussoir du haut (celui d'effacement, Reset) pour ramener la sortie Q à 0. Les appuis ultérieurs sur ce poussoir n'ont plus aucun effet.
Cette variante reprend les entrées de contrôle Set et Reset, mais elles n'ont d'effet que si la nouvelle entrée de prise en compte Hold est à 1. Dans les faits, l'entrée Set stocke l'état de Hold sur la sortie Q.
La bascule précédente permet aisément d'aboutir à la bascule très répandue dite de type D, pilotée par niveau. L'état de l'entrée de donnée Data est recopié et maintenu sur la sortie Q quand le signal d'horloge Clock vaut 1.
La notion de pilotage par niveau signifie que tant que le signal d'horloge Clock est à 1, tous les changements d'état de l'entrée Data sont répercutés sur la sortie Q, ce qui est en général indésirable.
La variante de bascule pilotée par front montant (edge-triggered) résout le problème de la précédente: la sortie Q ne recopie l'état de Data que lors du passage de Clock de 0 à 1. Les changements ultérieurs de Data sont ignorés.
Dans le circuit suivant, un additionneur 8 bits est combiné à une bascule pilotée par front pour aboutir à un additionneur à accumulation.
Pour le tester, configurez une première valeur sur 8 bits avec la rangée du haut (pas trop grande). Dès que vos cliquez Add, la valeur est mémorisée sur les sorties des bascules tout en bas. Mais la valeur est également injectée dans les circuits additionneur du haut. Vous pouvez alors inscrire une autre valeur sur les boutons du haut puis cliquer Add. Les afficheurs du bas vont montrer le résultat qui est la somme des deux valeurs.
Si le total des deux valeurs déborde du plafond sur 8 bits (255d), le résultat sera faux puisque la retenue Carry n'est pas gérée ici (1111 1111 + 1 = 0000 0000).
Pour ramener le circuit à 0, actualisez la page web dans votre navigateur.
En combinant des bascules pilotée par front et un oscillateur, on obtient un compteur. Dans le circuit qui suit, l'oscillateur en haut à droite fonctionne à une période d'environ une seconde. Ce signal alimente l'entrée d'horloge Clock de la bascule tout à droite, qui à son tour alimente l'entrée Clock de sa voisine de gauche.
La valeur affichée en bas correspond au nombre de secondes écoulées. Etant basé sur les mécanismes d'animation graphiques de JavaScript, ce chronométrage ne prétend pas être très précis.
Il est souvent utile de prévoir un signal d'effacement ou de remise à zéro nommé Clear pour forcer à 0 la sortie d'une bascule quel que soit l'état de ses autres entrées.
Voici le même circuit doté des deux entrées de contrôle autoritaire possibles, Clear et Preset.