تعليمة التعطيل
جزء من قسم الأساسيات في رحلة 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 | وإلا فلن تتوقف أبدًا |
التحدي
أُعطيت وحدةً تحتوي على عدّاد يعمل إلى الأبد.
ما المطلوب:
أكمل الكتلة الفارغة باستبدال كل تعليق بالتعليمة البرمجية الصحيحة:
- أضف
#50;للانتظار 50 وحدة زمنية - أضف
disable counter;لإيقاف كتلة العدّاد - أضف
$display("Counter stopped");لطباعة الرسالة - أضف
$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يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4العوامل الجزء 1
العوامل الحسابيةعامل باقي القسمةعوامل المقارنةمراجعة - الرياضيات البسيطةالعوامل على مستوى البتات7التعيين والبوابات
التعيين المستمرالتعيين باستخدام العواملالعناصر الأساسية المدمجة للبواباتبوابات AND وOR وNOTبوابات XOR وXNORمراجعة - دائرة البوابات المنطقية5المعاملات - الجزء الثاني
المعاملات المنطقيةمعاملات الاختزالمعاملات الإزاحةمعامل الربطالمعامل الشرطيمراجعة - تحدي المعاملات11الحلقات التكرارية
حلقة Forحلقة Whileحلقة التكرارحلقة لا نهائيةتعليمة التعطيلمراجعة - أنماط الحلقات التكرارية3نظام الأعداد
التمثيل الثنائيالأعداد محددة الحجمالأعداد غير محددة الحجمالأعداد السالبةالقيم الخاصة X و Zمراجعة - تنسيقات الأعداد6الوحدات
هيكل الوحدةمنافذ الإدخال والإخراجمنافذ الإدخال والإخراج ثنائية الاتجاهإنشاء مثيل للوحدةربط المنافذ حسب الاسمربط المنافذ حسب الترتيبمراجعة - بناء وحدة9الكتل الإجرائية
كتلة Alwaysكتلة Initialقائمة الحساسيةإسناد حاجزإسناد غير حاجزمراجعة - Always مقابل Initial15متحكّم إشارات المرور
تعريف الحالاتمنطق آلة الحالاتتدرّب بنفسك: مترجم Verilog عبر الإنترنت