Menu
Coddy logo textTech

Pętla for

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

Pętle w Verilogu pozwalają wielokrotnie wykonywać blok kodu. Są szczególnie przydatne w środowiskach testowych do generowania powtarzalnych wzorców testowych, inicjalizowania pamięci i iterowania po tablicach. W przeciwieństwie do opisów sprzętu, które działają równolegle, pętle wykonują się sekwencyjnie, dzięki czemu idealnie nadają się do symulacji i testowania.

Najczęściej używaną pętlą jest pętla <strong>for</strong>, która powtarza się określoną liczbę razy. Pętla for wielokrotnie wykonuje blok kodu, a zmienna pętli zmienia się przy każdej iteracji. Masz dokładną kontrolę nad liczbą jej wykonań.

Składnia:

for (initialization; condition; increment) begin
  // Kod do powtórzenia
end
CzęśćCo robiPrzykład
initializationUstawia wartość początkowąi = 0
conditionKiedy zatrzymaći < 10
incrementZmienia się w każdej pętlii = i + 1

Prosty przykład

integer i;

for (i = 0; i < 5; i = i + 1) begin
  $display("i = %d", i);
end

Wynik:

i = 0
i = 1
i = 2
i = 3
i = 4

Pętla wykonuje się 5 razy (i = 0, 1, 2, 3, 4).

Pętla for w stanowiskach testowych

Pętle for są powszechnie używane do testowania wszystkich kombinacji wejściowych:

integer test_value;

for (test_value = 0; test_value < 16; test_value = test_value + 1) begin
  $display("test_value = %d", test_value);
end

Testuje to wszystkie 16 możliwych wartości sygnału 4-bitowego.

Pętla for z tablicami

reg [7:0] memory [0:9];
integer i;

initial begin
  for (i = 0; i < 10; i = i + 1) begin
    memory[i] = i * 8;
  end
end

Inicjuje to 10 lokalizacji pamięci.

Ważne zasady

ZasadaWyjaśnienie
Zmienna pętli musi być typu integer lub reg Nie może być typu wire
Używaj begin/end dla wielu instrukcjiWymagane dla więcej niż jednej linii
Unikaj nieskończonych pętliUpewnij się, że warunek w końcu stanie się fałszywy
Najlepiej używać w testbenchachWiększości pętli nie można syntezować
challenge icon

Wyzwanie

Co zrobić:

Dodaj brakującą pętlę for, aby wypisać liczby od 0 do 3.

Spróbuj swoich sił

module for_challenge;
  integer i;
  
  initial begin
    $display("Printing 0 to 3:");
    
    // TODO: Dodaj pętlę for
    // Zainicjalizuj i = 0
    // Powtarzaj pętlę, dopóki i < 4
    // Zwiększ i = i + 1
    // Wewnątrz pętli wypisz za pomocą: $display("i = %d", i);
    
    $finish;
  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