Menu
Coddy logo textTech

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étodoDescrição
always com atraso de #Método mais comum
loop foreverMétodo alternativo
loop repeatPara 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 = 0 no tempo 0
  • A cada 5 unidades de time, clk alterna
  • 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
end

Mesmo 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
end

Gera exatamente 10 bordas de clock (5 ciclos completos) e então para.

challenge icon

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:

  1. Inicialize clk como 0 no time 0 usando um initial block
  2. Use um always block com um atraso para fazer toggle em clk every 4 time units

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
endmodule
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos

Pratique por conta própria: Compilador de Verilog online