לולאה אינסופית
חלק מהיחידה יסודות במסלול ה-Verilog של Coddy. שיעור 61 מתוך 90.
לולאת forever חוזרת על בלוק קוד ברציפות, לנצח. היא לעולם לא נעצרת מעצמה.
לולאת forever מתבצעת שוב ושוב ללא הפסקה. היא שימושית ליצירת שעונים ואותות רציפים אחרים בסביבות בדיקה.
תחביר:
forever begin
// קוד שחוזר על עצמו לנצח
endדוגמה פשוטה
forever begin
$display("This prints forever");
endהדבר הזה ידפיס בלי סוף ויקריס את הסימולציה שלך. הוסף תמיד השהיה או תנאי עצירה.
יצירת שעון (שימוש נפוץ)
השימוש הנפוץ ביותר ב-forever הוא ליצירת שעון:
initial begin
clk = 0;
forever begin
#5 clk = ~clk; // החלף מצב כל 5 יחידות זמן
end
endכך יוצרים שעון שפועל במשך כל הסימולציה.
לעד עם Disable
אפשר לעצור לולאת forever באמצעות פקודת disable:
initial begin : clock_gen // השם נוסף כאן
clk = 0;
forever begin
#5 clk = ~clk;
end
endinitial begin
#100;
disable clock_gen; // עכשיו זה עובד
endלולאת forever לעומת לולאות אחרות
| לולאה | נעצרת? | מתי להשתמש |
|---|---|---|
for | כן (אחרי מספר קבוע של איטרציות) | כשמספר החזרות ידוע |
while | כן (כשהתנאי שקרי) | כשתנאי העצירה אינו ידוע |
repeat | כן (אחרי מספר קבוע של איטרציות) | כשמספר החזרות ידוע |
forever | לא (לעולם לא) | אותות רציפים (שעון) |
כללים חשובים
| כלל | הסבר |
|---|---|
| חייב לכלול השהיה | #10 או @(posedge clk) |
| ללא השהיה, הסימולציה נתקעת | לולאה אינסופית ללא התקדמות בזמן |
עוצרים את הלולאה באמצעות disable או מסיימים את הסימולציה באמצעות $finish | אחרת הסימולציה לעולם לא מסתיימת |
| מומלץ להשתמש בזה בספסלי בדיקה | לא ניתן לסנתז |
אתגר
מה לעשות:
הוסף את לולאת forever החסרה כדי ליצור שעון שמחליף מצב בכל 10 יחידות זמן.
נסו בעצמכם
module forever_challenge;
reg clk;
initial begin
clk = 0;
// TODO: הוסף לולאת forever כדי להפוך את הערך של clk כל 10 יחידות זמן
end
endmoduleהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
5אופרטורים חלק 2
אופרטורים לוגייםאופרטורי צמצוםאופרטורי הזזהאופרטור שרשוראופרטור תנאיסיכום – אתגר האופרטורים3שיטת המספרים
ייצוג בינארימספרים בעלי גודל מוגדרמספרים ללא גודל מוגדרמספרים שלילייםהערכים המיוחדים X ו־Zסיכום – תבניות מספרים6מודולים
מבנה מודוליציאות קלט ופלטיציאות קלט-פלטיצירת מופע של מודולמיפוי יציאות לפי שםמיפוי יציאות לפי סדרסיכום – בניית מודולתרגלו בעצמכם: קומפיילר Verilog אונליין