Menu
Coddy logo textTech

Shift Register

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

challenge icon

Défi

Un registre à décalage shift 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’input atteint q3.

Interface du module

PortDirectionLargeurDescription
clkinput1 bitSignal d’horloge
resetinput1 bitRéinitialiser toutes les sorties à 0
dinput1 bitEntrée de data
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 consiste à compléter le module ci-dessous.

À faire :

  1. Sur reset, définir toutes les sorties à 0
  2. À chaque front montant de l’horloge, shift les données de gauche à droite :
    1. q0 reçoit d
    2. q1 reçoit old q0
    3. q2 reçoit old q1
    4. q3 reçoit old 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)
  // Sur 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

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