Shift Register
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 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 q2Após 4 ciclos de clock, o primeiro bit de entrada chega a q3.
Interface do módulo
| Porta | Direção | Largura | Descrição |
|---|---|---|---|
clk | input | 1 bit | Sinal de clock |
reset | input | 1 bit | Redefine 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:
- 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 oq0oldq2recebe oq1oldq3recebe oq2old
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 projeto4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine LogicPratique por conta própria: Compilador de Verilog online