Menu
Coddy logo textTech

אם-אחרת

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

הפקודה if-else מאפשרת לך לבחור בין שתי פעולות שונות על סמך תנאי. אם התנאי נכון, בלוק אחד מתבצע. אם הוא שגוי, הבלוק השני מתבצע.

המשפט if-else נותן לקוד שלך נקודת החלטה: לבצע דבר אחד אם התנאי נכון, ולבצע דבר אחר אם התנאי שגוי.

תחביר:

if (condition) begin
  // מתבצע כאשר condition הוא true (1)
end else begin
  // מתבצע כאשר condition הוא false (0)
end

דוגמה פשוטה

if (reset) begin
  count = 0;
end else begin
  count = count + 1;
end
  • אם reset הוא 1 → count הופך ל-0
  • אם reset הוא 0 → count גדל ב-1

כמה פקודות

השתמשו ב-begin וב-end כשיש לכם יותר מפקודה אחת:

if (enable) begin
  out = data_in;
  valid = 1;
end else begin
  out = 0;
  valid = 0;
end

תנאי If-Else מרובים

אפשר לשרשר משפטי if-else:

if (a > b) begin
  max = a;
end else if (b > a) begin
  max = b;
end else begin
  max = a;  // a ו-b שווים
end

כללים חשובים

כללהסבר
else היא אופציונליתאפשר להשתמש ב-if בלי else
else שייכת ל-if הקרובה ביותריש להיזהר בקינון
יש להשתמש ב-begin/end עבור כמה פקודותנדרש עבור יותר משורה אחת
challenge icon

אתגר

מה צריך לעשות:

  1. הוסיפו את משפט ה־if-else החסר כדי שזה יעבוד.
  2. כאשר enable הוא 1, out צריך להיות שווה ל־a & b.
  3. כאשר enable הוא 0, out צריך להיות שווה ל־a | b.

נסו בעצמכם

module ifelse_challenge;
  reg a, b, enable;
  reg out;
  
  initial begin
    a = 1;
    b = 0;
    enable = 1;
    
    // TODO: הוסיפו משפט if-else
    // אם enable הוא 1: out = a & b
    // אחרת: out = a | b
    
    $display("out = %d (should be 0 because 1&0=0)", out);
    $finish;
  end
endmodule
quiz iconבחנו את עצמכם

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

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

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