Menu
Coddy logo textTech

Shift Register

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

challenge icon

Desafio

Um registrador de deslocamento desloca os dados da esquerda para a direita a cada borda do clock. Cada bit passa para a próxima posição.

Como funciona um registrador de deslocamento 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 chega a q3.

Interface do módulo

PortaDireçãoLarguraDescrição
clkinput1 bitSinal de clock
resetinput1 bitRedefine 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. Em reset, defina todas as saídas como 0
  2. A cada borda de subida do clock, desloque os dados da esquerda para a direita:
    1. q0 recebe d
    2. q1 recebe o q0 old
    3. q2 recebe o q1 old
    4. q3 recebe o q2 old

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: Adicione always @(posedge clk or posedge reset)
  // No reset: q0<=0, q1<=0, q2<=0, q3<=0
  // Senão: desloque os dados: q0 <= d, q1 <= q0, q2 <= q1, q3 <= q2

endmodule

Todas as lições de Fundamentos

Pratique por conta própria: Compilador de Verilog online