Menu
Coddy logo textTech

Ciclo Forever

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

Il ciclo forever ripete un blocco di codice continuamente, per sempre. Non si ferma mai da solo.

Un ciclo forever viene eseguito ripetutamente senza fine. È utile per generare clock e altri segnali continui nei testbench.

Sintassi:

forever begin
  // Codice che si ripete per sempre
end

Esempio semplice

forever begin
  $display("This prints forever");
end

Questo verrà stampato all'infinito e bloccherà la tua simulazione. Aggiungi sempre un ritardo o una condizione di arresto.

Generare un clock (uso comune)

L’uso più comune di forever è generare un clock:

initial begin
  clk = 0;
  forever begin
    #5 clk = ~clk;   // Inverti lo stato ogni 5 unità di tempo
  end
end

Questo crea un orologio che funziona per l'intera simulazione.

Per sempre con Disable

Puoi interrompere un ciclo forever usando un'istruzione disable:

initial begin : clock_gen   // Nome aggiunto qui
  clk = 0;
  forever begin
    #5 clk = ~clk;
  end
end
initial begin
  #100;
  disable clock_gen;   // Ora funziona
end

Per sempre vs altri cicli

CicloSi ferma?Quando usarlo
forSì (dopo un numero fisso di iterazioni)Numero noto di ripetizioni
whileSì (quando la condizione è falsa)Condizione di arresto sconosciuta
repeatSì (dopo un numero fisso di iterazioni)Numero noto di ripetizioni
foreverNo (mai)Segnali continui (orologio)

Regole importanti

RegolaSpiegazione
Deve includere un ritardo#10 o @(posedge clk)
Senza ritardo, la simulazione si bloccaCiclo infinito senza avanzamento del tempo
Usalo con disable per fermarloAltrimenti la simulazione non termina mai
Si usa al meglio nei testbenchNon è sintetizzabile
challenge icon

Sfida

Cosa fare:

Aggiungi il ciclo forever mancante per generare un orologio che cambia stato ogni 10 unità di tempo.

Provalo tu

module forever_challenge;
  reg clk;
  
  initial begin
    clk = 0;
    // TODO: Aggiungi un ciclo forever per invertire clk ogni 10 unità di tempo
  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