dimanche 8 mai 2016

Étude de CI: Bascules (flip flops) de type D (CD4013)

Dans le cadre de cette série d'articles qui consiste à sortir de mes tiroirs un vieux circuit intégré poussiéreux afin de découvrir à quoi il pourrait bien servir, je vous présente aujourd'hui le CD4013, qui comporte deux bascules (flip flops) de type D.

Une bascule est une mémoire (à un seul bit!):  lorsqu'on le désire, on peut faire en sorte que sa sortie prend le même niveau logique (0 ou 1) que l'entrée.  La sortie peut ensuite conserver ce niveau logique aussi longtemps qu'on le désire, peu importe ce qui arrive à l'entrée.

Description du CD4013

La figure ci-contre montre le brochage du CD4013.

Les pins 7 et 14 servent à l'alimentation du circuit intégré:  j'utiliserai une alimentation de 5 V (pin 7 à GND et pin 14 à +5 V).

Le niveau logique 0 correspondra donc à 0 volt, alors que le niveau logique 1 correspondra à 5 volts.

Les pins de la première bascule se situent du côté gauche.  Lorsque le signal de la pin 3 (horloge) passe de 0 à 1, la pin 1 (sortie Q) prend le même niveau logique que la pin 5 (entrée D) et conserve ce niveau logique jusqu'au prochain passage de 0 à 1 par la pin 3.

La pin 2 est une sortie complémentaire Ǭ (remarquez la barre au-dessus du symbole), qui prend toujours le niveau contraire de la sortie Q.

Lorsque la pin 6 (set) est au niveau logique 1,  la sortie (pin 1) prend le niveau logique 1.  Lorsque la pin 4 (reset) est au niveau logique 1, la sortie (pin 1) prend le niveau logique 0.


1) Vérification du fonctionnement de base

Pour s'assurer que nous avons bien compris comment ça marche, on teste ça sur une breadboard:  un bouton poussoir pour actionner l'entrée "D", un autre bouton poussoir pour actionner l'horloge, une LED indiquant l'état de la sortie "Q", et une autre (facultative) pour indiquer l'état de la sortie complémentaire "Ǭ".



(Nous n'utiliserons pas les pins SET et RESET:  elles sont donc branchées à GND).



Au départ, la sortie Q (pin 1) devrait être à zéro:  la LED qui y est branchée sera donc éteinte (la sortie complémentaire Ǭ sera allumée, puisqu'elle est toujours dans l'état contraire à la sortie Q).

L'état des LEDs devrait changer uniquement lorsque vous appuyez sur le bouton qui contrôle l'horloge (pin 3):

Si vous appuyez sur le bouton d'horloge pendant que le bouton de l'entrée D est enfoncé, la LED de la sortie Q s'allume (niveau logique 1).

Si vous appuyez sur le bouton d'horloge pendant que le bouton de l'entrée D n'est pas enfoncé, la LED de la sortie Q s'éteint (niveau logique 0).

Les deux sorties "mémorisent" l'état de l'entrée uniquement lorsque vous appuyez sur le bouton d'horloge (lorsque la pin 3 passe de l'état 0 à l'état 1).  Sinon, elle conservent leur état sans se soucier de l'état de la pin d'entrée.

2) Transformation en bascule de type T (toggle)

Nous allons maintenant transformer notre bascule de type D en une bascule de type T (toggle).  Pour ce faire, il s'agit de relier la sortie Ǭ (pin 2) à l'entrée D (pin 5).  Cette entrée sera donc contrôlée par la sortie plutôt que par un bouton.

Nous n'avons besoin que d'un seul bouton, qui contrôlera l'horloge (pin 3).  Mais attention:   il est nettement préférable d'utiliser un bouton sans rebond, sinon les résultats risquent d'être quelque peu aléatoires.  Pour des résultats impeccables, vous pouvez utiliser des interrupteurs sans rebond à base de bascules de Schmitt. Pour ma part, je me suis contenté d'ajouter un condensateur de 100 nF en parallèle avec le bouton, avec des résultats très satisfaisants.




