Dans ce chapitre, vous allez pas-à-pas apprendre à concevoir différents types de compteurs asynchrones.

Diviseur de fréquence par deux


Le diviseur de fréquence par deux est capable de produire sur la sortie Q un signal dont la fréquence est la moitié de la fréquence de l' horloge d'entrée. La mise en œuvre la plus simple consiste à utiliser une bascule D sensible sur front (voir chapitre précédent) où la sortie nQ est connectée à D, comme illustré ci-dessous.
Bascule D connectée en diviseur par deux

Bascule D connectée en diviseur par deux

Dans la simulation logique sous DSCH, l'horloge d'entrée change l'état de ClockDiv2 à chaque front descendant. Le signal de réinitialisation Reset est actif au niveau haut. Lorsqu'il est actif, il maintient la sortie à 0.

Lorsque Reset est inactif (0), à chaque front descendant de Clock, la sortie Q prend la valeur de D avec un petit retard dû au temps de propagation de la bascule. Comme D est connecté directement par un fil à nQ, sa valeur change alors quasi instantanément. 

On remarque alors que la fréquence du signal sur la sortie Q est bien deux fois plus faible que la fréquence de l'horloge Clock.

Simulation du diviseur par 2

Simulation du diviseur par 2

Le lien avec le comptage peut être établi en observant de plus près clk1 (bit de poids faible) et Q (bit de poids fort).

On note que les signaux passent des états 00 à 01, à 10 et 11, soit 0, 1, 2, 3.

Lien entre division par deux de l'horloge et comptage

Lien entre division par deux de l'horloge et comptage


Compteur asynchrone 0..15


La cellule de division par deux peut être mise en cascade pour créer un compteur asynchrone permettant de compter de 0 à 15, par exemple. On utilise donc une chaîne de quatre cellules de Dreg (bascule D sur front), comme illustré ci-dessous, pour générer les 4 sorties qui représenteront les 4 bits du compteur. La synchronisation de chaque étage est simplement effectuée par la sortie du compteur précédent. Le compteur binaire à 4 étages affiche les nombres de 0 à 15, grâce à un afficheur dont les entrées sont connectées aux sorties des bascules D.

Notez que le signal de réinitialisation Reset est commun à tous les étages.

Déterminez la bascule qui génère le poids fort et celle qui génère le poids faible.

Réponse :

L'horloge externe Clock1 commande la première bascule D (Dreg5), dont la sortie correspond au bit de poids faible (il changera d'état à chaque front descendant de Clock1). La sortie de Q de cette bascule D sert d'horloge pour la suivante et ainsi de suite jusqu'à la dernière bascule (Dreg8), dont la sortie correspond au poids faible du mot de 4 bits.

Compteur asynchrone 0..15 basé sur 4 diviseurs d'horloge

Compteur asynchrone 0..15 basé sur 4 diviseurs d'horloge

La simulation est facilitée avec l'utilisation d'un composant horloge que l'on trouve dans la palette de DSCH (au lieu d'un bouton). La fréquence de l'horloge est programmable en double-cliquant dans le symbole.

La simulation reportée ci-dessous montre les valeurs successives attendues.

Valeurs successives du compteur 0..15

Valeurs successives du compteur 0..15

Inconvénient : Le compteur asynchrone peut générer plusieurs valeurs intermédiaires en cascade lors de la commutation, en raison de retards cumulés dans la chaîne de division. Avant que la dernière étape ne soit correctement franchie, plusieurs valeurs parasites apparaissent dans les chronogrammes, à l'échelle de la nanoseconde.


Variante du Compteur Asynchrone


La figure ci-dessous propose un compteur de 0 à 11.

Basé sur l'architecture du compteur étudié précédemment, il utilise une porte ET à 4 entrées, chacune connectée à une sortie de bascule Dreg (Q ou nQ selon le nombre à atteindre), pour générer une commande de réinitialisation générale des cellules de Dreg une fois que le nombre souhaité (12) a été atteint.

Compteur 0..11 - On note sur la gauche en haut une porte NAND qui génère une information spécifique pour une combinaison d'entrée 0,0,1,1 soit 4+8=12, soit un reset asynchrone module 12

Compteur 0..11 - On note sur la gauche en haut une porte NAND qui génère une information spécifique pour une combinaison d'entrée 0,0,1,1 soit 4+8=12, soit un reset asynchrone module 12

La simulation est reportée ci-dessous. On note la remise à zéro une fois la valeur 12 atteinte.

Simulation d'un compteur 0..11

Simulation d'un compteur 0..11

La remise à zéro n'est effectuée qu'après l'apparition de la valeur 12. Le compteur affiche donc très brièvement 12 puis se remet à 0. La conception asynchrone est de ce fait dangereuse. On préférerait la conception synchrone, plus complexe mais plus sûre.

Dans ce chapitre, vous avez appris à réaliser un diviseur de fréquence par 2, que vous avez réutilisé pour réaliser des compteurs asynchrones. Dans le chapitre suivant, vous découvrirez comment concevoir différents types de registres.