[TUTO] Logique Séquentielle - Registre à décalage 74HC595

Informations et questions sur les composants tiers de la boutique (émetteur/récepteur RF, capteurs...)

[TUTO] Logique Séquentielle - Registre à décalage 74HC595

Message non lude Florian » Mar 21 Jan 2014 18:21

Bonjour,

Aujourd'hui nous allons nous pencher sur le fonctionnement des bascules D et JK. Elles sont présentes dans de très nombreux composants dont le registre à décalage 74HC595 présent dans notre Starter Kit mais également dans des compteurs et autres composants.
Dans le tuto d'aujourd'hui je vais tenter de vous expliquer à quoi servent ces bascules et comment elles fonctionnent à travers le composant 74HC595 et d'un compteur comme exemple.


LES BASCULES:

La bascule est un circuit dit bistable*, elle peut prendre deux états logiques "0" ou "1". C'est un circuit logique pouvant maintenir les valeurs de ses sorties malgré les changements de valeurs de ses entrées. Les valeurs de ses entrées dépendent de la ou les valeurs de ses sorties. C'est à dire que l'état de la bascule est modifié en changeant une ou plusieurs entrées. Le nouvel état de la bascule dépendra donc de l'état précédent.


Ce qui différencie les bascules de la logique combinatoire, c'est que la sortie maintient son état même après disparition du signal de commande. Comme l'état précédent et la mémorisation interviennent, on parle de logique séquentielle. Quelques bascules possèdent une entrée d'horloge de synchronisation, il existe donc des bascules asynchrones et des bascules synchrones (sortie directement liée à l'horloge).
La bascule est la base de la logique séquentielle, en additionnant des bascules, on peut réaliser des compteurs, des registres, des registres à décalage, des mémoires...

*Bistable: qui possède deux états stables, donc l'état "1" ou "0".
Monostable: qui possède un seul état stable, l'autre état est temporaire.

Il existe un certain nombre de bascules avec chacune leurs spécificités. On trouve des bascules RSH-RST, T, de Schmitt, JK et D. Nous nous intéresserons seulement aux bascules JK et D lors de ce tutoriel. Je me contenterai de ne fournir qu'une définition succincte des autres bascules.


- BASCULE "RSH-RST":
Image
Une bascule RSH (ou RST) est une bascule RS auquel on a ajouté une troisième entrée, généralement notée H ou CLK.


- BASCULE "T":
Image
La bascule T vient de l'anglais "toggle". Si son entrée T est active, elle bascule à chaque impulsion d'horloge. Si son entrée T est inactive, elle conserve son état précédent.


- BASCULE de "Schmitt":
Image
On l'appelle aussi Trigger de Schmitt ou bascule à seuil.
Cette bascule à trois entrées et une sortie. Contrairement aux précédentes, qui fonctionnent avec des signaux logiques appliqués à leurs entrées, celle de Schmitt est conçue pour fonctionner grâce une tension analogique.


Je vais maintenant me pencher sur le cas de la bascule JK et de la bascule D.

- BASCULE "JK":
Image
La bascule JK est obtenue à partir d'une bascule RSH dont les sorties sont rebouclées sur les entrées.

Ci-dessous, la table de vérité et son chronogramme;
TableEtChronoJK.png
TableEtChronoJK.png (16.12 Kio) Vu 2296 fois


- Qu'est ce qu'une table de vérité?
La table de vérité est un tableau qui répertorie toutes les combinaisons possibles des entrées à leurs différents états ("1" ou "0") et qui associe à chacune des ces possibilités l'état de la ou les sorties.

- Pourquoi un chronogramme?
Le chronogramme est utilisé pour interpréter sous forme graphique les données de la table de vérité. Et ainsi visualiser plus facilement le fonctionnement de la bascule en question.

Dans cette exemple, de la bascule JK, elle se déclenche à chaque front montant d'horloge, c'est une bascule synchrone. Lorsque les entrées J et K sont à l'état "0" en même temps, la sortie recopie l'état précédent du signal. Si une entrée est à l'état "0" et l'autre à l'état "1" alors la sortie recopie l'état du signal de l'entrée J pour Q et de l'entrée K pour ǭ. Lorsque les deux entrées sont à l'état "1" alors la sortie prend l'état inverse de l'état précédent.
C'est à dire, pour J = K = 1 , on dit que l'on est dans le mode basculement. Cette bascule passe à l'état opposé à chaque front montant du signal d'horloge.

