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