40 / 63 · Travaux pratiques
Travaux pratiques : déplacement série et ordre des bits
Vérifier sens, bits perdus et latence après reset avec motifs binaires et référence entière.
Les leçons sont gratuites. Inscrivez-vous pour enregistrer vos progrès.
Circuit étudié et observation
À chaque front montantFront montant Instant où l'horloge passe de 0 à 1, distinct du niveau désignant tout l'intervalle CLK=1. En savoir plus, les deux bits bas de l'ancien q se déplacent à gauche et din entre au bit 0. Appliquez 1,0,1,1 et comparez le mouvement.
Avant de commencer
Préparez un projet Desktop Digital Design Studio et ses autorisations d'exécution. Chaque exemple se place dans un dossier distinct sous rtl/top.sv.
Source SystemVerilog
module top (
input logic clk,
input logic rst,
input logic din,
output logic [2:0] q
);
// Old q[1:0] and din are captured together at each rising edge.
always_ff @(posedge clk)
if (rst) q <= 3'b000;
else q <= {q[1:0], din};
endmoduleExécution
Dans New analysis, choisissez Two-state single-clock v1, Clock port=clk et période=1000ps. Lancez Preflight puis Run RTL simulation avec :
| Réglage | Valeur |
|---|---|
| Valeur initiale des registres, LSB en premier | [false,false,false] |
| Reset port | rst · Active high · 1 cycle |
| Maximum cycles / time | 5 / 5000ps |
Stimuli
[
{
"inputs": {
"din": [
false
]
}
},
{
"inputs": {
"din": [
true
]
}
},
{
"inputs": {
"din": [
false
]
}
},
{
"inputs": {
"din": [
true
]
}
},
{
"inputs": {
"din": [
true
]
}
}
]Chaque colonne observe un front montant : entrées avant, états after après mise à jour. L'alignement 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. La première colonne est 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. En savoir plus : son din=0 ne compte pas comme donnée reçue. Comparez les quatre entrées suivantes à l'ordre du JSON.
Voir les données du chronogramme
| Signal | Forme d'onde | Valeurs du bus |
|---|---|---|
| edge | 23452 | E0 → E1 → E2 → E3 → E4 |
| reset | 10... | |
| din | 0101. | |
| q après | 23452 | 000 → 001 → 010 → 101 → 011 |
Résultats
5 cycles · q=011. Après les fronts : 000→001→010→101→011.
Le TP utilise du RTL 0/1 à horloge unique, sans banc #delay, initial ou X/Z. L'indication de leçon terminée est un suivi pédagogique, pas un résultat de simulation.
Vérifier la concaténation par une référence indépendante
Copier la concaténationConcaténation Juxtaposition de motifs de bits. La largeur résultante est la somme des largeurs, ce qui diffère d'une addition numérique. En savoir plus RTL dans l'attendu peut dupliquer l'erreur. Utilisez un modèle entier non signéNon signé Interprétation d'un motif de bits comme entier non négatif. Sur n bits, la plage va de 0 à 2^n−1 et peut différer de l'interprétation signée du même motif. En savoir plus.
Après reset, les entrées 1,0,1,1 donnent . Sur trois bits, cela doit correspondre au chronogramme. À la dernière étape, ; ne garder que trois bits donne 3.
| Bits reçus | Entrée | q après le front | Valeur entière |
|---|---|---|---|
| 0 | Reset | 000 | 0 |
| 1 | 1 | 001 | 1 |
| 2 | 0 | 010 | 2 |
| 3 | 1 | 101 | 5 |
| 4 | 1 | 011 | 3 |
Avec reset=0 et enable=1, sélectionnez din=1,0,1,1 et avancez à chaque fois : q=001,010,101,011. Prédisez dans ce modèle pas à pas, puis comparez au RTL réel. enable permet aussi de tester l'arrêt de l'exercice complémentaire.
Le reset synchrone est prioritaire sur enable. Si enable=0, conserver la valeur mémorisée. q=000; q_next = (2q + din) mod 8
Suivre un bit pour vérifier le sens
Après reset, entrez un 1 puis trois 0 : 001 → 010 → 100 → 000. Le 1 doit traverser les bits 0,1,2 puis disparaître. Tester seulement tous-0 ou tous-1 peut masquer une direction incorrecte.
Dans trois étagesRegistre 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, un bit capturé initialement au front arrive au bit 2 après le front . Compter depuis le front de lancement d'un registre externe donne une autre origine : indiquez départ et arrivée dans votre rapport.
Prolongement : déplacer seulement les entrées valides
Ajouter valid avec maintien de q lorsque valid=0 diffère d'un pipeline qui avance à chaque cycle en transportant un valid distinct. Le premier avance selon le nombre de bits reçus ; le second selon les cycles réels. Ne vérifiez pas les deux avec la même séquence attendue.
Essayez vous-même
Après reset, les bits valides sont 1,0,1. Un cycle valid=0 apparaît avant et après le deuxième bit ; q reste alors constant. Donnez q final et l'arrivée du premier 1 au bit 2.
Lire l’explication
Seules trois entrées valides changent l'état : q final=101. Le premier 1 atteint bit 2 au front capturant la troisième entrée valide. Il faut deux déplacements supplémentaires après sa première capture, plus deux cycles invalides en temps réel.