Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

If - Else

جزء من قسم الأساسيات في رحلة Verilog على Coddy. الدرس 53 من 90.

تتيح لك عبارة if-else الاختيار بين إجراءين مختلفين استنادًا إلى شرط. إذا كان الشرط صحيحًا، تُنفَّذ كتلة واحدة. وإذا كان خاطئًا، تُنفَّذ الكتلة الأخرى.

تمنح عبارة if-else في شفرتك نقطة لاتخاذ القرار: نفّذ شيئًا واحدًا إذا كان الشرط صحيحًا، ونفّذ شيئًا آخر إذا كان الشرط خاطئًا.

الصياغة:

if (condition) begin
  // يُنفَّذ عندما يكون الشرط صحيحًا (1)
end else begin
  // يُنفَّذ عندما يكون الشرط خاطئًا (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 (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 عبر الإنترنت