Initial Block
جزء من قسم الأساسيات في رحلة Verilog على Coddy. الدرس 47 من 90.
يحتوي Verilog على كتلتين إجرائيتين: initial (runs once) وalways (runs باستمرار). لنغطِّ الآن كتلة initial.
ما هي كتلة initial؟
تعمل كتلة initial only once في بداية simulation (time 0). وعندما تنتهي، لا تعمل مرة أخرى.
يُستخدم بشكل رئيسي في بيئات اختبار من أجل:
- تعيين القيم initial
- توليد إشارات الاختبار
- عرض الرسائل
- بدء simulation
البنية النحوية
initial begin
// تُنفَّذ العبارات مرة واحدة، بالتسلسل
endمثال أساسي
initial begin
$display("Simulation started");
$display("This runs once");
$finish;
endالمخرجات:
Simulation started
This runs onceاستخدام الكتلة initial لإشارات الاختبار
initial begin
a = 0;
#10 a = 1;
#10 a = 0;
#10 $finish;
endيغيّر هذا قيمة a عند الأوقات: 0 و10 و20.
initial مقابل always
initial | always | |
|---|---|---|
| التنفيذ | مرة واحدة | بشكل مستمر (إلى الأبد) |
| الاستخدام من أجل | بيئات الاختبار، والتهيئة | العتاد (القلابات، والعدادات) |
| قابل للتوليف؟ | لا (للمحاكاة فقط) | نعم (مع قائمة الحساسية) |
ملاحظات مهمة
initialblocks غير قابلة للتوليف. لا يمكن تحويلها إلى عتاد- استخدم
initialفقط في بيئات الاختبار - إذا كان testbench يحتوي على ساعة تعمل باستمرار (مثل
always #5 clk = ~clk;)، فإن simulation runs إلى الأبد ما لم تستدعِ$finish؛ أما مع وجودinitialblock فقط، فيتوقف المحاكي من تلقاء نفسه عند عدم بقاء أي أحداث، لكن إضافة$finishتظل ممارسة جيدة
التحدي
أضف block الـ initial المفقود الذي يضبط a على 0، ثم بعد 10 time units يضبط a على 1.
ما يجب فعله:
- Add
initial beginوend - اضبط
a = 0 - Wait
#10 - اضبط
a = 1 - أضف $finish لإنهاء simulation
جرّب بنفسك
module test;
reg a;
// TODO: أضف كتلة initial هنا
// عيّن a = 0
// انتظر #10
// عيّن a = 1
// أضف $finish; لإنهاء المحاكاة
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 عبر الإنترنت