تعليمة التعطيل
جزء من قسم الأساسيات في رحلة Verilog على Coddy. الدرس 62 من 90.
توقف عبارة disable تنفيذ named block (مثل حلقة forever أو كتلة begin-end أو مهمة). وهي مفيدة للخروج من الحلقات التي كانت ستستمر إلى الأبد لولا ذلك.
البنية النحوية:
disable block_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 موجودة داخل named block مُسمّى counter. توجد العبارة disable counter داخل الحلقة. عندما تصل قيمة count إلى 5، تُنفَّذ disable counter وتوقف entire block counter، مما يؤدي فورًا إلى أن stops حلقة forever أيضًا.
Disable في كتلة منفصلة
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 units، تُنفَّذ disable counter وتوقف كتلة counter، مما ينهي حلقة forever من outside.
قواعد مهمة
| القاعدة | الشرح |
|---|---|
| يجب تسمية block | begin : block_name |
| Disable يوقف التنفيذ فورًا | يتوقف الكود في تلك اللحظة |
| يمكن استخدامه من أي مكان | من أي block في module |
مفيد لإيقاف حلقات forever | وإلا فلن تتوقف أبدًا |
التحدي
لديك module مع counter يعمل forever.
ما يجب فعله:
أكمل block الفارغ باستبدال كل تعليق بالكود الصحيح:
- أضف
#50;للانتظار لمدة 50 من time units - أضف
disable counter;لإيقاف counter block - أضف
$display("Counter stopped");لطباعة الرسالة - أضف
$finish;لإنهاء simulation
جرّب بنفسك
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 عبر الإنترنت