Disable Statement
جزء من قسم الأساسيات في رحلة 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يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine Logicتدرّب بنفسك: مترجم Verilog عبر الإنترنت