Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

كتلة 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

 initialalways
التشغيل (Runs)مرة واحدة (Once)بشكل مستمر (إلى الأبد)
الاستخدام لـمنصات الاختبار (Testbenches)، التهيئة الأوليةالعتاد الصلب (Flip-flops، العدادات)
قابل للتصنيع البرمجي (Synthesizable)؟لا (محاكاة فقط)نعم (مع قائمة الحساسية)

ملاحظات مهمة

  • كتل initial غير قابلة للتجميع (not synthesizable) — لا يمكن تحويلها إلى عتاد برمجي (hardware)
  • استخدم initial فقط في منصات الاختبار (testbenches)
  • إذا كانت منصة الاختبار تحتوي على إشارة ساعة تعمل باستمرار (مثل always #5 clk = ~clk;)، فإن المحاكاة تستمر في العمل إلى الأبد ما لم تقم باستدعاء $finish؛ أما مع وجود كتلة initial فقط، يتوقف المحاكي من تلقاء نفسه عندما لا تبقى أي أحداث، ولكن إضافة $finish تظل ممارسة جيدة
challenge icon

التحدي

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

ما يجب فعله:

  1. أضف initial begin و end
  2. قم بضبط a = 0
  3. انتظر #10
  4. قم بضبط a = 1
  5. أضف $finish لإنهائه الـ simulation

جرّب بنفسك

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

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

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