בלוק 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 | |
|---|---|---|
| פועל | פעם אחת | ברציפות (לנצח) |
| שימוש עבור | ספסלי בדיקה, אתחול | חומרה (כפכפים, מונים) |
| ניתן לסינתזה? | רק עבור ערכי התחלה (FPGA) | כן (עם רשימת רגישות) |
הערות חשובות
- בלוקים של
initialמיועדים בעיקר לסימולציה. כלי סינתזה אינם יכולים להפוך השהיות כגון#10או משימות כגון$displayלחומרה - השתמשו ב-
initialבעיקר בספסלי בדיקה. במודול תכנון, רק כלי סינתזה של FPGA משתמשים בו, ורק כדי לקבוע את ערך ההתחלה של אוגר או זיכרון - אם ספסל הבדיקה מכיל שעון שפועל ללא הפסקה (למשל,
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 אונליין