Menu
Coddy logo textTech

Blok initial

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

Verilog ma dwa bloki proceduralne: initial (uruchamia się raz) i always (uruchamia się ciągle). Teraz omówmy blok initial.

Czym jest blok Initial?

Blok initial uruchamia się tylko raz na początku symulacji (w czasie 0). Gdy zakończy działanie, nie uruchamia się ponownie.

Służy głównie w testbenchach do:

  • Ustawiania wartości początkowych
  • Generowania sygnałów testowych
  • Wyświetlania komunikatów
  • Uruchamiania symulacji

Składnia

initial begin
  // Instrukcje wykonują się raz, po kolei
end

Podstawowy przykład

initial begin
  $display("Simulation started");
  $display("This runs once");
  $finish;
end

Wynik:

Simulation started
This runs once

Używanie bloku initial do sygnałów testowych

initial begin
  a = 0;
  #10 a = 1;
  #10 a = 0;
  #10 $finish;
end

Zmienia wartość a w chwilach: 0, 10 i 20.

Początkowo vs zawsze

 initialalways
Uruchamia sięRazCiągle (bez końca)
ZastosowanieŁawy testowe, inicjalizacjaSprzęt (przerzutniki, liczniki)
Czy można syntezować?Nie (tylko symulacja)Tak (z listą czułości)

Ważne uwagi

  • Bloki initial nie podlegają syntezie. Nie można przekształcić ich w sprzęt
  • Używaj initial tylko w testbenchach
  • Jeśli testbench zawiera zegar działający bez końca (np. always #5 clk = ~clk;), symulacja trwa w nieskończoność, chyba że wywołasz $finish; gdy występuje tylko blok initial, symulator zatrzymuje się sam, gdy nie pozostają żadne zdarzenia, ale dodanie $finish nadal jest dobrą praktyką
challenge icon

Wyzwanie

Dodaj brakujący blok initial, który ustawia a na 0, a następnie po 10 jednostkach czasu ustawia a na 1.

Co należy zrobić:

  1. Dodaj initial begin i end
  2. Ustaw a = 0
  3. Odczekaj #10
  4. Ustaw a = 1
  5. Dodaj $finish, aby zakończyć symulację

Spróbuj swoich sił

module test;
  reg a;
  
  // TODO: Dodaj tutaj blok initial
  // Ustaw a = 0
  // Poczekaj #10
  // Ustaw a = 1
  // Dodaj $finish;, aby zakończyć symulację
  
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