TD3 Compteurs
ESIEE Paris – Fonctions numériques (IGE-1201)
1 LFSR 3 bits
1. Réalisez le chronogramme des sorties du LFSR 3 bits ci-dessus.
Aide méthodologique :
(a) resetn est-il actif à l’état haut ou bas ?
(b) Quelles sont les valeurs initiales (quand resetn est activé) de Q2 , Q1 et Q0 ?
(c) Après avoir désactivé resetn, à quels instants Q2 , Q1 et Q0 évoluent-ils ?
(d) Placez Q+ + +
2 , Q1 et Q0 sur le schéma et déterminez leurs équations logiques.
(e) Dans le chronogramme, comme dans l’exemple vu en cours, activez resetn au début puis
désactivez le jusqu’à la fin (attention, ne pas désactiver le resetn en même temps qu’un
front montant d’horloge).
Ensuite représentez l’évolution de Q2 , Q1 et Q0 au cours du temps jusqu’à repasser par un
état déjà rencontré.
(f) Séquence d’un compteur : liste ordonnée des valeurs obtenues en sortie du compteur depuis
le reset. Quand s’arrêter ? Quand la séquence se répète ou que la sortie se bloque sur une
valeur fixe.
2. Que se passe t’il si le circuit est initialisé à 000 ?
3. Relever la séquence du compteur en considérant que la sortie est en CBN. Quelle est la longueur
de la séquence ?
Un peu de culture : un LFSR (Linear Feedback Shift Register) comprenant N bascules utilise 1 ou
3 xor à 2 entrées dont le positionnement judicieux (déterminé grâce à la théorie mathématique des
corps finis) permet d’obtenir une séquence de longueur 2N − 1. Un LFSR prend moins de ressources
et est plus rapide qu’un compteur binaire naturel pour une longueur de séquence quasi identique.
Particularité supplémentaire, il compte de manière quasi (prédictible) aléatoire.
2 Incrémenteur avec commandes de saturation et réinitialisation
Soit un compteur utilisant le code binaire naturel avec pour valeur maximale 3. Après initialisation,
la valeur du compteur doit être 1.
Le compteur possède les fonctions synchrones suivantes (signaux de contrôle B et C actifs à l’état
haut) :
— Mise à 0 du compteur (si C est actif)
— Incrémentation du compteur (si C est inactif)
— Configuration du comportement lorsque la valeur maximale est atteinte et que le compteur
doit être incrémenté :
— si B est actif : le compteur passe à 0
— si B est inactif : le compteur reste bloqué à la valeur maximale
1. Concevoir le compteur en utilisant la méthode du cours. Vous devez aller jusqu’au schéma.
Aide méthodologique :
(a) Combien de bits sont nécessaires pour représenter la plus grande valeur du compteur ? En
déduire le nombre de bascules du compteur.
(b) Réaliser la table de vérité, n’oubliez pas chaque bascule apparaît 2 fois dans la table car on
considère séparément l’entrée des bascules (Q+ i ) et les sorties des bascules (Qi ).
À partir des valeurs actuelles Qi de chaque bascule et des entrées du circuit, le circuit calcule :
— les prochaines valeurs Q+
i qui seront affectées aux bascules,
— éventuellement les valeurs des sorties du circuit si celles-ci ne sont pas directement les
sorties des bascules.
(c) Extraire et simplifier les équations.
(d) Réaliser le schéma sans oublier de représenter les bascules et de connecter le signal d’initia-
lisation (resetn).
2. Ajouter une sortie max valant 1 uniquement lorsque la valeur actuelle du compteur correspond
à sa valeur maximale.
Vous devez utiliser la méthode du cours et aller jusqu’au schéma en mettant directement à jour
le schéma obtenu précédemment.
3 Clignotement contrôlé
La carte DE1-SOC intègre un oscillateur permettant d’obtenir un signal d’horloge CLOCK50 de fré-
quence fclk = 50 MHz. Dans cet exercice le signal CLOCK50 sera connecté à l’entrée horloge de toutes
les bascules.
1. Version 1
Un étudiant à conçu le circuit représenté ci-après pour faire clignoter une LED. Cependant,
une fois sur carte DE1-SOC pour test le circuit ne se comporte pas tout à fait comme prévu . . .
Qled+ PRN Qled
D Q LED
CLOCK50
CLRN
resetn
(a) Compléter le chronogramme
CLOCK50
resetn
Qled
(b) Déterminer les valeurs suivantes :
— PmajDF F : durée minimale pendant laquelle la valeur mémorisée par la bascule est
conservée sans être modifiée.
— fmajDF F : fréquence de mise à jour de la bascule.
— Pled : période du signal LED.
— fled : fréquence de clignotement du signal led
(c) Déduire des questions précédentes le problème rencontré au niveau du clignotement de la
LED une fois le circuit testé sur carte.
2. Version 2
L’étudiant aimerait réduire la fréquence de clignotement. Cependant, à cause de la structure
interne du FPGA, il est interdit de modifier le signal d’horloge (CLOCK50).
Après une longue réflexion, l’étudiant en déduit que la seule solution pour ralentir le clignote-
ment est d’utiliser une bascule avec entrée ENA (DFFE). Pour tester son hypothèse, l’étudiant
modifie le circuit pour utiliser une DFFE dont l’entrée ENA est contrôlé par l’incrémenteur
(INCR_EXO2) réalisé précédemment.
ctempo
2
Qled+ PRN Qled
0 C D Q LED
Q
1 B INCR_EXO2 2 CLOCK50
ena
CLOCK50 max ENA
resetn CLRN
resetn resetn
(a) Compléter le chronogramme.
CLOCK50
resetn
ctempo
ena
Qled
(b) Déterminer les valeurs suivantes pour la version 2 du circuit :
— PmajDF F : durée minimale pendant laquelle la valeur mémorisée par la bascule est
conservée sans être modifiée.
— fmajDF F : fréquence de mise à jour de la bascule.
— Pled : période du signal LED.
— fled : fréquence de clignotement du signal led.
3. Version 3
L’enseignant propose de fournir à l’étudiant un compteur de temporisation nommé GEN_CLKENA
pour remplacer INCR_EXO2.
GEN_CLKENA possède une sortie EN_USER active lorsque la valeur du compteur interne à GEN_CLKENA
atteint sa valeur maximale CPT_MAX pendant 1 cycle d’horloge avant de revenir à 0 au cycle
d’horloge suivant.
Qled+ PRN Qled
D Q LED
GEN_CLKENA CLOCK50
ena
CLOCK50 EN_USER ENA
resetn CLRN
resetn resetn
(a) Déterminer la valeur de CPT_MAX pour que la LED clignote 3 fois par seconde (en seconde
la LED doit passer par la séquence : OFF, ON, OFF, ON, OFF, ON). Vous devez justifier
votre raisonnement.
(b) Déduire de la réponse précédente le nombre de bascule minimal du compteur de tempo-
risation.
4 Exercices supplémentaires
4.1. Compteur de Johnson
1. Déterminez la séquence d’un compteur de Johnson 5 bits. Quelle est la longueur de la séquence ?
2. Dans un compteur de Johnson 5 bits, si la valeur initiale est 00010, quelle est la séquence
du compteur ? Cette séquence est appelée cycle parasite. Existe t’il un autre cycle parasite ?
Adaptez le schéma du compteur de Johnson afin que si le compteur rentre dans le cycle parasite,
il revienne automatiquement (après quelques cycles d’horloge) dans le cycle normal.
4.2. Compteur BCD
1. Concevez un compteur BCD 1 chiffre (avec une retenue entrante Cin et une retenue sortante
Cout ). Si la retenue entrante vaut 1, le compteur est incrémenté au prochain front montant
d’horloge (sinon le compteur est gelé).
Aide méthodologique : vous pouvez adapter les équations de l’exo 1 du TD 2.
2. Utilisez votre composant (plusieurs fois) pour réaliser un compteur BCD 3 chiffres.
4.3. Amélioration montre/chronomètre à quartz L’objectif est d’ajouter deux afficheurs 7
segments à une montre à quartz pour afficher les quarts de secondes. En conséquence, en fonction
du temps, les afficheurs 7 segments afficheront l’une des valeurs suivante : 00, 25, 50 ou 75.
1. On associe un état à chacune des valeurs pouvant être affichée. En déduire le nombre N d’états
du contrôleur d’affichage.
2. Concevoir un compteur à N états dont la séquence en CBN est 0, 1, ..., N − 1 (la séquence
est répétée à l’infini). Le compteur doit aussi disposer d’une entrée E permettant de geler le
compteur quand E est à l’état bas. Vous devez suivre la méthode présentée en cours et utiliser
des bascules D sans entrée ENA. Vous nommerez la sortie du compteur Q.
3. Comme sur la plupart des montres, le signal d’horloge provient d’un quartz taillé en diapason
pour vibrer à une fréquence de 32,768 KHz.
En vous aidant du chronogramme ci-après (ignorer la ligne cpt_cycles, utilisée pour la question
suivante) :
(a) Calculer Pclk la période de l’horloge.
(b) Calculer Pmaj_Q , la durée entre 2 mises à jour du compteur conçu question 2.
(c) Compléter sur le chronogramme les valeurs que doit prendre le signal ena, branché sur
l’entrée E du compteur d’affichage, pour que Pmaj_Q soit respectée.
En déduire la valeur de V le nombre de cycles d’horloge s’écoulant entre 2 mises à jour du
compteur.
Pclk
... ... ... ...
clk
... ... ... ...
resetn
... ... ... ...
Q 0 1 2 3 0
Pmaj_Q
ena
... ... ... ...
cpt_cycles 0 1 2 3
4. On vous fourni un composant gen_clkena ayant pour sortie ena. Ce composant utilise en
interne un compteur cpt_cycles incrémenté à chaque cycle et rebouclant à 0 après avoir
atteint V-1. La sortie ena de gen_clkena passe à l’état haut uniquement quand la valeur du
compteur interne cpt_cycles est V-1.
(a) Complétez la ligne cpt_cycles du chronogramme.
(b) En représentant le compteur d’affichage de la question 2 par un symbole et en utilisant le
composant gen_clkena (lui aussi représenté par un symbole) faire un premier schéma per-
mettant d’obtenir avec une horloge de fréquence fclk = 32, 768 KHz une sortie Q respectant
les temps du chronogramme.
5. Compléter le circuit précédant pour que selon la valeur de Q, 2 afficheurs 7 segments affichent
00, 25, 50 ou 75. Vous pouvez utiliser au maximum 2 décodeurs 7 segments (7seg_conv).
Pour simplifier les schémas : on utilise des 7seg_conv avec entrée hex 4 bits et sortie abcdefg
7 bits, et des multiplexeurs avec entrées multibits.
6. Supposons que vous avez oublié d’ajouter l’entrée E au compteur N états. Quelle modification
pourriez vous faire pour ajouter l’entrée E sans avoir à modifier les équations du compteur ?