Menu
CoddyTech

تعليمة التعطيل

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

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

الصياغة:

disable block_name;

يجب تسمية الكتلة.

التعطيل باستخدام حلقة لا نهائية

initial 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 أيضًا على الفور.

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

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

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

هنا، تعمل حلقة forever باستمرار داخل الكتلة المسماة counter. توضع العبارة disable counter في كتلة initial منفصلة. بعد 50 وحدة زمنية، تُنفَّذ disable counter وتوقف الكتلة counter، ما ينهي حلقة forever من الخارج.

قواعد مهمة

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

التحدي

أُعطيت وحدةً تحتوي على عدّاد يعمل إلى الأبد. 

ما المطلوب:

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

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

جرّب بنفسك

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
        
        // الخطوة 3: اطبع "Counter stopped"
        
        // الخطوة 4: أنهِ المحاكاة
        
      end
    join
  end
endmodule
quiz iconاختبر نفسك

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

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

تدرّب بنفسك: مترجم Verilog عبر الإنترنت