Menu
CoddyTech

לולאת while

חלק מהיחידה יסודות במסלול ה-Verilog של Coddy. שיעור 59 מתוך 90.

לולאת while חוזרת על בלוק קוד כל עוד תנאי מתקיים. בניגוד ללולאת for, אין לה מונה מובנה. עליך לעדכן את משתנה הלולאה בעצמך.

לולאת while בודקת תנאי לפני כל איטרציה. אם התנאי נכון, הלולאה מתבצעת. אם הוא שגוי, הלולאה נעצרת.

תחביר:

while (condition) begin
  // קוד שיש לחזור עליו
end

דוגמה פשוטה

integer i = 0;

while (i < 5) begin
  $display("i = %d", i);
  i = i + 1;
end

פלט:

i = 0
i = 1
i = 2
i = 3
i = 4

הלולאה פועלת כל עוד i < 5.

לולאת while לעומת לולאת for

 לולאת forלולאת while
מונהמובנהאתה מנהל אותו
מתי להשתמשמספר ידוע של איטרציותלא ידוע מתי הלולאה תיעצר
תחבירfor (i=0; i<5; i=i+1)while (i < 5)

לולאת while בספסלי בדיקה

לולאות while שימושיות כשלא ידוע לך בדיוק כמה איטרציות נדרשות:

integer i = 0;

while (i < 16) begin
  $display("Testing value %d", i);
  i = i + 1;
end

מציאת ערך מסוים

integer i = 0;
reg [7:0] data;

while (data[i] != 1) begin
  i = i + 1;
end
$display("First 1 found at position %d", i);

כללים חשובים

כללהסבר
התנאי חייב להפוך לשקראחרת תתרחש לולאה אינסופית
יש לעדכן את משתנה הלולאה בתוך הלולאהאחרת הלולאה לעולם לא תסתיים
משתנה הלולאה חייב להיות integer או regהוא לא יכול להיות wire
יש להשתמש ב-begin/end עבור כמה פקודותנדרש עבור יותר משורה אחת
challenge icon

אתגר

מה לעשות:

הוסף את לולאת ה־while החסרה כדי להדפיס מספרים מ־0 עד 2.

נסו בעצמכם

module while_challenge;
  integer i;
  
  initial begin
    i = 0;
    $display("Printing 0 to 2:");
    
    // TODO: הוסיפו לולאת while
    // חזרו על הלולאה כל עוד i < 3
    // בתוך הלולאה, הדפיסו את i
    // הגדילו את i ב-1
    
    $finish;
  end
endmodule
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: קומפיילר Verilog אונליין