Menu
Coddy logo textTech

Registro de desplazamiento

Parte de la sección Fundamentos del Journey de Verilog de Coddy. Lección 86 de 90.

challenge icon

Desafío

Un registro de desplazamiento desplaza los datos de izquierda a derecha en cada flanco de reloj. Cada bit se mueve a la siguiente posición.

Cómo funciona un registro de desplazamiento 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

Después de 4 ciclos de reloj, el primer bit de entrada llega a q3.

Interfaz del módulo

PuertoDirecciónAnchuraDescripción
clkinput1 bitSeñal de reloj
resetinput1 bitRestablece todas las salidas a 0
dinput1 bitEntrada de datos
q0output1 bitSalida del primer flip-flop
q1output1 bitSalida del segundo flip-flop
q2output1 bitSalida del tercer flip-flop
q3output1 bitSalida del cuarto flip-flop

Tu tarea es completar el módulo siguiente.

Qué hacer:

  1. En reset, establece todas las salidas en 0
  2. En cada flanco ascendente del reloj, desplaza los datos de izquierda a derecha:
    1. q0 obtiene d
    2. q1 obtiene el q0 antiguo
    3. q2 obtiene el q1 antiguo
    4. q3 obtiene el q2 antiguo

Pruébalo tú mismo

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)
  // En reset: q0<=0, q1<=0, q2<=0, q3<=0
  // Si no: desplaza los datos: q0 <= d, q1 <= q0, q2 <= q1, q3 <= q2

endmodule

Todas las lecciones de Fundamentos

Practica por tu cuenta: Compilador de Verilog online