Clock Generation
Parte da seção Fundamentos do Journey de Verilog da Coddy. Lição 71 de 90.
Um clock é um sinal que alterna continuamente entre 0 e 1 em intervalos regulares. Clocks são essenciais para lógica sequencial, como flip-flops e contadores.
Por que gerar um clock
Em ambientes de teste, você precisa de um clock para testar circuitos sequenciais. O clock conduz o comportamento de flip-flops, registradores e máquinas de estado.
Métodos para Gerar um Clock
| Método | Descrição |
|---|---|
always com atraso de # | Método mais comum |
loop forever | Método alternativo |
loop repeat | Para um número fixo de ciclos |
Método 1: bloco always com atraso
reg clk;
initial begin
clk = 0;
end
always #5 clk = ~clk;clk = 0no tempo 0- A cada 5 unidades de time,
clkalterna
- Period = 10 time units
- Frequência = 1/10 = 0.1 por time unit
Método 2: Loop forever
reg clk;
initial begin
clk = 0;
forever begin
#5 clk = ~clk;
end
endMesmo resultado que o método always.
Método 3: Repetir por ciclos fixos
reg clk;
initial begin
clk = 0;
repeat (10) begin
#5 clk = ~clk;
end
endGera exatamente 10 bordas de clock (5 ciclos completos) e então para.
Desafio
Add o código ausente para gerar um relógio que faz toggle every 4 time units (período = 8 time units).
O que fazer:
- Inicialize
clkcomo 0 notime0 usando uminitialblock - Use um
alwaysblockcom um atraso para fazertoggleemclkevery4timeunits
Experimente você mesmo
module clock_challenge;
reg clk;
// TODO: Passo 1 - Adicione um bloco initial para definir clk = 0
// TODO: Passo 2 - Adicione um bloco always para alternar clk a cada 4 unidades de tempo
initial begin
$monitor("Time %0t: clk = %b", $time, clk);
#20;
$display("Clock generated for 20 time units");
$finish;
end
endmoduleEsta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
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 Design13Timing And Delays
What Are DelaysGate DelaysAssignment DelaysTimescale DirectiveClock GenerationRecap - Timing Control5Operators 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