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 shift register (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
Clock 1: q0 = d, q1 = old q0, q2 = old q1, q3 = old q2
Clock 2: q0 = d, q1 = old q0, q2 = old q1, q3 = old q2

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

Interface du module

PortDirectionLargeurDescription
clkinput1 bitSignal de Clock
resetinput1 bitRéinitialise toutes les sorties à 0
dinput1 bitEntrée de data
q0output1 bitPremière sortie de bascule
q1output1 bitDeuxième sortie de bascule
q2output1 bitTroisième sortie de bascule
q3output1 bitQuatrième sortie de bascule

Votre tâche consiste à compléter le module ci-dessous.

Ce qu'il faut faire :

  1. Lors du reset, mettez toutes les sorties à 0
  2. À chaque front montant d'horloge, décalez 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