לולאת for
חלק מהיחידה יסודות במסלול ה-Verilog של Coddy. שיעור 58 מתוך 90.
לולאות ב-Verilog מאפשרות לך לבצע בלוק קוד מספר פעמים. הן שימושיות במיוחד בסביבות בדיקה ליצירת דפוסי בדיקה חוזרים, לאתחול זיכרון ולעבודה על מערכים. בניגוד לתיאורי חומרה שפועלים במקביל, לולאות מתבצעות ברצף, ולכן הן אידיאליות לסימולציה ולבדיקה.
הלולאה הנפוצה ביותר היא for לולאת for, שחוזרת מספר מסוים של פעמים. לולאת for מבצעת בלוק קוד שוב ושוב, עם משתנה לולאה שמשתנה בכל איטרציה. את שולטת בדיוק במספר הפעמים שהיא פועלת.
תחביר:
for (initialization; condition; increment) begin
// קוד שיש לחזור עליו
end| חלק | מה הוא עושה | דוגמה |
|---|---|---|
initialization | קובעת ערך התחלתי | i = 0 |
condition | מתי לעצור | i < 10 |
increment | משתנה בכל לולאה | i = i + 1 |
דוגמה פשוטה
integer i;
for (i = 0; i < 5; i = i + 1) begin
$display("i = %d", i);
endפלט:
i = 0
i = 1
i = 2
i = 3
i = 4הלולאה מתבצעת 5 פעמים (i = 0, 1, 2, 3, 4).
לולאת for בסביבות בדיקה
לולאות for משמשות בדרך כלל לבדיקת כל צירופי הקלט:
integer test_value;
for (test_value = 0; test_value < 16; test_value = test_value + 1) begin
$display("test_value = %d", test_value);
endכך נבדקים כל 16 הערכים האפשריים של אות בן 4 סיביות.
לולאת for עם מערכים
reg [7:0] memory [0:9];
integer i;
initial begin
for (i = 0; i < 10; i = i + 1) begin
memory[i] = i * 8;
end
endפעולה זו מאתחלת 10 מיקומי זיכרון.
כללים חשובים
| כלל | הסבר |
|---|---|
משתנה הלולאה חייב להיות integer או reg | הוא לא יכול להיות wire |
השתמשו ב-begin/end עבור כמה פקודות | נדרש עבור יותר משורה אחת |
| הימנעו מלולאות אינסופיות | ודאו שהתנאי יהפוך בסופו של דבר לשקר |
| השתמשו בגבולות קבועים בקוד שניתן לסנתז | הסינתזה פורסת את הלולאה לעותק אחד של הלוגיקה לכל איטרציה |
אתגר
מה צריך לעשות:
הוסף את לולאת for החסרה כדי להדפיס את המספרים מ־0 עד 3.
נסו בעצמכם
module for_challenge;
integer i;
initial begin
$display("Printing 0 to 3:");
// TODO: הוסיפו לולאת for
// אתחלו את i = 0
// חזרו על הלולאה כל עוד i < 4
// הגדילו את i = i + 1
// בתוך הלולאה, הדפיסו באמצעות: $display("i = %d", i);
$finish;
end
endmoduleהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
5אופרטורים חלק 2
אופרטורים לוגייםאופרטורי צמצוםאופרטורי הזזהאופרטור שרשוראופרטור תנאיסיכום – אתגר האופרטורים3שיטת המספרים
ייצוג בינארימספרים בעלי גודל מוגדרמספרים ללא גודל מוגדרמספרים שלילייםהערכים המיוחדים X ו־Zסיכום – תבניות מספרים6מודולים
מבנה מודוליציאות קלט ופלטיציאות קלט-פלטיצירת מופע של מודולמיפוי יציאות לפי שםמיפוי יציאות לפי סדרסיכום – בניית מודולתרגלו בעצמכם: קומפיילר Verilog אונליין