كتلة Initial
جزء من قسم الأساسيات في رحلة Verilog على Coddy — الدرس 47 من 90.
يحتوي Verilog على كتلتين إجرائيتين: initial (يعمل once) و always (يعمل باستمرار). الآن دعنا نغطي الـ initial block.
ما هو Initial block؟
الـ initial block runs فقط once في بداية الـ simulation (في الـ time 0). وعندما ينتهي، لا يعمل مرة أخرى.
يُستخدم بشكل أساسي في testbenches لأجل:
- تعيين القيم الأولية
- توليد إشارات الاختبار
- عرض الرسائل
- بدء المحاكاة
البناء النحوي (Syntax)
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 | |
|---|---|---|
| التشغيل (Runs) | مرة واحدة (Once) | بشكل مستمر (إلى الأبد) |
| الاستخدام لـ | منصات الاختبار (Testbenches)، التهيئة الأولية | العتاد الصلب (Flip-flops، العدادات) |
| قابل للتصنيع البرمجي (Synthesizable)؟ | لا (محاكاة فقط) | نعم (مع قائمة الحساسية) |
ملاحظات مهمة
- كتل
initialغير قابلة للتجميع (not synthesizable) — لا يمكن تحويلها إلى عتاد برمجي (hardware) - استخدم
initialفقط في منصات الاختبار (testbenches) - إذا كانت منصة الاختبار تحتوي على إشارة ساعة تعمل باستمرار (مثل
always #5 clk = ~clk;)، فإن المحاكاة تستمر في العمل إلى الأبد ما لم تقم باستدعاء$finish؛ أما مع وجود كتلةinitialفقط، يتوقف المحاكي من تلقاء نفسه عندما لا تبقى أي أحداث، ولكن إضافة$finishتظل ممارسة جيدة
التحدي
أضف كتلة initial المفقودة التي تقوم بضبط a إلى 0، ثم بعد 10 وحدات زمنية تقوم بضبط a إلى 1.
ما يجب فعله:
- أضف
initial beginوend - قم بضبط
a = 0 - انتظر
#10 - قم بضبط
a = 1 - أضف $finish لإنهائه الـ simulation
جرّب بنفسك
module test;
reg a;
// TODO: أضف كتلة initial هنا
// عيّن a = 0
// انتظر #10
// عيّن a = 1
// أضف $finish; لإنهاء المحاكاة
endmoduleيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)معاملات المقارنةملخص - رياضيات بسيطةمعاملات Bitwise7التعيين والبوابات المنطقية
التعيين المستمرالتعيين باستخدام العملياتالبوابات الأساسية المدمجةبوابات AND و OR و NOTبوابات XOR و XNORمراجعة - دارة البوابات المنطقية5المعاملات - الجزء الثاني
المعاملات المنطقيةمعاملات الاختزالمعاملات الإزاحةمعامل الدمجالمعامل الشرطيمراجعة - تحدي المعاملات3أنظمة العد
التمثيل الثنائيالأعداد محددة الحجمالأعداد غير محددة الحجمالأعداد السالبةالقيم الخاصة X و Zمراجعة - تنسيقات الأعداد6الوحدات
هيكل الوحدةمنافذ الإدخال والإخراجمنافذ Inoutاستدعاء الوحداتربط المنافذ بالاسمربط المنافذ بالترتيبمراجعة - بناء وحدة9الكتل الإجرائية
كتلة Alwaysكتلة Initialقائمة التحسسالإسناد الحاجبالإسناد غير الحاجبمراجعة - Always مقابل Initial