Alors qu'est-ce que ça donne, maintenant?  Vous appuyez sur le bouton:  la LED s'allume (et demeure allumée même si vous relâchez le bouton).  Vous appuyez à nouveau sur le bouton:  la LED s'éteint.

Ce comportement se comprend facilement:  l'entrée D est toujours dans le même état que la sortie Ǭ, donc dans l'état contraire à la sortie Q.  Lorsque l'horloge passe de 0 à 1, Q prend la valeur de D, qui est le contraire de ce qu'était Q auparavant.

3) Fabrication d'un compteur binaire

Il est possible de fabriquer un compteur binaire en reliant plusieurs bascules de type T en cascade. Les pins D et Ǭ de la première bascule sont reliées à l'horloge de la deuxième bascule, et ainsi de suite.

Voici, par exemple, un compteur binaire à 4 bits, construit au moyen de 4 bascules (donc deux circuits intégrés CD4013).





Au départ, toutes les LEDs sont éteintes:  c'est le nombre binaire 0000.

Vous appuyez une première fois sur le bouton, qui actionne l'horloge de la bascule A:  la sortie Q de la bascule A se met au niveau 1, ce qui allume la LED A  (nombre binaire 0001).

Mais notez que la sortie Ǭ de la bascule A est reliée à l'horloge de la bascule B.  Lors du premier appui sur le bouton, cette sortie est passée de 1 à 0, ce qui n'entraîne aucun changement de la bascule B.

Deuxième appui sur le bouton:  la bascule A change d'état:  sa sortie Q prend le niveau 0 (la LED A s'éteint) et sa sortie Ǭ prend le niveau 1, ce qui entraîne un changement d'état pour la bascule B (la LED B s'allume), ce qui correspond au nombre binaire 0010.

...et ainsi de suite jusqu'au nombre binaire 1111 (qui correspond à 15 en décimal).

Si ça vous amuse, rien ne vous empêche d'augmenter le nombre de bits.

4) Diviseur de fréquence

Si vous avez construit le compteur binaire de l'étape précédente,  vous pouvez remarquer qu'à mesure qu'on progresse dans notre chaînage de bascules, la fréquence est de plus en plus lente:

la LED A change d'état chaque fois qu'on appuie sur le bouton, mais:
on doit appuyer 2 fois sur le bouton pour que la LED B change d'état
on doit appuyer 4 fois sur le bouton pour que la LED C change d'état
on doit appuyer 8 fois sur le bouton pour que la LED D change d'état

Donc si vous soumettez l'horloge d'une bascule de type T à un signal périodique (oscillant entre 0 et 5 V), la fréquence à la sortie de la bascule sera divisée par deux.

Ci-dessous:  c'est le même circuit qu'à l'étape précédente, mais le bouton a été remplacé par un NE555 produisant un signal  périodique (j'aurais pu produire ce signal au moyen d'un Arduino, mais j'ai préféré compléter cette petite exploration en demeurant "vintage":  pas de microcontrôleurs aujourd'hui).






Voilà!  Il ne me reste plus qu'à espérer que cet article sur les flip flops ne sera pas un flop (sinon, je flippe!).

Yves Pelletier   (TwitterFacebook)


3 commentaires:

  1. Très bon article sur ce que je recherche. Je vais l'appliquer sur un ESP8266 qui n'a pas suffisamment de ports en relation avec un CD4051.

    RépondreSupprimer
  2. Bonjour, Merci pour l'article.
    Lorsqu'on coupe l'alimentation du CD4013 pour la remettre, la sortie Q reste parfois à 1. Il faut couper l'alimentation plusieurs fois pour qu'elle revienne à 0. J'essaye de faire un système à bascule unique, c'est à dire avoir Q à 0 lors de la mise sous tension, puis Q à 1 soit par un signal haut ou bas. Après le signal Q resterait à 1 jusqu'à coupure de l'alimentation.

    RépondreSupprimer
  3. Bonsoir, merci beaucoup pour cet article très didactique qui m'a permis de mieux comprendre le fonctionnement de la bascule D.

    RépondreSupprimer