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

جملة التعطيل

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

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

الصياغة (Syntax):

disable block_name;

يجب أن تكون الكتلة المبرمجة معنونة باسم (labeled with a name).

Disable مع حلقة Forever

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

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

Disable في block منفصل

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

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

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

قواعد مهمة

القاعدةالشرح
يجب تسمية الـ Blockbegin : block_name
الـ Disable يوقف التنفيذ فوراًيتوقف الكود في تلك اللحظة
يمكن استخدامه من أي مكانمن أي block داخل الـ module
مفيد لإيقاف حلقات 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اختبر نفسك

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

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