Altifigence Academy

42 / 63 · Concept

Vérifier le décalage et l'alignement données/valid

Détecter les erreurs masquées par les motifs symétriques et le désalignement d'un cycle de valid.

Choisir des motifs révélant les erreurs

Décaler seulement 0000 ou 1111 masque une inversion de direction. Suivez chaque position avec un motif asymétrique comme 1000 ou un seul bit à 1. Une initialisation toujours nulle peut aussi masquer certains défauts d'initialisation et de maintien.

Dans trois bitsRegistre 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 initialisés à 000, les entrées 1,0,0 donnent 001→010→100. Le sens opposé donne 100→010→001 : la différence apparaît dès le premier front.

Examiner deux représentations de la référence

Qnext=(2Q+d) mod 2NQ_{next}=(2Q+d)\bmod2^N

Comparez ce modèle numérique au RTL de tranchesTranche Sélection d'une plage contiguë de bits d'un vecteur. La plage choisie fixe largeur et ordre des bits du résultat. En savoir plus et concaténations à chaque front accepté. Pour N=3, huit états et deux entrées donnent seize transitions à tester exhaustivement. Ajoutez séparément les combinaisons reset/enable.

Chaque colonne observe un front montantFront montant Instant où l'horloge passe de 0 à 1, distinct du niveau désignant tout l'intervalle CLK=1. En savoir plus, entrées avant et états after après ; ce n'est 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. Avec q initial=000, le deuxième front a enable=0 : q reste 001 malgré le changement de din. Comptez fronts et acceptations séparément.

Sans enable, tout l'état reste figé
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
edge2345E0 → E1 → E2 → E3
enable101.
din10.1
q après2.34001 → 010 → 101

Reproduisez le chronogramme : un front avec din=1 donne 001 ; un autre avec enable=0,din=0 conserve 001. Réactivez enable et appliquez 0 puis 1 : 010 puis 101. Le modèle ne traite que les données ; la nécessité d'arrêter valid avec le même enable est examinée ci-dessous.

Distinguer entrée et valeur mémorisée pendant une pause

Le reset synchrone est prioritaire sur enable. Si enable=0, conserver la valeur mémorisée. q=000; q_next = (2q + din) mod 8

valid fait partie du chemin de données

Si les données s'arrêtent mais valid avance, ou inversement, le récepteur consomme le mauvais échantillon. Des bits de sortie corrects ne suffisent pas à prouver l'interface.

TestComportement attendu
Entrées continuesOrdre correct et latence valide fixe
enable=0 au milieuDonnées et valid maintenus ensemble
Reset au milieuSuppression de la validité de l'ancienne trame
Trames consécutivesSéparation entre fin de l'ancienne et début de la nouvelle

Notez le numéro d'acceptation pour ne pas le confondre avec le numéro de cycle. Un contre-exemple minimal contenant la limite de trame est plus efficace que la relecture répétée d'un long chronogramme.

Essayez vous-même

Les données avancent seulement avec enable=1, mais valid avance à chaque horloge. Quel stimulus révèle facilement l'erreur ?

Lire l’explication

Insérez un front d'arrêt enable=0 entre deux données différentes. valid peut arriver trop tôt ou accompagner la mauvaise donnée. Comparez à une référence appliquant la même condition d'acceptation aux données et métadonnées.

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