Menu
CoddyTech

كتلة Initial

جزء من قسم الأساسيات في رحلة Verilog على Coddy. الدرس 47 من 90.

يحتوي Verilog على كتلتين إجرائيتين: initial (تُنفَّذ مرة واحدة) وalways (تُنفَّذ باستمرار). لنغطِّ الآن كتلة initial.

ما هي كتلة Initial؟

تُنفَّذ كتلة initial مرة واحدة فقط في بداية المحاكاة (الزمن 0). وعندما تنتهي، لا تُنفَّذ مرة أخرى.

يُستخدم بشكل أساسي في بيئات الاختبار من أجل:

  • تعيين القيم الابتدائية
  • توليد إشارات الاختبار
  • عرض الرسائل
  • بدء المحاكاة

الصياغة

initial begin
  // تُنفَّذ التعليمات مرة واحدة، بالتسلسل
end

مثال أساسي

initial begin
  $display("Simulation started");
  $display("This runs once");
  $finish;
end

المخرجات:

Simulation started
This runs once

استخدام الكتلة الأولية لإشارات الاختبار

initial begin
  a = 0;
  #10 a = 1;
  #10 a = 0;
  #10 $finish;
end

يغيّر هذا قيمة a عند الأوقات: 0 و10 و20.

مبدئي مقابل دائم

 initialalways
يعملمرة واحدةباستمرار (إلى الأبد)
يُستخدم من أجلمنصات الاختبار، والتهيئةالعتاد (القلبات، والعدادات)
قابل للتوليف؟لقيم البدء فقط (FPGA)نعم (مع قائمة حساسية)

ملاحظات مهمة

  • تُستخدم كتل initial أساسًا للمحاكاة. لا تستطيع أدوات التركيب تحويل التأخيرات مثل #10 أو المهام مثل $display إلى عتاد
  • استخدم initial أساسًا في بيئات الاختبار. في وحدة التصميم، لا تستخدمه إلا أدوات تركيب FPGA، وذلك فقط لتعيين القيمة الابتدائية لسجل أو ذاكرة
  • إذا احتوت بيئة الاختبار على ساعة مستمرة التشغيل (مثلًا always #5 clk = ~clk;)، فستستمر المحاكاة إلى الأبد ما لم تستدعِ $finish؛ أما عند وجود كتلة initial فقط، فيتوقف المحاكي تلقائيًا عند عدم بقاء أي أحداث، لكن تظل إضافة $finish ممارسة جيدة
challenge icon

التحدي

أضف كتلة initial الناقصة التي تضبط a على 0، ثم تضبط a على 1 بعد 10 وحدات زمنية.

ما يجب فعله:

  1. أضف initial begin وend
  2. اضبط a = 0
  3. انتظر #10
  4. اضبط a = 1
  5. أضف $finish لإنهاء المحاكاة

جرّب بنفسك

module test;
  reg a;
  
  // TODO: أضف كتلة initial هنا
  // اضبط a = 0
  // انتظر #10
  // اضبط a = 1
  // أضف $finish; لإنهاء المحاكاة
  
endmodule
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات

تدرّب بنفسك: مترجم Verilog عبر الإنترنت