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.

Comment fonctionne 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 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

Votre tâche est de 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)
  // Lors du reset : q0<=0, q1<=0, q2<=0, q3<=0
  // Sinon : décalage des données : q0 <= d, q1 <= q0, q2 <= q1, q3 <= q2

endmodule

Toutes les leçons de Fondamentaux