On peut utiliser cette bascule pour créer des compteurs. On compte jusqu'à 2 puissance n avec n bascules à la suite et on compte dans l'ordre croissant avec des bascules à front descendant et dans l'ordre décroissant avec des bascules à front montant.


- BASCULE "D":
Image
La bascule D est obtenue à partir d'une bascule JK à laquelle on a ajouté un inverseur entre les entrées J et K. Il y a donc une seule entrée, qui est notée D. La table de vérité est donc la table de vérité d'une JK, limitée aux deux lignes J = 0, K = 1 et J = 1, K = 0.

Ci-dessous, la table de vérité et son chronogramme;
TableEtChronoD.png
TableEtChronoD.png (9.93 Kio) Vu 2296 fois


Le fonctionnement de la bascule D est assez simple à comprendre, lorsqu'il y a un front montant la sortie recopie simplement l'entrée D le temps d'une impulsion d'horloge.


Maintenant que nous avons vu le fonctionnement des bascules D et JK, nous allons tenter de voir et comprendre comment elles sont utilisées dans des composants comme le registre à décalage du Starter Kit ou dans un compteur par exemple.


REGISTRE A DECALAGE 74HC595:
74HC595.png
74HC595.png (105.64 Kio) Vu 2296 fois


- Qu'est ce qu'un registre à décalage?
Un registre à décalage est un système logique permettant la transmission/mise en mémoire des données depuis une connexion série vers une interface série. Soit un ensemble de bascules reliées les unes aux autres. A chaque front (montant ou descendant) l'état de ces bascules est mis à jour.
Il est essentiellement composé de bascule de type D, mis en cascade.

- A quoi servent ils?
Ces registres peuvent être utilisés pour des simples conversions par exemple mais sont également très employés pour minimiser le nombre de pins occupées sur une carte arduino. C'est à dire si avec un arduino on souhaite gérer une série de LEDs ou même plusieurs séries (ex: réalisation d'un chenillard), on va vite se retrouver à court de pins disponible sur l'arduino. C'est là qu'intervient le super registre à décalage. Il va ainsi libérer des pins de l'arduino, il est même possible de mettre plusieurs registres en cascade, est ainsi augmenter encore le nombre de pins disponible sur l'arduino.


Le 74HC595 est un registre à décalage standard avec mémorisation. Datasheet

Voici, tout d'abord, le schéma des bascules à l’intérieur de ce registre à décalage ainsi que son chronogramme;
BasculesRegistre.png
BasculesRegistre.png (42.81 Kio) Vu 2296 fois

ChronoRegistre.png
ChronoRegistre.png (45.3 Kio) Vu 2296 fois



Principe de fonctionnement du 74HC595:

Séquence de fonctionnement pour l'envoie d'une donnée sur 8 bits;
- Premièrement, on passe la pin12 (RCLK) à l'état "0".
- On présente un à un les 8 bits de la donnée sur la pin14 (SER), tout en envoyant au même moment à chaque bit un état "1" sur la pin11 (SRCLK).
- On repasse ensuite la pin12 (RCLK) à l'état "1" pour ainsi recopier la nouvelle valeur dans le second registre.

La pin10 (SRCLR) a pour fonction de remettre tout le premier registre à zéro (active à l'état "0").
La pin13 (OE) a pour fonction d'activer ou non la sortie (active à l'état "0").

On peut facilement observer sur le chronogramme que toutes les sorties sont décalées d'un cycle d'horloge à chaque fois par rapport à la sortie qui la précède.


COMPTEUR:
CompteurModulo10.png
CompteurModulo10.png (2.49 Kio) Vu 2296 fois


- Qu'est ce qu'un compteur?
Un compteur est constitué de nombreuses bascules et de portes logiques qui permettent de réaliser un comptage et/ou un décomptage.

- A quoi servent ils?
Un compteur est généralement utilisé, comme son nom l'indique, à compter/décompter donc par exemple pour la fabrication d'un chronomètre ou encore compter le nombre de personnes dans une pièce à l'aide d'une barrière infrarouge...


Il existe deux types de compteur, binaire ou décimal, et deux modes de comptage, synchrone ou asynchrone.

Compteur binaire:
Un compteur est dit binaire lorsqu'il effectue un comptage binaire. Autrement dit, les états que peuvent prendre ses sorties forment des mots ou des nombres binaires (ex: 0001 1010).

