Menu
Coddy logo textTech

Display und Monitor

Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy — Lektion 75 von 90.

$display und $monitor sind Systemaufgaben, die dazu verwendet werden, Informationen aus Ihrer Simulation auszugeben. Sie helfen Ihnen zu sehen, was in Ihrem Entwurf passiert.

$display

$display gibt eine Nachricht einmal in dem Moment aus, in dem es ausgeführt wird.

Syntax:

$display("message", variables);

Beispiel:

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

Ausgabe:

Simulation started
Time 10
Time 20

$monitor

$monitor gibt eine Nachricht automatisch aus, sobald sich eine der Variablen ändert.

Syntax:

$monitor("message", variables);

Beispiel:

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

Ausgabe:

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
Wann gedruckt wirdEinmal bei der AusführungJedes Mal, wenn sich eine Variable ändert
Wie oftSo oft Sie es aufrufenKontinuierlich (bis zur Änderung)
Verwendung fürHeaders, Test-NachrichtenVerfolgen sich ändernder Signale

Häufige Formatangaben

FormatangabeBedeutungBeispiel
%bBinary$display("%b", a);
%dDezimal$display("%d", count);
%hHexadezimal$display("%h", data);
%tTime$display("%t", $time);
%0tTime (keine Leerzeichen)$display("%0t", $time);
%sString$display("%s", "Hello");

Wichtige Regeln

RegelErklärung
$display gibt einmal ausGut für Header und Endergebnisse
$monitor gibt bei Änderung ausGut zum Überwachen von Signalen
Nur ein $monitor aktivDer letzte überschreibt vorherige
$finish zum Stoppen verwendenAndernfalls läuft die Simulation möglicherweise ewig
challenge icon

Aufgabe

Füge die fehlenden $display- und $monitor-Anweisungen zu dieser Testbench hinzu.

Was zu tun ist:

  1. Füge $display hinzu, um einen Header auszugeben: "Testing OR Gate"
  2. Füge $monitor hinzu, um Zeit, x, y und z auszugeben, wann immer sich ein Signal ändert. Format: "Time %0t: x=%b, y=%b, z=%b"
  3. Füge am Ende $display hinzu, um "Test complete" auszugeben

Probier es selbst

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: Füge $display-Header "Testing OR Gate" hinzu
    
    
    // TODO: Füge $monitor hinzu, um time, x, y, z zu verfolgen
    // Format: "Time %0t: x=%b, y=%b, z=%b"
    
    
    // Stimulus anwenden
    x = 0; y = 0; #10;
    x = 0; y = 1; #10;
    x = 1; y = 0; #10;
    x = 1; y = 1; #10;
    
    // TODO: Füge $display "Test complete" hinzu
    
    
    $finish;
  end
endmodule
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen