Menu
Coddy logo textTech

Display i Monitor

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

$display i $monitor to zadania systemowe służące do wyświetlania informacji z symulacji. Pomagają zobaczyć, co dzieje się wewnątrz projektu.

$display

$display wyświetla komunikat raz w momencie wykonania.

Składnia:

$display("message", variables);

Przykład:

initial begin
  $display("Simulation started");
  #10;
  $display("Time 10");
  #10;
  $display("Time 20");
end

Wynik:

Simulation started
Time 10
Time 20

$monitor

$monitor automatycznie wyświetla komunikat za każdym razem, gdy zmieni się którakolwiek z jego zmiennych.

Składnia:

$monitor("message", variables);

Przykład:

initial begin
  a = 0; b = 0;
  $monitor("Time %0t: a=%b, b=%b", $time, a, b);
  #10 a = 1;
  #10 b = 1;
  #10 a = 0;
end

Wynik:

Time 0: a=0, b=0
Time 10: a=1, b=0
Time 20: a=1, b=1
Time 30: a=0, b=1

$display vs $monitor

 $display$monitor
Kiedy wyświetlaRaz po wykonaniuZa każdym razem, gdy zmieni się zmienna
Ile razyTyle razy, ile go wywołaszNieprzerwanie (aż do zmiany)
ZastosowanieNagłówki, komunikaty testoweŚledzenie zmieniających się sygnałów

Typowe specyfikatory formatu

SpecyfikatorZnaczeniePrzykład
%bBinarny$display("%b", a);
%dDziesiętny$display("%d", count);
%hSzesnastkowy$display("%h", data);
%tCzas$display("%t", $time);
%0tCzas (bez spacji)$display("%0t", $time);
%sCiąg znaków$display("%s", "Hello");

Ważne zasady

ZasadaWyjaśnienie
$display wyświetla razPrzydaje się do nagłówków i wyników końcowych
$monitor wyświetla przy zmianiePrzydaje się do obserwowania sygnałów
Tylko jeden $monitor może być aktywnyOstatni zastępuje poprzedni
Użyj $finish, aby zatrzymać symulacjęW przeciwnym razie symulacja może działać bez końca
challenge icon

Wyzwanie

Dodaj brakujące instrukcje $display i $monitor do tego modułu testowego.

Co zrobić:

  1. Dodaj $display, aby wyświetlić nagłówek: "Testing OR Gate"
  2. Dodaj $monitor, aby wyświetlać czas, x, y i z za każdym razem, gdy zmieni się dowolny sygnał. Format: "Time %0t: x=%b, y=%b, z=%b"
  3. Dodaj na końcu $display, aby wyświetlić "Test complete"

Spróbuj swoich sił

module or_gate (
  input x,
  input y,
  output z
);
  assign z = x | y;
endmodule

module testbench;
  reg x, y;
  wire z;
  
  or_gate dut (
    .x(x),
    .y(y),
    .z(z)
  );

  initial begin
    // TODO: Dodaj nagłówek za pomocą $display "Testing OR Gate"
    
    
    // TODO: Dodaj $monitor, aby śledzić czas oraz x, y, z
    // Format: "Time %0t: x=%b, y=%b, z=%b"
    
    
    // Podaj sygnały testowe
    x = 0; y = 0; #10;
    x = 0; y = 1; #10;
    x = 1; y = 0; #10;
    x = 1; y = 1; #10;
    
    // TODO: Dodaj $display "Test complete"
    
    
    $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