בלוק Initial
חלק מהיחידה יסודות במסלול ה-Verilog של Coddy. שיעור 47 מתוך 90.
ל-Verilog יש שני בלוקים פרוצדורליים: initial (רץ פעם אחת) ו-always (רץ ברציפות). עכשיו נלמד על הבלוק initial.
מהו בלוק Initial?
הבלוק initial רץ פעם אחת בלבד בתחילת הסימולציה (בזמן 0). כשהוא מסתיים, הוא לא רץ שוב.
הוא משמש בעיקר בסביבות בדיקה עבור:
- הגדרת ערכים ראשוניים
- יצירת אותות בדיקה
- הצגת הודעות
- הפעלת הסימולציה
תחביר
initial begin
// הפקודות מתבצעות פעם אחת, לפי הסדר
endדוגמה בסיסית
initial begin
$display("Simulation started");
$display("This runs once");
$finish;
endפלט:
Simulation started
This runs onceשימוש בבלוק initial לאותות בדיקה
initial begin
a = 0;
#10 a = 1;
#10 a = 0;
#10 $finish;
endהערך של a משתנה בזמנים: 0, 10 ו־20.
initial לעומת always
initial | always | |
|---|---|---|
| מופעל | פעם אחת | ברציפות (לנצח) |
| מיועד ל־ | ספסלי בדיקה, אתחול | חומרה (כפכפים, מונים) |
| ניתן לסינתזה? | לא (סימולציה בלבד) | כן (עם רשימת רגישות) |
הערות חשובות
- בלוקים מסוג
initialאינם ניתנים לסינתזה. אי אפשר להפוך אותם לחומרה - השתמשו ב-
initialרק בספסלי בדיקה - אם ספסל הבדיקה מכיל שעון שרץ ללא הפסקה (למשל,
always #5 clk = ~clk;), הסימולציה תרוץ לנצח אלא אם תקראו ל-$finish; כשיש רק בלוקinitial, הסימולטור נעצר מעצמו כשלא נותרות עוד אירועים, אבל הוספת$finishהיא עדיין נוהג מומלץ
אתגר
הוסף את בלוק initial החסר, שמגדיר את a ל־0, ואז לאחר 10 יחידות זמן מגדיר את a ל־1.
מה לעשות:
- הוסף
initial beginו־end - הגדר
a = 0 - המתן
#10 - הגדר
a = 1 - הוסף $finish כדי לסיים את הסימולציה
נסו בעצמכם
module test;
reg a;
// TODO: הוסף כאן בלוק initial
// קבע a = 0
// המתן #10
// קבע a = 1
// הוסף $finish; כדי לסיים את הסימולציה
endmoduleהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
5אופרטורים חלק 2
אופרטורים לוגייםאופרטורי צמצוםאופרטורי הזזהאופרטור שרשוראופרטור תנאיסיכום – אתגר האופרטורים3שיטת המספרים
ייצוג בינארימספרים בעלי גודל מוגדרמספרים ללא גודל מוגדרמספרים שלילייםהערכים המיוחדים X ו־Zסיכום – תבניות מספרים6מודולים
מבנה מודוליציאות קלט ופלטיציאות קלט-פלטיצירת מופע של מודולמיפוי יציאות לפי שםמיפוי יציאות לפי סדרסיכום – בניית מודול9בלוקים פרוצדורליים
בלוק Alwaysבלוק Initialרשימת רגישותהשמה חוסמתהשמה לא חוסמתסיכום — Always לעומת Initialתרגלו בעצמכם: קומפיילר Verilog אונליין