Menu
Coddy logo textTech

Registre à décalage

Fait partie de la section Fondamentaux du Journey Verilog de Coddy. Leçon 86 sur 90.

challenge icon

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=1

Après 4 cycles d’horloge, le premier bit d’entrée atteint q3.

Interface du module

PortDirectionLargeurDescription
clkinput1 bitSignal d’horloge
resetinput1 bitRéinitialise toutes les sorties à 0
dinput1 bitEntrée de données
q0output1 bitSortie de la première bascule
q1output1 bitSortie de la deuxième bascule
q2output1 bitSortie de la troisième bascule
q3output1 bitSortie de la quatrième bascule

Ta tâche consiste à terminer le module ci-dessous.

À faire :

  1. Lors de reset, définis toutes les sorties à 0
  2. À chaque front montant de l’horloge, décale les données de gauche à droite :
    1. q0 reçoit d
    2. q1 reçoit l’ancien q0
    3. q2 reçoit l’ancien q1
    4. q3 reçoit l’ancien q2

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

Entraînez-vous par vous-même : Compilateur Verilog en ligne