Registre à décalage
Fait partie de la section Fondamentaux du Journey Verilog de Coddy. Leçon 86 sur 90.
Défi
Un registre à décalage décale les données de gauche à droite à chaque front d’horloge. Chaque bit se déplace vers la position suivante.
Fonctionnement d’un registre à décalage de 4 bits
Initial: q0=0, q1=0, q2=0, q3=0
Each clock: q0 = d, q1 = old q0, q2 = old q1, q3 = old q2
Shifting in d = 1, 0, 1, 0:
Clock 1 (d=1): q0=1, q1=0, q2=0, q3=0
Clock 2 (d=0): q0=0, q1=1, q2=0, q3=0
Clock 3 (d=1): q0=1, q1=0, q2=1, q3=0
Clock 4 (d=0): q0=0, q1=1, q2=0, q3=1Après 4 cycles d’horloge, le premier bit d’entrée atteint q3.
Interface du module
| Port | Direction | Largeur | Description |
|---|---|---|---|
clk | input | 1 bit | Signal d’horloge |
reset | input | 1 bit | Réinitialise toutes les sorties à 0 |
d | input | 1 bit | Entrée de données |
q0 | output | 1 bit | Sortie de la première bascule |
q1 | output | 1 bit | Sortie de la deuxième bascule |
q2 | output | 1 bit | Sortie de la troisième bascule |
q3 | output | 1 bit | Sortie de la quatrième bascule |
Ta tâche consiste à terminer le module ci-dessous.
À faire :
- Lors de
reset, définis toutes les sorties à 0 - À chaque front montant de l’horloge, décale les données de gauche à droite :
q0reçoitdq1reçoit l’ancienq0q2reçoit l’ancienq1q3reçoit l’ancienq2
Essayez vous-même
module shift_register (
input clk,
input reset,
input d,
output reg q0,
output reg q1,
output reg q2,
output reg q3
);
// TODO: Ajouter always @(posedge clk or posedge reset)
// Au reset : q0<=0, q1<=0, q2<=0, q3<=0
// Sinon : décaler les données : q0 <= d, q1 <= q0, q2 <= q1, q3 <= q2
endmodule
Toutes les leçons de Fondamentaux
1Introduction
Qu’est-ce que VerilogMatériel vs logicielVotre premier moduleCommentairesNiveaux d’abstraction de conception4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloOpérateurs de comparaisonRécapitulatif - Mathématiques simplesOpérateurs bit à bit7Affectations et portes
Affectation continueAffectation avec opérateursPrimitives de portes intégréesPortes AND, OR et NOTPortes XOR et XNORRécapitulatif - Circuit de portes logiques10Prise de décision
Instruction IfIf - ElseRécapitulatif - Comparateur simpleInstruction CaseCasex et CasezRécapitulatif - Conception d'une ALU2Types de données
Type wireType regEntiers et réelsVecteursTableauxParamètresRécapitulatif - Déclarer des signaux5Opérateurs - Partie 2
Opérateurs logiquesOpérateurs de réductionOpérateurs de décalageOpérateur de concaténationOpérateur conditionnelRécapitulatif - Défi sur les opérateurs11Boucles
Boucle ForBoucle WhileBoucle RepeatBoucle ForeverInstruction DisableRécapitulatif - Modèles de boucles3Système de numération
Représentation binaireNombres dimensionnésNombres non dimensionnésNombres négatifsValeurs spéciales X et ZRécapitulatif - Formats des nombres6Modules
Structure d’un modulePorts d’entrée et de sortiePorts InoutInstantiation d’un moduleAssociation des ports par nomAssociation des ports par ordreRécapitulatif - Construire un module9Blocs procéduraux
Bloc alwaysBloc initialListe de sensibilitéAffectation bloquanteAffectation non bloquanteRécapitulatif - always vs initial12Projet de multiplexeur
Conception d’un multiplexeur 2 vers 1Conception d’un multiplexeur 4 vers 115Contrôleur de feux de circulation
Définition des étatsLogique de la machine à étatsEntraînez-vous par vous-même : Compilateur Verilog en ligne