Menu
Coddy logo textTech

Display And 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 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 seiner 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 es ausgibtEinmal bei der AusführungJedes Mal, wenn sich eine Variable ändert
Wie oftSo oft, wie du es aufrufstKontinuierlich (bis es geändert wird)
Verwendung fürÜberschriften, TestnachrichtenNachverfolgen sich ändernder Signale

Häufige Formatbezeichner

BezeichnerBedeutungBeispiel
%bBinary$display("%b", a);
%dDezimal$display("%d", count);
%hHexadezimal$display("%h", data);
%tTime$display("%t", $time);
%0tTime (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

Add die fehlenden $display- und $monitor-Anweisungen zu diesem testbench hinzu.

Was zu tun ist:

  1. Add $display, um einen header auszugeben: "Testing OR Gate"
  2. Add $monitor, um time, x, y und z auszugeben, wann immer sich ein Signal ändert. Format: "Time %0t: x=%b, y=%b, z=%b"
  3. Add 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