Menu
CoddyTech

Display i Monitor

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

$display i $monitor to zadania systemowe używane 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 wypisuje komunikat automatycznie 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 wywołaniuZa każdym razem, gdy zmieni się zmienna
Ile razyTyle razy, ile razy go wywołaszCiągle (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 razPrzydatne w przypadku nagłówków i wyników końcowych
$monitor wyświetla przy zmianiePrzydatne do obserwowania sygnałów
Aktywny może być tylko jeden $monitorOstatni zastępuje poprzedni
Użyj $finish, aby zatrzymaćW przeciwnym razie symulacja może trwać w nieskończoność
challenge icon

Wyzwanie

Dodaj brakujące instrukcje $display i $monitor do tego testbencha.

Co należy 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 do śledzenia czasu 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