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

حلقة While

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

تكرر الحلقة while كتلة من البرمجة طالما أن الـ condition تكون صحيحة (true). وبخلاف الحلقة for، فإنها لا تحتوي على عداد مدمج — يجب عليك تحديث متغير الحلقة بنفسك.

تتحقق حلقة while من الـ condition قبل كل تكرار. إذا كانت الـ condition صحيحة (true)، يتم تنفيذ الـ loop. وإذا كانت خاطئة (false)، تتوقف الـ loop.

الصياغة (Syntax):

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
العداد (Counter)مدمجأنت تقوم بإدارته
متى تُستخدمعدد التكرارات معروفغير معروف متى ستتوقف الحلقة
الصياغة (Syntax)for (i=0; i<5; i=i+1)while (i < 5)

حلقة While في Testbenches

تُعد حلقات While مفيدة عندما لا تعرف بالضبط عدد التكرارات التي تحتاج إليها:

integer i = 0;

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

Finding a Specific Value

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

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

قواعد مهمة

القاعدةالشرح
يجب أن يصبح الـ condition خاسئاً (false)وإلا ستحدث حلقة تكرار لا نهائية
قم بتحديث متغير الـ loop من الـ Insideوإلا لن تنتهي الـ loop أبداً
يجب أن يكون متغير الـ Loop من نوع 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اختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات