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 shift register (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 Shift Register 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
resetinput1 bitReinicia 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 a continuación.

Qué hacer:

  1. En reset, establece todas las salidas a 0
  2. En cada flanco de subida del reloj, desplaza los datos de izquierda a derecha:
    1. q0 recibe d
    2. q1 recibe el antiguo q0
    3. q2 recibe el antiguo q1
    4. q3 recibe el antiguo 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ñadir always @(posedge clk or posedge reset)
  // Al reiniciar: q0<=0, q1<=0, q2<=0, q3<=0
  // De lo contrario: desplazar datos: q0 <= d, q1 <= q0, q2 <= q1, q3 <= q2

endmodule

Todas las lecciones de Fundamentos