Menu
Coddy logo textTech

Shift Register

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 data 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 input llega a q3.

Interfaz del módulo

PuertoDirecciónAnchoDescripción
clkinput1 bitSeñal de reloj
resetinput1 bitRestablecer todas las salidas a 0
dinput1 bitEntrada de data
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 data de izquierda a derecha:
    1. q0 recibe d
    2. q1 recibe old q0
    3. q2 recibe old q1
    4. q3 recibe 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: 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