Menu
Coddy logo textTech

Generazione del clock

Fa parte della sezione Fondamenti del percorso Verilog di Coddy. Lezione 71 di 90.

Un clock è un segnale che alterna continuamente tra 0 e 1 a intervalli regolari. I clock sono essenziali per la logica sequenziale, come i flip-flop e i contatori.

Perché generare un clock

Nei testbench, hai bisogno di un clock per testare i circuiti sequenziali. Il clock determina il comportamento dei flip-flop, dei registri e delle macchine a stati.

Metodi per generare un clock

MetodoDescrizione
always con ritardo #Metodo più comune
Ciclo foreverMetodo alternativo
Ciclo repeatPer un numero fisso di cicli

Metodo 1: Blocco always con ritardo

reg clk;

initial begin
  clk = 0;
end

always #5 clk = ~clk;
  • clk = 0 al tempo 0
  • Ogni 5 unità di tempo, clk cambia stato
  • Periodo = 10 unità di tempo
  • Frequenza = 1/10 = 0.1 per unità di tempo

Metodo 2: ciclo infinito

reg clk;

initial begin
  clk = 0;
  forever begin
    #5 clk = ~clk;
  end
end

Stesso risultato del metodo always.

Metodo 3: Ripetere per un numero fisso di cicli

reg clk;

initial begin
  clk = 0;
  repeat (10) begin
    #5 clk = ~clk;
  end
end

Genera esattamente 10 fronti di clock (5 cicli completi), poi si ferma.

challenge icon

Sfida

Aggiungi il codice mancante per generare un clock che cambia stato ogni 4 unità di tempo (periodo = 8 unità di tempo).

Cosa fare:

  1. Inizializza clk a 0 al tempo 0 usando un blocco initial
  2. Usa un blocco always con un ritardo per cambiare lo stato di clk ogni 4 unità di tempo

Provalo tu

module clock_challenge;
  reg clk;
  
  // TODO: Passaggio 1 - Aggiungi un blocco initial per impostare clk = 0
  
  
  // TODO: Passaggio 2 - Aggiungi un blocco always per commutare clk ogni 4 unità di tempo
  

  initial begin
    $monitor("Time %0t: clk = %b", $time, clk);
    #20;
    $display("Clock generated for 20 time units");
    $finish;
  end
endmodule
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore Verilog online