Menu
CoddyTech

Display und Monitor

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

$display und $monitor sind Systemaufgaben, mit denen Informationen aus deiner Simulation ausgegeben werden. Sie helfen dir zu sehen, was in deinem Entwurf passiert.

$display

$display gibt eine Meldung 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 automatisch eine Nachricht 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 ausgegeben wirdEinmal bei der AusführungJedes Mal, wenn sich eine Variable ändert
Wie oftSo oft, wie du es aufrufstFortlaufend (bis zur Änderung)
VerwendungÜberschriften, TestnachrichtenVerfolgen sich ändernder Signale

Häufige Formatbezeichner

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

Wichtige Regeln

RegelErklärung
$display gibt einmal ausGut für Überschriften und Endergebnisse
$monitor gibt bei Änderungen ausGut zum Beobachten von Signalen
Nur ein $monitor ist aktivDer letzte überschreibt den vorherigen
Verwende $finish zum BeendenAndernfalls kann die Simulation unbegrenzt weiterlaufen
challenge icon

Aufgabe

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

Aufgabe:

  1. Füge $display hinzu, um eine Überschrift auszugeben: "Testing OR Gate"
  2. Füge $monitor hinzu, um die Zeit sowie 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 die Überschrift "Testing OR Gate" mit $display hinzu
    
    
    // TODO: Füge $monitor hinzu, um Zeit, x, y, z zu verfolgen
    // Format: "Time %0t: x=%b, y=%b, z=%b"
    
    
    // Testsignale anlegen
    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