Menu
CoddyTech

Pętla nieskończona

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

Pętla forever powtarza blok kodu nieustannie, bez końca. Nigdy nie zatrzymuje się sama.

Pętla forever wykonuje się wielokrotnie bez końca. Przydaje się do generowania zegarów i innych sygnałów ciągłych w środowiskach 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;   // Odwracaj stan co 5 jednostek czasu
  end
end

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

Bez końca z wyłączeniem

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 określonej liczbie iteracji)Znana liczba powtórzeń
whileTak (gdy warunek jest fałszywy)Nieznany warunek zatrzymania
repeatTak (po określonej liczbie iteracji)Znana liczba powtórzeń
foreverNie (nigdy)Ciągłe sygnały (zegar)

Ważne zasady

ZasadaWyjaśnienie
Musi zawierać opóźnienie#10 lub @(posedge clk)
Bez opóźnienia symulacja zawiesza sięNieskończona pętla bez upływu czasu
Zatrzymaj pętlę za pomocą disable lub zakończ symulację za pomocą $finishW 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 przełącza się 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