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

حلقة Forever

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

تكرر الحلقة التكرارية forever كتلة من البرمجة بشكل مستمر وللأبد. فهي لا تتوقف تلقائياً أبداً.

تُنفَّذ حلقة forever بشكل متكرر دون end. وهي مفيدة لإنشاء الإشارات الزمنية (clocks) والإشارات المستمرة الأخرى في بيئات الاختبار (testbenches).

الصياغة (Syntax):

forever begin
  // كود يتكرر إلى الأبد
end

مثال بسيط

forever begin
  $display("This prints forever");
end

سيؤدي هذا إلى الطباعة بشكل لا نهائي والتسبب في تعطل المحاكاة الخاصة بك. أضف دائمًا تأخيرًا (delay) أو شرط توقف.

توليد إشارة الساعة (استخدام شائع)

الاستخدام الأكثر شيوعًا لـ forever هو توليد إشارة الساعة (clock):

initial begin
  clk = 0;
  forever begin
    #5 clk = ~clk;   // تبديل كل 5 وحدات زمنية
  end
end

هذا ينشئ clk يستمر بالعمل طوال فترة المحاكاة بالكامل.

Forever مع Disable

يمكنك إيقاف حلقة forever باستخدام عبارة disable:

initial begin : clock_gen   // الاسم مضاف هنا
  clk = 0;
  forever begin
    #5 clk = ~clk;
  end
end
initial begin
  #100;
  disable clock_gen;   // الآن هذا يعمل
end

Forever مقابل الحلقات الأخرى

الحلقةهل تتوقف؟متى تُستخدم
forنعم (بعد تكرارات محددة)عدد معروف من التكرارات
whileنعم (عندما يكون الشرط خاطئاً)شرط توقف غير معروف
repeatنعم (بعد تكرارات محددة)عدد معروف من التكرارات
foreverلا (أبداً)إشارات مستمرة (الساعة)

قواعد مهمة

القاعدةالشرح
يجب أن تتضمن تأخيرًا#10 أو @(posedge clk)
بدون تأخير، تتوقف المحاكاة (hangs)تكرار لا نهائي (Infinite loop) بدون تقدم في الوقت time
تُستخدم مع disable لإيقافهاوإلا لن تنتهي المحاكاة أبدًا
أفضل استخدام لها يكون في منصات الاختبار (testbenches)غير قابلة للتجميع البرمجي (Not synthesizable)
challenge icon

التحدي

ما يجب فعله:

أضف حلقة forever المفقودة لتوليد ساعة (clock) تتغير قيمتها (toggles) كل 10 time units.

جرّب بنفسك

module forever_challenge;
  reg clk;
  
  initial begin
    clk = 0;
    // TODO: أضف حلقة forever لتبديل clk كل 10 وحدات زمنية
  end
endmodule
quiz iconاختبر نفسك

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

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