Altifigence Academy

30 / 63 · Concept

État suivant du compteur et priorité du reset

Unifier incrémentation, maintien, reset et rebouclage, puis calculer les résultats front par front.

Définir d'abord la fonction d'état suivant

Un compteur libre de NN bits avec reset synchrone et enable se définit ainsi :

Ck+1={0rk=1(Ck+1) mod 2Nrk=0, ek=1Ckrk=0, ek=0C_{k+1}=\begin{cases} 0&r_k=1\\ (C_k+1)\bmod2^N&r_k=0,\ e_k=1\\ C_k&r_k=0,\ e_k=0 \end{cases}

Le resetReset Commande ramenant l'état à la valeur initiale spécifiée. Son caractère synchrone/asynchrone et sa priorité sur les autres commandes doivent être définis. est prioritaire ; enable=0 conserve l'état. Dans la visualisation ci-dessous, vous pouvez modifier enable pour comparer incrémentation et maintien.

Avec q initial=11, sélectionner reset=1 change seulement l'état suivant en 00. Avancez l'horloge pour constater quand le stockage change. Relâchez reset et parcourez 00→01→10→11→00 ; avec enable=0, vérifiez que les fronts continuent mais q reste constant.

Comparer l'état avant et après le front montant

Le reset synchrone est prioritaire sur enable. Si enable=0, conserver la valeur mémorisée. q=11; q_next = (q + 1) mod 4

Prédire chaque front

Avec un état initial de 3 et reset=1 au premier front puis 0, le compteur deux bits donne après les fronts 0,1,2,3,0. Même si reset est activé entre deux fronts, le registreRegistre Circuit stockant plusieurs bits d'état. Les registres synchrones du cours capturent leur entrée définie sur un front d'horloge. En savoir plus synchrone ne passe pas immédiatement à 0 avant le front montantFront montant Instant où l'horloge passe de 0 à 1, distinct du niveau désignant tout l'intervalle CLK=1. En savoir plus.

Frontreset avant le frontAncien CNouveau C
1130
2001
3012
4023
5030

Chaque colonne du chronogramme observe un front. Les entrées précèdent le front ; les états suffixés after suivent la mise à jour. L'alignement est un ordre d'échantillonnage, pas un retard physiqueRetard de propagation Temps nécessaire après un changement d'entrée pour que la sortie se stabilise à sa valeur correcte. Équivalence logique et caractéristiques temporelles sont distinctes. En savoir plus. À partir de 3, le premier reset prévaut sur l'incrémentation ; le dernier front reboucle de 3 à 0.

Reset et retour à zéro d'un compteur 2 bits
Voir les données du chronogramme
Données du chronogramme : chaque caractère représente un intervalle ; un point maintient l'état précédent ; p représente un cycle d'horloge.
SignalForme d'ondeValeurs du bus
edge23452E0 → E1 → E2 → E3 → E4
reset10...
count avant2345211 → 00 → 01 → 10 → 11
count après2345200 → 01 → 10 → 11 → 00

Ne pas confondre les types de reset

Un if(rst) dans always_ff @(posedge clk) est synchrone, contrairement à un reset dont le front figure dans la liste d'événements. La désactivation asynchrone impose notamment recovery/removal ; ne changez pas de type simplement pour atteindre 0 plus vite.

Pour produire une impulsion périodique, définissez aussi son état déclencheur : signal haut tant que le compte est maximal, ou impulsion d'un cycle après le front de retour à 0 ? L'équation et l'observation diffèrent.

Essayez vous-même

Un compteur trois bits vaut 7. Appliquez rst=0,en=0 au premier front puis rst=0,en=1 au suivant. Quels sont les états ?

Lire l’explication

Le premier front conserve 7 ; le second reboucle sur trois bits et donne 0. Conserver la valeur 8 demande une largeur supérieure ou une politique distincte de saturation/erreur.

Votre choix s’applique à ce navigateur. Modifiez-le à tout moment en bas de page.