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 verwendet werden, um Informationen aus deiner Simulation auszugeben. Sie helfen dir zu sehen, was in deinem Design passiert.

$display

$display gibt eine Nachricht einmal zu dem Zeitpunkt aus, an 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 seiner Variablen ändert aus.

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 es ausgibtEinmal bei der AusführungJedes Mal, wenn sich eine Variable ändert
Wie oftSo oft, wie du es aufrufstKontinuierlich (bis es geändert wird)
VerwendungHeader, TestnachrichtenÜberwachung sich ändernder Signale

Häufige Formatspezifizierer

SpezifiziererBedeutungBeispiel
%bBinär$display("%b", a);
%dDezimal$display("%d", count);
%hHexadezimal$display("%h", data);
%tZeit$display("%t", $time);
%0tZeit (keine Leerzeichen)$display("%0t", $time);
%sZeichenkette$display("%s", "Hello");

Wichtige Regeln

RegelErklärung
$display gibt einmal ausGut für Kopfzeilen und Endergebnisse
$monitor gibt bei Änderungen ausGut zum Beobachten von Signalen
Nur ein $monitor aktivDas letzte überschreibt das vorherige
Verwende $finish zum BeendenAndernfalls kann die Simulation für immer laufen
challenge icon

Aufgabe

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

Was zu tun ist:

  1. Füge $display hinzu, um eine Kopfzeile auszugeben: "Testing OR Gate"
  2. Füge $monitor hinzu, um Zeit, x, y und z auszugeben, sobald 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

Übe selbstständig: Online-Verilog-Compiler