Menu
Coddy logo textTech

לולאת 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 אונליין