استخدام مهام النظام
جزء من قسم الأساسيات في رحلة Verilog على Coddy. الدرس 77 من 90.
مهام النظام هي أوامر مضمّنة في Verilog تبدأ بعلامة الدولار ($). وهي تنفّذ وظائف مفيدة مثل طباعة الرسائل، وإنهاء المحاكاة، وإنشاء ملفات أشكال الموجات.
لقد تناولنا بالفعل $display و$monitor و$dumpfile و$dumpvars في الدروس السابقة. في هذا الدرس، سنلقي نظرة على مهام نظام إضافية مفيدة في testbench.
مهام النظام الإضافية
| مهمة النظام | الغرض |
|---|---|
$time | إرجاع وقت المحاكاة الحالي |
$finish | إنهاء المحاكاة |
$stop | إيقاف المحاكاة مؤقتًا |
$random | إنشاء رقم عشوائي |
$time
يعيد وقت المحاكاة الحالي. مفيد لتتبّع وقت حدوث الأحداث.
$display("Current time is %0t", $time);$finish
ينهي المحاكاة. استخدمه دائمًا في نهاية testbench الخاص بك.
$finish;$stop
يوقف simulation مؤقتًا. يمكن استئنافها باستخدام أمر simulator. مفيد لتصحيح الأخطاء.
$stop;$random
يُنشئ رقمًا عشوائيًا. مفيد لإنشاء مُحفّز اختبار عشوائي.
reg [7:0] rand_value;
rand_value = $random;مثال باستخدام مهام النظام المتعددة
module system_tasks_demo;
reg [7:0] data;
integer i;
initial begin
$display("Simulation started at time %0t", $time);
for (i = 0; i < 5; i = i + 1) begin
data = $random;
$display("Random value %d: %b", i, data);
end
$stop;
#10 $display("Resumed at time %0t", $time);
$display("Simulation finished at time %0t", $time);
$finish;
end
endmoduleالتحدي
Add مهام النظام المفقودة إلى testbench هذا.
ما يجب فعله:
- Add
$displayلطباعة current time في البداية - Add
$displayلطباعة current time في النهاية - Add
$finishلإنهاء simulation
جرّب بنفسك
module and_gate (
input a,
input b,
output c
);
assign c = a & b;
endmodule
module testbench;
reg a, b;
wire c;
and_gate dut (
.a(a),
.b(b),
.c(c)
);
initial begin
// TODO: أضف $display مع الوقت الحالي في البداية
// التنسيق: "Start time: %0t"
$monitor("Time %0t: a=%b, b=%b, c=%b", $time, a, b, c);
a = 0; b = 0; #10;
a = 0; b = 1; #10;
a = 1; b = 0; #10;
a = 1; b = 1; #10;
// TODO: أضف $display مع الوقت الحالي في النهاية
// التنسيق: "End time: %0t"
// TODO: أضف $finish
end
endmoduleيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4العوامل الجزء 1
العوامل الحسابيةعامل باقي القسمةعوامل المقارنةمراجعة - الرياضيات البسيطةالعوامل على مستوى البتات7التعيين والبوابات
التعيين المستمرالتعيين باستخدام العواملالعناصر الأساسية المدمجة للبواباتبوابات AND وOR وNOTبوابات XOR وXNORمراجعة - دائرة البوابات المنطقية5المعاملات - الجزء الثاني
المعاملات المنطقيةمعاملات الاختزالمعاملات الإزاحةمعامل الربطالمعامل الشرطيمراجعة - تحدي المعاملات11الحلقات التكرارية
حلقة Forحلقة Whileحلقة التكرارحلقة لا نهائيةتعليمة التعطيلمراجعة - أنماط الحلقات التكرارية14أساسيات Testbench
ما هو Testbenchإنشاء Stimulusالعرض والمراقبةDumpfile وDumpvarsاستخدام مهام النظاممراجعة - Testbench كامل3نظام الأعداد
التمثيل الثنائيالأعداد محددة الحجمالأعداد غير محددة الحجمالأعداد السالبةالقيم الخاصة X و Zمراجعة - تنسيقات الأعداد6الوحدات
هيكل الوحدةمنافذ الإدخال والإخراجمنافذ الإدخال والإخراج ثنائية الاتجاهإنشاء مثيل للوحدةربط المنافذ حسب الاسمربط المنافذ حسب الترتيبمراجعة - بناء وحدة9الكتل الإجرائية
كتلة Alwaysكتلة Initialقائمة الحساسيةإسناد حاجزإسناد غير حاجزمراجعة - Always مقابل Initial15متحكّم إشارات المرور
تعريف الحالاتمنطق آلة الحالاتتدرّب بنفسك: مترجم Verilog عبر الإنترنت