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

جملة التعطيل

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

تعمل جملة disable على إيقاف تنفيذ كتلة مسماة (مثل حلقة forever، أو كتلة begin-end، أو مهمة). وهي مفيدة للخروج من الحلقات التي قد تستمر في العمل إلى الأبد بخلاف ذلك.

الصيغة:

disable block_name;

يجب تسمية الكتلة (block) باسم.

التعطيل باستخدام حلقة Forever

begin : counter // counter يعطي الكتلة الاسم counter.
  forever begin
    #10 count = count + 1;
    if (count == 5) begin
      disable counter;   // disable counter يوقف تلك الكتلة المسماة بالكامل.
    end
  end
end

حلقة forever التكرارية موجودة داخل كتلة مسماة counter. تعليمة disable counter موضوعة داخل الحلقة. عندما تصل count إلى 5، يتم تنفيذ disable counter وتتوقف كتلة counter بالكامل — مما يوقف حلقة forever التكرارية فوراً أيضاً.

التعطيل في كتلة منفصلة

begin : counter
  forever begin
    #10 count = count + 1;
  end
end

initial begin
  #50;
  disable counter;   // يوقف كتلة العداد من الخارج
end

هنا، تعمل حلقة forever بشكل مستمر داخل الكتلة المسماة counter. يتم وضع عبارة disable counter في كتلة initial منفصلة. بعد 50 وحدة زمنية، يتم تنفيذ disable counter وإيقاف كتلة counter — مما يؤدي إلى إنهاء حلقة forever من الخارج.

قواعد هامة

القاعدةالشرح
يجب تسمية الكتلة (Block)begin : block_name
التعطيل (Disable) يوقف التنفيذ فوراًيتوقف الكود في تلك اللحظة
يمكن استخدامه من أي مكانمن أي كتلة داخل الوحدة البرمجية (module)
مفيد لإيقاف حلقات foreverوإلا فإنها لن تتوقف أبداً
challenge icon

التحدي

لقد تم تزويدك بوحدة (module) تحتوي على عداد يعمل باستمرار. 

ما يجب القيام به:

أكمل الكتلة الفارغة عن طريق استبدال كل تعليق بالكود الصحيح:

  1. أضف #50; للانتظار لمدة 50 وحدة زمنية
  2. أضف disable counter; لإيقاف كتلة العداد
  3. أضف $display("Counter stopped"); لطباعة الرسالة
  4. أضف $finish; لإنهاء المحاكاة

ورقة مرجعية

تقوم تعليمة disable بإيقاف تنفيذ كتلة مسماة (على سبيل المثال، حلقة forever). يجب تسمية الكتلة باستخدام begin : block_name.

الإيقاف (Disable) من داخل الكتلة:

begin : counter
  forever begin
    #10 count = count + 1;
    if (count == 5) disable counter;
  end
end

الإيقاف (Disable) من كتلة منفصلة:

begin : counter
  forever begin
    #10 count = count + 1;
  end
end

initial begin
  #50;
  disable counter; // يوقف الكتلة المسماة من الخارج
end

جرّب بنفسك

module disable_challenge;
  integer count;
  
  initial begin
    count = 0;
    fork
      begin : counter
        forever begin
          #10 count = count + 1;
          $display("count = %d", count);
        end
      end
      
      begin
        // الخطوة 1: انتظر 50 وحدة زمنية
        
        // الخطوة 2: تعطيل كتلة العداد (counter block)
        
        // الخطوة 3: طباعة "Counter stopped"
        
        // الخطوة 4: إنهاء المحاكاة
        
      end
    join
  end
endmodule
quiz iconاختبر نفسك

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

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