לולאת חזרה
חלק מהיחידה יסודות במסלול ה-Verilog של Coddy. שיעור 60 מתוך 90.
לולאת repeat מבצעת בלוק קוד מספר קבוע של פעמים. בניגוד ללולאת for, היא אינה משתמשת במשתנה מונה של הלולאה.
לולאת repeat רצה מספר פעמים מוגדר. נותנים לה קבוע או ביטוי שקובעים כמה איטרציות לבצע.
תחביר:
repeat (number) begin
// Code to repeat
endדוגמה פשוטה
repeat (5) begin
$display("Hello");
endפלט:
Hello
Hello
Hello
Hello
Helloההודעה מודפסת בדיוק 5 פעמים.
חזרה עם ביטוי
integer count = 3;
repeat (count) begin
$display("Looping");
endפלט:
Looping
Looping
Loopingלולאת repeat לעומת לולאת for
| לולאת for | לולאת repeat | |
|---|---|---|
| משתנה מונה | כן (מפורש) | לא |
| מתי להשתמש | כשצריך ערך אינדקס | כשצריך רק חזרה |
| דוגמה | for (i=0; i<5; i=i+1) | repeat (5) |
יצירת מחזורי שעון מרובים
initial begin
clk = 0;
repeat (20) begin
#5 clk = ~clk;
end
endהקוד הזה יוצר 20 חזיתות שעון (10 מחזורים מלאים).
כללים חשובים
| כלל | הסבר |
|---|---|
| ספירה של 0 או פחות מדלגת על גוף הלולאה | repeat (-5) מתקמפל ורץ אפס פעמים |
| אפשר להשתמש בקבוע או בביטוי | repeat (10) או repeat (count) |
| אין משתנה לולאה זמין | אי אפשר לעקוב אחר מספר האיטרציה |
יש להשתמש ב-begin/end עבור כמה פקודות | נדרש עבור יותר משורה אחת |
אתגר
מה לעשות:
הוסיפו את לולאת repeat החסרה כדי להדפיס "Verilog" 4 פעמים.
נסו בעצמכם
module repeat_challenge;
initial begin
$display("Printing 4 times:");
// TODO: הוסיפו לולאת repeat
// חזרו 4 פעמים
// בתוך הלולאה, הדפיסו "Verilog"
$finish;
end
endmoduleהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
5אופרטורים חלק 2
אופרטורים לוגייםאופרטורי צמצוםאופרטורי הזזהאופרטור שרשוראופרטור תנאיסיכום – אתגר האופרטורים3שיטת המספרים
ייצוג בינארימספרים בעלי גודל מוגדרמספרים ללא גודל מוגדרמספרים שלילייםהערכים המיוחדים X ו־Zסיכום – תבניות מספרים6מודולים
מבנה מודוליציאות קלט ופלטיציאות קלט-פלטיצירת מופע של מודולמיפוי יציאות לפי שםמיפוי יציאות לפי סדרסיכום – בניית מודולתרגלו בעצמכם: קומפיילר Verilog אונליין