2 / 37 · Concept
Signaux et ports : contrat de largeur, de direction et de temps
Lire une interface et distinguer les critères de vérification des sorties combinatoires et mémorisées.
Les leçons sont gratuites. Inscrivez-vous pour enregistrer vos progrès.
Lire les ports comme un contrat de circuit
input logic [7:0] data est un port transmettant huit bits simultanément, pas huit valeurs successives. Le type logic ne crée pas à lui seul un élément de stockage. Le comportement matériel dépend d'une commande par affectation combinatoire ou par bloc séquentiel déclenché sur un front.
Outre largeur et direction, vérifiez quand le signal est valide, qui le commande et sa valeur après reset. Sans ces informations, des modules individuellement corrects peuvent former un système incorrect.
Deux types de sorties pour un même MUX
La manipulation observe ensemble le résultat sélectionné y et sa valeur stockée sampled_y.
La première équation décrit la fonction combinatoire ; la seconde, le modèle synchrone idéal qui mémorise y stable juste avant le front. Comparer systématiquement les deux sorties aux entrées du même instant ferait déclarer erroné un 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 correct.
assign y = sel ? b : a;
always_ff @(posedge clk) sampled_y <= y;Le simulateur ordonne les événements même à une même date. Le composant réel possède des contraintes setupSetup Durée minimale de stabilité de la donnée avant le front de capture. En cas de violation, le résultat mémorisé n'est pas garanti. En savoir plus/hold et un retard clock-to-Q. Ces équations ne les font pas disparaître : elles définissent le point d'observation de la vérification fonctionnelle.
Les flèches indiquent les dépendances de données. Si a, b ou sel change, y change d'abord ; sampled_y ne mémorise une nouvelle valeur qu'au front montantFront montant Instant où l'horloge passe de 0 à 1, distinct du niveau désignant tout l'intervalle CLK=1. En savoir plus.
- a · b · sel: Entrées simultanées
- MUX → y: Calculer avec la sélection courante
- DFF → sampled_y: Mémoriser y au front montant
Questions de revue
- sel est-il un 0/1 établi ou un signal externe asynchrone ?
- La comparaison avec sampled_y après un changement de y a-t-elle lieu après le prochain front valide ?
- La valeur initiale de sampled_y vient-elle d'un 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. En savoir plus ou d'un réglage d'initialisation de l'outil ?
L'initialisation explicite de cette manipulation rend le modèle 0/1 reproductible. Elle ne garantit pas le comportement de mise sous tension d'une puce réelle.
Essayez vous-même
a passe de 0 à 1 entre deux fronts d'horloge tandis que sel reste à 0. Quand changent y et sampled_y ?
Lire l’explication
y change après l'évaluation ou la propagation du chemin combinatoire. sampled_y change au prochain front montant qui capture cette valeur. Une variation près du front pose un problème setup/hold réel ; ce modèle simple ne suffit pas à conclure à la sûreté matérielle.