Compteur décimal:
Un compteur est dit décimal ou BCD (Binaire Codé Décimal) lorsque ses mots binaires, fournis par ses sorties, sont au maximum dix. Autrement dit, le compteur ne pourra compter que de 0 à 9 et fera un retour à zéro après 9.

Pour ce tuto sur les bascules "D" et "JK", je vais prendre comme base un compteur modulo 16*. Ce compteur est un compteur synchrone, c'est à dire que toutes les bascules s'enclenchent simultanément par impulsions d'horloge. Puisque toutes les impulsions sont appliquées simultanément aux bascules, il y a un mécanisme qui indique quand un front d'horloge doit faire commuter ou laisser dans le même état une bascule. Pour cela on utilise les entrées J et K d'une bascule JK, en les bloquant à l'état "1".

*Modulo 16: cela signifie que le compteur compte de 0 à 15. Modulo 8 de 0 à 7 et ainsi de suite...

Voici le montage de notre compteur;
SchémaCompteur.png
SchémaCompteur.png (9.43 Kio) Vu 2296 fois


On peut voir que toutes les entrées CLK de toutes les bascules sont reliées ensemble afin que le signal d'horloge arrive de manière simultanée à toutes les bascules.
On bloque les entrées "J" et "K" à l'état "1" seulement pour la bascule "A". Les autres entrées "J" et "K" sont réglées par combinaison entre les bascules.

Quelques explications pour pouvoir comprendre la table de vérité qui va suivre:
- Le comptage se fait sur front descendant, cela se voit par la présence du cercle sur l'entrée de l'horloge. En cas d'absence de ce cercle, le comptage s’effectuera sur front montant (il s'agira d'ailleurs dans ce cas d'un décomptage et non pas d'un comptage).
- La bascule "A" change d'état à chaque front descendant. C'est pour ça que ses entrées sont bloquées à "1", car précédemment on a vu dans la table de vérité d'une JK que la sortie recopie toujours l'inverse de l'état précédent lorsque ses deux entrées sont à l'état "1" en simultanées.
- La bascule "B" change d'état à chaque front descendant d'horloge lorsque la bascule "A" est à l'état "1".
- La bascule "C" change d'état à chaque front descendant d'horloge lorsque les bascules "A" et "B" sont simultanément à l'état "1".
- La bascule "D" change d'état à chaque front descendant d'horloge lorsque les bascules "A", "B" et "C" sont simultanément à l'état "1".

Voici la table de vérité de ce compteur;
TableCompteur.png
TableCompteur.png (10.45 Kio) Vu 2296 fois


Et le chronogramme associé à la table de vérité ci-dessus;
ChronoCompteur.png
ChronoCompteur.png (8.36 Kio) Vu 2296 fois


Pour mieux visualiser ce chronogramme, il vous suffit pour chaque sortie d'écrire "1" quand son état est à "1" et "0" quand il est à "0". Faites ça pour chaque sortie à chaque cycle d'horloge. Une fois ceci fait il vous suffit de lire une colonne pour savoir qu'elle est le nombre décimal en sortie du compteur.
Soit la première colonne "0000" (toutes les sorties sont à l'état "0") donc en décimal 0.
La deuxième colonne "0001" (premier cycle d'horloge, seul la sortie "A" passe à l'état "1") donc en décimal 1.
Troisième colonne "0010" (deuxième cycle d'horloge) donc en décimal 2.
Quatrième colonne "0011" donc en décimal 3.
Ainsi de suite jusqu'à ce que le compteur compte 15 en décimal (soit "1111" en binaire) puis il se remettra à 0 et recommencera à compter. C'est un compteur modulo 16. Si il s'agissait d'un compteur modulo 8, il compterait jusqu'à 7 en décimal soit "1000" en binaire.

Et voilà, vous savez maintenant de façon globale comment ça se passe à l’intérieur de très nombreux composant dont le registre à décalage 74HC595 de notre Starter Kit. Ainsi que la base de fonctionnement d'un compteur et le principe de fonctionnement des bascules.

C'est tout pour aujourd'hui, j'espère que ce tutoriel vous aura appris quelques trucs et vous aidera à y voir plus clair sur le fonctionnement du registre à décalage.
Florian
 
Messages: 75
Inscription: Mer 24 Juil 2013 17:36

Retourner vers Composants tiers

Qui est en ligne

Utilisateurs parcourant ce forum: Bing [Bot] et 1 invité

cron