Menu
Coddy logo textTech

הצגה וניטור

חלק מהיחידה יסודות במסלול ה-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 כדי לעצוראחרת, הסימולציה עלולה להימשך לנצח
challenge icon

אתגר

הוסף את פקודות $display ו-$monitor החסרות לספסל הבדיקה הזה.

מה לעשות:

  1. הוסף $display כדי להדפיס כותרת: "Testing OR Gate"
  2. הוסף $monitor כדי להדפיס את הזמן, את x, את y ואת z בכל פעם שאחד מהאותות משתנה. פורמט: "Time %0t: x=%b, y=%b, z=%b"
  3. הוסף $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
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: קומפיילר Verilog אונליין