Compteurs MOD : Une introduction
Les compteurs MOD sont des circuits de compteurs en cascade qui comptent jusqu’à une valeur de module définie avant de se réinitialiser.
Le rôle d’un compteur est de compter en avançant le contenu du compteur d’une unité à chaque impulsion d’horloge. Les compteurs qui avancent leur séquence de nombres ou d’états lorsqu’ils sont activés par une entrée d’horloge sont dits fonctionner en mode « comptage ascendant ». De même, les compteurs qui diminuent leur séquence de nombres ou d’états quand ils sont activés par une entrée d’horloge sont dits fonctionner en mode « comptage descendant ». Les compteurs qui fonctionnent à la fois en modes UP et DOWN sont appelés compteurs bidirectionnels.
Les compteurs sont des dispositifs de logique séquentielle qui sont activés ou déclenchés par une impulsion de synchronisation externe ou un signal d’horloge. Un compteur peut être construit pour fonctionner comme un circuit synchrone ou comme un circuit asynchrone. Avec les compteurs synchrones, tous les bits de données changent de manière synchrone en fonction de l’application d’un signal d’horloge. En revanche, un circuit de compteur asynchrone est indépendant de l’horloge d’entrée, donc les bits de données changent d’état à des moments différents les uns après les autres.
Ainsi, les compteurs sont des dispositifs de logique séquentielle qui suivent une séquence prédéterminée d’états de comptage qui sont déclenchés par un signal d’horloge externe (CLK). Le nombre d’états ou de séquences de comptage par lesquelles un compteur particulier progresse avant de revenir à son état initial est appelé le modulus (MOD). En d’autres termes, le modulus (ou simplement modulo) est le nombre d’états que le compteur compte et est le nombre diviseur du compteur.
Les Compteurs de Modulus, ou simplement compteurs MOD, sont définis en fonction du nombre d’états que le compteur va parcourir avant de revenir à sa valeur initiale. Par exemple, un compteur de 2 bits qui compte de 002 à 112 en binaire, c’est-à-dire de 0 à 3 en décimal, a une valeur de modulus de 4 ( 00 → 01 → 10 → 11, puis revient à 00 ), il serait donc appelé un compteur de modulo-4, ou compteur mod-4. Notez également qu’il a fallu quatre impulsions d’horloge pour passer de 00 à 11.
Dans ce simple exemple, il y a seulement deux bits (n = 2), donc le nombre maximum d’états de sortie possibles (modulus maximum) pour le compteur est : 2n = 22 ou 4. Cependant, les compteurs peuvent être conçus pour compter jusqu’à n’importe quel nombre d’états 2n dans leur séquence en cascadeant plusieurs étapes de comptage pour produire un seul compteur de modulus ou compteur MOD-N.
Par conséquent, un compteur « Mod-N » nécessitera « N » flip-flops connectés ensemble pour compter un seul bit de données tout en fournissant 2n états de sortie différents (n étant le nombre de bits). Notez que N est toujours une valeur entière.
Nous pouvons voir que les compteurs MOD ont une valeur de modulus qui est une puissance entière de 2, c’est-à-dire 2, 4, 8, 16, etc., pour produire un compteur de n bits selon le nombre de flip-flops utilisés et la façon dont ils sont connectés, déterminant le type et le modulus du compteur.
Flip-flops de Type D
Les compteurs MOD sont fabriqués à l’aide de « flip-flops » et un seul flip-flop peut produire un compte de 0 ou 1, donnant un maximum de 2. Il existe différents types de conceptions de flip-flops que nous pourrions utiliser, le S-R, le J-K, le J-K maître-esclave, le type D voire le flip-flop de type T pour construire un compteur. Mais pour simplifier, nous allons utiliser le flip-flop de type D, (DFF) également connu sous le nom de Data Latch, car une seule entrée de données et un signal d’horloge externe sont utilisés, et il est également déclenché sur le front montant.
Le flip-flop de type D, tel que le TTL 74LS74, peut être fabriqué à partir de flip-flops déclenchés par le front montant S-R ou J-K selon que vous souhaitez qu’il change d’état soit sur le front montant (transition de 0 à 1) ou sur le front descendant (transition de 1 à 0) de l’impulsion d’horloge. Ici, nous allons supposer un flip-flop déclenché par le front montant. Vous pouvez trouver plus d’informations via le lien suivant concernant les flip-flops de type D.
Flip-flop de Type D et Tableau de Vérité
Le fonctionnement d’un flip-flop de type D, (DFF) est très simple car il n’a qu’une seule entrée de données, appelée « D », et une entrée d’horloge « CLK » supplémentaire. Cela permet à un seul bit de données (0 ou 1) d’être stocké sous le contrôle du signal d’horloge, faisant ainsi du flip-flop de type D un dispositif synchrone, car les données sur les entrées ne sont transférées à la sortie des flip-flops que sur le front déclencheur de l’impulsion d’horloge.
Donc, d’après le tableau de vérité, s’il y a une logique « 1 » (HAUT) sur l’entrée de données lorsque une impulsion d’horloge positive est appliquée, le flip-flop SE MET en PLACE et stocke une logique « 1 » à « Q », et un « 0 » complémentaire à Q. De même, s’il y a un bas sur l’entrée de données lorsqu’une autre impulsion d’horloge positive est appliquée, le flip-flop se RÉINITIALISE et stocke un « 0 » à « Q », produisant ainsi un « 1 » à Q.
Ensuite, la sortie « Q » du flip-flop de type D répond à la valeur de l’entrée « D » lorsque l’entrée d’horloge (CLK) est HAUTE. Lorsque l’entrée d’horloge est BASSE, l’état à « Q », soit « 1 » soit « 0 », est maintenu jusqu’à la prochaine fois que le signal d’horloge devient HAUT au niveau logique « 1 ». Par conséquent, la sortie à « Q » ne change d’état que lorsque l’entrée d’horloge passe d’une valeur de « 0 » (BAS) à « 1 » (HAUT), rendant ainsi ce flip-flop de type D déclenché sur le front montant. Notez que les flip-flops déclenchés sur le front descendant fonctionnent de la même manière, sauf que le front descendant de l’impulsion d’horloge est l’edge de déclenchement.
Maintenant que nous savons comment fonctionne un flip-flop de type D déclenché sur le front, examinons la connexion de plusieurs d’entre eux pour former un compteur MOD.
Compteur Diviseur par Deux
Le flip-flop de type D déclenché sur le front est un élément de construction utile et polyvalent pour construire un compteur MOD ou tout autre type de circuit de logique séquentielle. En connectant la sortie Q à l’entrée « D » comme indiqué, et en créant une boucle de rétroaction, nous pouvons le convertir en compteur binaire diviseur par deux en utilisant seulement l’entrée d’horloge puisque le signal de sortie Q est toujours l’inverse du signal de sortie Q.
Compteur Diviseur par Deux et Diagramme Temporel
Les diagrammes temporels montrent que le signal de sortie « Q » a une fréquence exactement égale à la moitié de celle de l’entrée d’horloge, ainsi le flip-flop agit comme un diviseur de fréquence. Si nous ajoutons un autre flip-flop de type D de sorte que la sortie à « Q » soit l’entrée du deuxième DFF, alors le signal de sortie de ce deuxième DFF serait un quart de la fréquence d’entrée d’horloge, et ainsi de suite. Donc, pour un nombre « n » de flip-flops, la fréquence de sortie est divisée par 2n, par étapes de 2.
Notez que cette méthode de division de fréquence est très utile dans les circuits de comptage séquentiels. Par exemple, un signal de fréquence de réseau de 60 Hz pourrait être réduit à un signal de synchronisation de 1 Hz en utilisant un compteur diviseur par 60. Un compteur diviseur par 6 diviserait le 60 Hz en 10 Hz, qui serait ensuite envoyé à un compteur diviseur par 10 pour réduire le 10 Hz en un signal de temporisation de 1 Hz ou pulse, etc.
Compteur MOD-4
Techniquement, en plus d’être un dispositif de stockage à 1 bit, un seul flip-flop à lui seul pourrait être considéré comme un compteur MOD-2, car il a une seule sortie résultant d’un compte de deux, soit un 0 ou un 1, lors de l’application du signal d’horloge. Mais un seul flip-flop ne produit pas une séquence de comptage très étendue, alors en connectant plusieurs flip-flops ensemble pour former une chaîne, nous pouvons augmenter la capacité de comptage et construire un compteur MOD de n’importe quelle valeur.
Si un seul flip-flop peut être considéré comme un compteur de modulo-2 ou un compteur MOD-2, alors l’ajout d’un second flip-flop nous donnerait un compteur MOD-4 permettant ainsi de compter par quatre étapes discrètes. L’effet global serait de diviser le signal d’entrée de l’horloge d’origine par quatre. Ensuite, la séquence binaire pour ce compteur MOD-4 à 2 bits serait : 00, 01, 10, et 11 comme indiqué.
Compteur MOD-4 et Diagramme Temporel
Notez que pour simplifier, les transitions de commutation de QA, QB et CLK dans le diagramme temporel ci-dessus sont montrées comme simultanées même si cette connexion représente un compteur asynchrone. En réalité, il y aurait un très petit délai de commutation entre l’application du signal d’horloge montante (CLK) et les sorties à QA et QB.
Nous pouvons montrer visuellement le fonctionnement de ce compteur asynchrone à 2 bits à l’aide d’un tableau de vérité et d’un diagramme d’états.
Diagramme d’États du Compteur MOD-4
Impulsion d’Horloge | État Présent | Prochain État | Diagramme d’État | |||
QB | QA | QB | QA | ![]() |
||
0 (début) | 0 | 0 | ⇒ | 0 | 1 | |
1 | 0 | 1 | ⇒ | 1 | 0 | |
2 | 1 | 0 | ⇒ | 1 | 1 | |
3 | 1 | 1 | ⇒ | 0 | 0 | |
4 (répéter) | 0 | 0 | ⇒ | 0 | 1 |
Nous pouvons voir à partir du tableau de vérité du compteur, et en lisant les valeurs de QA et QB, lorsque QA = 0 et QB = 0, le compte est 00. Après l’application de l’impulsion d’horloge, les valeurs deviennent QA = 1, QB = 0, donnant un compte de 01. Après l’arrivée de l’impulsion d’horloge suivante, les valeurs changent et deviennent QA = 0, QB = 1, donnant un compte de 10. Enfin, les valeurs deviennent QA = 1, QB = 1, donnant un compte de 11. L’application de la prochaine impulsion d’horloge fait revenir le compte à 00, et par la suite, il compte continuellement en séquence binaire : 00, 01, 10, 11, 00, 01 …etc.
Nous avons vu qu’un compteur MOD-2 consiste en un seul flip-flop et qu’un compteur MOD-4 nécessite deux flip-flops, lui permettant de compter par quatre étapes discrètes. Nous pourrions facilement ajouter un autre flip-flop à l’extrémité d’un compteur MOD-4 pour produire un compteur MOD-8 nous donnant une séquence binaire de 23 comptant de 000 jusqu’à 111, avant de se réinitialiser à 000. Un quatrième flip-flop établirait un compteur MOD-16, et ainsi de suite, en fait nous pourrions continuer à ajouter des flip-flops aussi longtemps que nous le souhaitons.
Compteur MOD-8 et Diagramme d’État
Nous pouvons donc construire des compteurs mod pour avoir un compte naturel de 2n états, donnant des compteurs avec des comptes mod de 2, 4, 8, 16, etc., avant de se répéter. Mais parfois, il est nécessaire d’avoir un compteur de modulus qui réinitialise son compte à zéro pendant le processus de comptage normal et qui n’a pas un modulo qui est une puissance de 2. Par exemple, un compteur ayant un modulus de 3, 5, 6 ou 10.
Compteurs de Modulo « m »
Les compteurs, qu’ils soient synchrones ou asynchrones, avancent un compte à la fois dans une progression binaire définie, en conséquence un compteur de « n » bits fonctionne naturellement comme un compteur modulo 2n. Mais nous pouvons construire des compteurs mod pour compter jusqu’à n’importe quelle valeur que nous voulons en utilisant une ou plusieurs portes logiques externes qui font sauter quelques états de sortie et se terminent à un compte réinitialisant le compteur à zéro, c’est-à-dire que tous les flip-flops ont Q = 0.
Dans le cas des compteurs modulo « m », ils ne comptent pas tous leurs états possibles, mais comptent plutôt jusqu’à la valeur « m » puis retournent à zéro. Évidemment, « m » est un nombre plus petit que 2n (m < 2n). Alors, comment obtenir un compteur binaire qui retourne à zéro en cours de comptage ?
Heureusement, en plus de compter, que ce soit en ajoutant ou en soustrayant, les compteurs peuvent aussi avoir des entrées supplémentaires appelées CLR (effacer) et PRESET (préréglage) qui rendent possible le réajustement du compte à zéro (tous Q = 0) ou de prérégler le compteur à une certaine valeur initiale. Le TTL 74LS74 possède des entrées de préréglage et de réinitialisation actives à faible niveau.
Supposons pour simplifier que les entrées CLR soient toutes reliées ensemble et sont des entrées actives-hautes permettant aux flip-flops de fonctionner normalement lorsque l’entrée Clear est égale à 0 (BAS). Mais si l’entrée Clear est à niveau logique « 1 » (HAUT), alors le prochain front positif du signal d’horloge réinitialisera tous les flip-flops à l’état Q = 0, indépendamment de la valeur du prochain signal d’horloge.
Notez également que comme toutes les entrées Clear sont reliées ensemble, une seule impulsion peut également être utilisée pour effacer les sorties (Q) de tous les flip-flops à zéro avant que le comptage commence afin de garantir que le compte commence effectivement à zéro. De plus, certains compteurs à plus grands bits ont une broche d’entrée ENABLE ou INHIBIT supplémentaire qui permet au compteur d’arrêter le comptage à n’importe quel moment du cycle de comptage et de maintenir son état actuel, avant de pouvoir recommencer à compter. Cela signifie que le compteur peut être arrêté et redémarré à volonté sans remettre les sorties à zéro.
Compteurs Modulo-5
Supposons que nous souhaitions concevoir un compteur MOD-5, comment pourrions-nous le faire ? Tout d’abord, nous savons que « m = 5 », donc 2n doit être supérieur à 5. Comme 21 = 2, 22 = 4, 23 = 8, et 8 est supérieur à 5, alors nous avons besoin d’un compteur ayant au moins trois flip-flops (N = 3) pour nous donner un compte binaire naturel de 000 à 111 (0 à 7 en décimal).
Utilisant l’exemple du compteur MOD-8 ci-dessus. Le tableau de vérité pour son compte naturel sera donné comme suit :
Compteur MOD-8 et Tableau de Vérité
Comme nous voulons construire un compteur MOD-5, nous devons modifier le circuit ci-dessus de compteur à 3 bits afin qu’il se réinitialise à zéro après un compte de 5. C’est-à-dire une séquence de comptage : 1→2→3→4→5→réinitialiser, et ainsi de suite.
Un compteur MOD-5 produirait une séquence de comptage binaire à 3 bits de 0 à 4, puisque 000 est un état de comptage valide, nous donnant une séquence de comptage binaire de : 000, 001, 010, 011, 100. Par conséquent, nous avons besoin que le circuit du compteur se réinitialise à l’état suivant de comptage, car le compte de six (le compte suivant) produirait une condition de sortie : QA = 1, QB = 0, et QC = 1 en binaire comme montré dans le diagramme d’état suivant.
Séquence de Comptage MOD-5
Nous pouvons décoder cet état de sortie de 101 (5) pour nous donner un signal pour effacer (Clr) le compteur à zéro avec l’aide d’une porte AND à trois entrées (TTL 74LS11) et d’un inverseur ou porte NOT (TTL 74LS04). Les entrées du circuit logique combinatoire constitué d’un inverseur et d’une porte logique AND numérique sont connectées aux sorties à 3 bits des compteurs : QA, QB et QC respectivement.

