הצגה וניטור
חלק מהיחידה יסודות במסלול ה-Verilog של Coddy. שיעור 75 מתוך 90.
$display ו-$monitor הן משימות מערכת שמשמשות להדפסת מידע מהסימולציה שלך. הן עוזרות לך לראות מה קורה בתוך התכנון שלך.
$display
$display מדפיסה הודעה פעם אחת ברגע שהיא מתבצעת.
תחביר:
$display("message", variables);דוגמה:
initial begin
$display("Simulation started");
#10;
$display("Time 10");
#10;
$display("Time 20");
endפלט:
Simulation started
Time 10
Time 20$monitor
$monitor מדפיס הודעה באופן אוטומטי בכל פעם שאחד מהמשתנים שלו משתנה.
תחביר:
$monitor("message", variables);דוגמה:
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פלט:
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 לעומת $monitor
| $display | $monitor | |
|---|---|---|
| מתי הוא מדפיס | פעם אחת כשהוא מופעל | בכל פעם שמשתנה משתנה |
| כמה פעמים | כמה פעמים שקוראים לו | ברציפות (עד שמשתנה משתנה) |
| שימוש עבור | כותרות, הודעות בדיקה | מעקב אחר אותות משתנים |
מצייני פורמט נפוצים
| מציין | משמעות | דוגמה |
|---|---|---|
%b | בינארי | $display("%b", a); |
%d | עשרוני | $display("%d", count); |
%h | הקסדצימלי | $display("%h", data); |
%t | זמן | $display("%t", $time); |
%0t | זמן (ללא רווחים) | $display("%0t", $time); |
%s | מחרוזת | $display("%s", "Hello"); |
כללים חשובים
| כלל | הסבר |
|---|---|
$display מדפיס פעם אחת | מתאים לכותרות ולתוצאות סופיות |
$monitor מדפיס כשיש שינוי | מתאים למעקב אחר אותות |
רק $monitor אחד פעיל | האחרון מחליף את הקודם |
השתמשו ב־$finish כדי לעצור | אחרת, הסימולציה עלולה להימשך לנצח |
אתגר
הוסף את פקודות $display ו-$monitor החסרות לספסל הבדיקה הזה.
מה לעשות:
- הוסף
$displayכדי להדפיס כותרת: "Testing OR Gate" - הוסף
$monitorכדי להדפיס את הזמן, את x, את y ואת z בכל פעם שאחד מהאותות משתנה. פורמט: "Time %0t: x=%b, y=%b, z=%b" - הוסף
$displayבסוף כדי להדפיס "Test complete"
נסו בעצמכם
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: הוסף כותרת באמצעות $display: "Testing OR Gate"
// TODO: הוסף $monitor למעקב אחר הזמן, x, y, z
// פורמט: "Time %0t: x=%b, y=%b, z=%b"
// הפעל אותות גירוי
x = 0; y = 0; #10;
x = 0; y = 1; #10;
x = 1; y = 0; #10;
x = 1; y = 1; #10;
// TODO: הוסף $display עם "Test complete"
$finish;
end
endmoduleהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
5אופרטורים חלק 2
אופרטורים לוגייםאופרטורי צמצוםאופרטורי הזזהאופרטור שרשוראופרטור תנאיסיכום – אתגר האופרטורים14יסודות ה־Testbench
מהו Testbenchיצירת אותות גירויהצגה וניטורDumpfile ו־Dumpvarsשימוש במשימות מערכתסיכום — Testbench מלא3שיטת המספרים
ייצוג בינארימספרים בעלי גודל מוגדרמספרים ללא גודל מוגדרמספרים שלילייםהערכים המיוחדים X ו־Zסיכום – תבניות מספרים6מודולים
מבנה מודוליציאות קלט ופלטיציאות קלט-פלטיצירת מופע של מודולמיפוי יציאות לפי שםמיפוי יציאות לפי סדרסיכום – בניית מודולתרגלו בעצמכם: קומפיילר Verilog אונליין