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 (shift register) desplaza 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
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

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

Interfaz del módulo

PuertoDirecciónAnchoDescripción
clkinput1 bitSeñal de reloj (Clock)
resetinput1 bitReinicia todas las salidas a 0
dinput1 bitEntrada de datos (data)
q0output1 bitPrimera salida de flip-flop
q1output1 bitSegunda salida de flip-flop
q2output1 bitTercera salida de flip-flop
q3output1 bitCuarta salida de flip-flop

Tu tarea es completar el siguiente módulo.

Qué hacer:

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

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
  // Else: desplazar datos: q0 <= d, q1 <= q0, q2 <= q1, q3 <= q2

endmodule

Todas las lecciones de Fundamentos