Menu
Coddy logo textTech

Registrador de Deslocamento

Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 86 de 90.

challenge icon

Desafio

Um shift register (registrador de deslocamento) desloca dados da esquerda para a direita em cada borda de clock. Cada bit se move para a próxima posição.

Como funciona um 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

Após 4 ciclos de clock, o primeiro bit de entrada atinge q3.

Interface do Módulo

PortaDireçãoLarguraDescrição
clkinput1 bitSinal de clock
resetinput1 bitReseta todas as saídas para 0
dinput1 bitEntrada de dados
q0output1 bitSaída do primeiro flip-flop
q1output1 bitSaída do segundo flip-flop
q2output1 bitSaída do terceiro flip-flop
q3output1 bitSaída do quarto flip-flop

Sua tarefa é completar o módulo abaixo.

O que fazer:

  1. No reset, defina todas as saídas para 0
  2. Em cada borda de subida do clock, desloque os dados da esquerda para a direita:
    1. q0 recebe d
    2. q1 recebe o antigo q0
    3. q2 recebe o antigo q1
    4. q3 recebe o antigo q2

Experimente você mesmo

module shift_register (
  input clk,
  input reset,
  input d,
  output reg q0,
  output reg q1,
  output reg q2,
  output reg q3
);
  
  // TODO: Adicionar always @(posedge clk or posedge reset)
  // No reset: q0<=0, q1<=0, q2<=0, q3<=0
  // Else: deslocar dados: q0 <= d, q1 <= q0, q2 <= q1, q3 <= q2

endmodule

Todas as lições de Fundamentos