La sortie de la porte AND à 3 entrées sera donc à niveau logique « 0 » (BAS) pour toutes les combinaisons des entrées, à l’exception de la séquence d’entrée que nous voulons.
En code binaire, la séquence de sortie de comptage ressemblera à ceci : 000, 001, 010, 011, 100.
Bien qu’il semble que le compteur compte jusqu’à l’état 101, lorsque la séquence de comptage asynchrone atteint le prochain état binaire de 101 (5), le circuit de décodage logique combinatoire détectera cette condition de 101, donc la porte AND produira une sortie de niveau logique « 1 » (HAUT) réinitialisant le compteur à son état initial de zéro. Ainsi, le compteur ne reste dans cet état temporaire de 101 que pour quelques nanosecondes avant de se réinitialiser à 000.
Par conséquent, nous pouvons utiliser le décodage d’entrée de la porte AND pour réinitialiser le compteur à zéro après sa sortie de 5 (décimal), nous donnant le compteur MOD-5 requis. Lorsque la sortie du circuit de décodage est BASSE, cela n’a aucun effet sur la séquence de comptage.
Compteurs Modulo 5 et Tableau de Vérité
Nous pouvons donc utiliser des circuits logiques de décodage combinatoires autour d’un compteur de base, qu’il soit synchrone ou asynchrone, pour produire tout type de compteur MOD dont nous avons besoin, car chacun des états de sortie uniques des compteurs peut être décodé pour réinitialiser le compteur au compte désiré.
Dans notre simple exemple de MOD-5 ci-dessus, nous avons utilisé une porte AND à 3 entrées pour décoder l’état de sortie binaire 101, mais tout circuit logique peut être utilisé pour réinitialiser les flip-flops au compte requis.
Cependant, l’un des inconvénients d’utiliser des compteurs asynchrones pour produire n’importe quelle taille de compteur MOD d’un compte désiré est que des effets indésirables appelés « glitchs » peuvent survenir lorsque le compteur atteint sa condition de réinitialisation.
Durant cette brève période, les sorties du compteur peuvent prendre une valeur incorrecte, donc il est parfois préférable d’utiliser des compteurs synchrones en tant que compteurs modulo-m car tous les flip-flops sont synchronisés par le même signal d’horloge, ainsi ils changent d’état en même temps.
Compteurs Modulo 10
Un bon exemple de circuit de compteur modulo-m qui utilise des circuits combinatoires externes pour produire un compteur avec un modulus de 10 est le compteur décennal. Les compteurs décennaux (diviser par 10) comme le TTL 74LS90, ont 10 états dans sa séquence de comptage, ce qui le rend adapté à l’interface humaine où un affichage numérique est requis.
Le compteur décennal a quatre sorties produisant un nombre binaire à 4 bits et en utilisant des portes AND et OR externes, nous pouvons détecter l’apparition de l’état de comptage 9 pour réinitialiser le compteur à zéro. Comme avec d’autres compteurs mod, il reçoit une impulsion d’horloge d’entrée, une à une, et compte de 0 à 9 de manière répétée.
Une fois qu’il atteint le compte de 9 (1001 en binaire), le compteur revient à 0000 au lieu de continuer jusqu’à 1010. Le circuit de base d’un compteur décennal peut être fabriqué à partir de flip-flops JK (TTL 74LS73) qui changent d’état sur le front descendant du signal d’horloge comme indiqué.