Menu
Coddy logo textTech

Registro a scorrimento

Fa parte della sezione Fondamenti del percorso Verilog di Coddy. Lezione 86 di 90.

challenge icon

Sfida

Un registro a scorrimento sposta i dati da sinistra a destra a ogni fronte di clock. Ogni bit passa alla posizione successiva.

Come funziona un registro a scorrimento a 4 bit

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

Dopo 4 cicli di clock, il primo bit di input raggiunge q3.

Interfaccia del modulo

PortaDirezioneLarghezzaDescrizione
clkinput1 bitSegnale di clock
resetinput1 bitReimposta tutte le uscite a 0
dinput1 bitIngresso dati
q0output1 bitUscita del primo flip-flop
q1output1 bitUscita del secondo flip-flop
q2output1 bitUscita del terzo flip-flop
q3output1 bitUscita del quarto flip-flop

Il tuo compito è completare il modulo qui sotto.

Cosa fare:

  1. Su reset, imposta tutte le uscite a 0
  2. A ogni fronte di salita del clock, sposta i dati da sinistra a destra:
    1. q0 riceve d
    2. q1 riceve il vecchio valore di q0
    3. q2 riceve il vecchio valore di q1
    4. q3 riceve il vecchio valore di q2

Provalo tu

module shift_register (
  input clk,
  input reset,
  input d,
  output reg q0,
  output reg q1,
  output reg q2,
  output reg q3
);
  
  // TODO: Añade always @(posedge clk or posedge reset)
  // Al activar reset: q0<=0, q1<=0, q2<=0, q3<=0
  // En caso contrario, desplaza los datos: q0 <= d, q1 <= q0, q2 <= q1, q3 <= q2

endmodule

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore Verilog online