Registrador de Deslocamento
Parte da seção Fundamentos do Journey de Verilog da Coddy. Lição 86 de 90.
Desafio
Um registrador de deslocamento desloca os dados da esquerda para a direita a cada borda de clock. Cada bit move-se para a próxima posição.
Como funciona um registrador de deslocamento de 4 bits
Initial: q0=0, q1=0, q2=0, q3=0
Each clock: q0 = d, q1 = old q0, q2 = old q1, q3 = old q2
Shifting in d = 1, 0, 1, 0:
Clock 1 (d=1): q0=1, q1=0, q2=0, q3=0
Clock 2 (d=0): q0=0, q1=1, q2=0, q3=0
Clock 3 (d=1): q0=1, q1=0, q2=1, q3=0
Clock 4 (d=0): q0=0, q1=1, q2=0, q3=1Após 4 ciclos de clock, o primeiro bit de entrada chega a q3.
Interface do módulo
| Porta | Direção | Largura | Descrição |
|---|---|---|---|
clk | entrada | 1 bit | Sinal de clock |
reset | entrada | 1 bit | Redefine todas as saídas para 0 |
d | entrada | 1 bit | Entrada de dados |
q0 | saída | 1 bit | Saída do primeiro flip-flop |
q1 | saída | 1 bit | Saída do segundo flip-flop |
q2 | saída | 1 bit | Saída do terceiro flip-flop |
q3 | saída | 1 bit | Saída do quarto flip-flop |
Sua tarefa é completar o módulo abaixo.
O que fazer:
- Em
reset, defina todas as saídas como 0 - A cada borda de subida do clock, desloque os dados da esquerda para a direita:
q0recebedq1recebe oq0antigoq2recebe oq1antigoq3recebe oq2antigo
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
1Introdução
O que é VerilogHardware vs. SoftwareSeu primeiro móduloComentáriosNíveis de abstração de projeto4Operadores Parte 1
Operadores aritméticosOperador móduloOperadores de comparaçãoRecapitulação - Matemática simplesOperadores bit a bit7Atribuições e Portas
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ões
Declaração IfIf - ElseRevisão - Comparador SimplesDeclaração CaseCasex e CasezRevisão - Projeto de ALU2Tipos de Dados
Tipo WireTipo RegInteiro e RealVetoresArraysParâmetrosRecapitulação - Declarar Sinais5Operadores - Parte 2
Operadores lógicosOperadores de reduçãoOperadores de deslocamentoOperador de concatenaçãoOperador condicionalRevisão - Desafio de operadores3Sistema Numérico
Representação BináriaNúmeros com Tamanho DefinidoNúmeros sem Tamanho DefinidoNúmeros NegativosValores Especiais X e ZRevisão - Formatos Numéricos6Módulos
Estrutura de MódulosPortas de Entrada e SaídaPortas InoutInstanciação de MódulosMapeamento de Portas por NomeMapeamento de Portas por OrdemRecapitulação — Construindo um MóduloPratique por conta própria: Compilador de Verilog online