Menu
Coddy logo textTech

Pętla nieskończona

Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 61 z 90.

Pętla forever powtarza blok kodu nieprzerwanie, w nieskończoność. Nigdy nie zatrzymuje się sama.

Pętla forever wykonuje się wielokrotnie bez końca. Przydaje się do generowania zegarów i innych ciągłych sygnałów w modułach testowych.

Składnia:

forever begin
  // Kod, który powtarza się bez końca
end

Prosty przykład

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

To będzie drukować bez końca i spowoduje awarię symulacji. Zawsze dodawaj opóźnienie lub warunek zatrzymania.

Generowanie zegara (częste zastosowanie)

Najczęstszym zastosowaniem forever jest generowanie zegara:

initial begin
  clk = 0;
  forever begin
    #5 clk = ~clk;   // Przełączaj co 5 jednostek czasu
  end
end

Tworzy to zegar, który działa przez całą symulację.

Na zawsze z Disable

Możesz zatrzymać pętlę forever za pomocą instrukcji disable:

initial begin : clock_gen   // Nazwa dodana tutaj
  clk = 0;
  forever begin
    #5 clk = ~clk;
  end
end
initial begin
  #100;
  disable clock_gen;   // Teraz to działa
end

Pętla forever a inne pętle

PętlaZatrzymuje się?Kiedy używać
forTak (po ustalonej liczbie iteracji)Znana liczba powtórzeń
whileTak (gdy warunek jest fałszywy)Nieznany warunek zatrzymania
repeatTak (po ustalonej liczbie iteracji)Znana liczba powtórzeń
foreverNie (nigdy)Sygnały ciągłe (zegar)

Ważne zasady

ZasadaWyjaśnienie
Musi zawierać opóźnienie#10 lub @(posedge clk)
Bez opóźnienia symulacja się zawieszaNieskończona pętla bez upływu czasu
Użyj razem z disable, aby zatrzymaćW przeciwnym razie symulacja nigdy się nie kończy
Najlepiej używać w testbenchachNie podlega syntezie
challenge icon

Wyzwanie

Co zrobić:

Dodaj brakującą pętlę forever, aby wygenerować zegar, który zmienia stan co 10 jednostek czasu.

Spróbuj swoich sił

module forever_challenge;
  reg clk;
  
  initial begin
    clk = 0;
    // TODO: Dodaj pętlę forever, aby zmieniać stan clk co 10 jednostek czasu
  end
endmodule
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator Verilog online