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");
endAusgabe:
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;
endAusgabe:
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 ausgibt | Einmal bei der Ausführung | Jedes Mal, wenn sich eine Variable ändert |
| Wie oft | So oft, wie du es aufrufst | Kontinuierlich (bis es geändert wird) |
| Verwendung für | Überschriften, Testnachrichten | Nachverfolgen sich ändernder Signale |
Häufige Formatbezeichner
| Bezeichner | Bedeutung | Beispiel |
|---|---|---|
%b | Binary | $display("%b", a); |
%d | Dezimal | $display("%d", count); |
%h | Hexadezimal | $display("%h", data); |
%t | Time | $display("%t", $time); |
%0t | Time (keine Leerzeichen) | $display("%0t", $time); |
%s | Zeichenkette | $display("%s", "Hello"); |
Wichtige Regeln
| Regel | Erklärung |
|---|---|
$display gibt einmal aus | Gut für Kopfzeilen und Endergebnisse |
$monitor gibt bei Änderungen aus | Gut zum Beobachten von Signalen |
Nur ein $monitor aktiv | Das letzte überschreibt das vorherige |
Verwende $finish zum Beenden | Andernfalls kann die Simulation für immer laufen |
Aufgabe
Add die fehlenden $display- und $monitor-Anweisungen zu diesem testbench hinzu.
Was zu tun ist:
- Add
$display, um einen header auszugeben: "Testing OR Gate" - Add
$monitor, um time, x, y und z auszugeben, wann immer sich ein Signal ändert. Format: "Time %0t: x=%b, y=%b, z=%b" - Add am Ende
$displayhinzu, 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
endmoduleDiese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
1Einführung
Was ist VerilogHardware vs. SoftwareIhr erstes ModulKommentareAbstraktionsebenen des Designs4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge14Testbench Basics
What Is A TestbenchCreating StimulusDisplay And MonitorDumpfile And DumpvarsUsing System TasksRecap - Full Testbench3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine LogicÜbe selbstständig: Online-Verilog-Compiler