Registrador de Deslocamento
Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 86 de 90.
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 q2Após 4 ciclos de clock, o primeiro bit de entrada atinge q3.
Interface do Módulo
| Porta | Direção | Largura | Descrição |
|---|---|---|---|
clk | input | 1 bit | Sinal de clock |
reset | input | 1 bit | Reseta todas as saídas para 0 |
d | input | 1 bit | Entrada de dados |
q0 | output | 1 bit | Saída do primeiro flip-flop |
q1 | output | 1 bit | Saída do segundo flip-flop |
q2 | output | 1 bit | Saída do terceiro flip-flop |
q3 | output | 1 bit | Saída do quarto flip-flop |
Sua tarefa é completar o módulo abaixo.
O que fazer:
- No
reset, defina todas as saídas para 0 - Em cada borda de subida do clock, desloque os dados da esquerda para a direita:
q0recebedq1recebe o antigoq0q2recebe o antigoq1q3recebe o antigoq2
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
1Introdução
O que é VerilogHardware vs SoftwareNíveis de Abstração de ProjetoSeu Primeiro MóduloComentários4Operadores Parte 1
Operadores AritméticosOperador de MóduloOperadores de ComparaçãoRecapitulação - Matemática SimplesOperadores Bitwise7Atribuição e Portas Lógicas
Atribuição ContínuaAtribuição com OperadoresPrimitivas de Portas IntegradasPortas AND, OR e NOTPortas XOR e XNORRecapitulação - Circuito de Portas Lógicas10Tomada de Decisão
Instrução IfIf - ElseRecapitulação - Comparador SimplesInstrução CaseCasex e CasezRecapitulação - Projeto de ALU2Tipos de Dados
Tipo WireTipo RegInteger e RealVetoresArraysParâmetrosRecapitulação - Declarar Sinais5Operadores Parte 2
Operadores LógicosOperadores de ReduçãoOperadores de DeslocamentoOperador de ConcatenaçãoOperador CondicionalRecapitulação - Desafio de Operadores3Sistemas de Numeração
Representação BináriaNúmeros com Tamanho DefinidoNúmeros sem Tamanho DefinidoNúmeros NegativosValores Especiais X e ZRecapitulação - Formatos de Números6Módulos
Estrutura de MóduloPortas de Entrada e SaídaPortas InoutInstanciação de MóduloMapeamento de Portas por NomeMapeamento de Portas por OrdemRecapitulação - Construa um Módulo