كتابة الـ Testbench
جزء من قسم الأساسيات في رحلة Verilog على Coddy — الدرس 45 من 90.
التحدي
الآن نحتاج إلى اختبار ما إذا كان الجامع النصفي (half adder) يعمل بشكل صحيح. أضف كود الاختبار داخل كتلة initial.
هام: قبل إضافة الاختبار، يجب عليك تغيير منافذ الوحدة (module ports) حتى يعمل الاختبار بشكل صحيح.
ما يجب فعله:
الخطوة 1: تغيير إعلانات المنافذ
- قم بتغيير
input a, bإلىreg a, b(استخدم الفاصلة المنقوطة) - قم بتغيير
output sum, carryإلىwire sum, carry(استخدم الفاصلة المنقوطة) - قم بإزالة منافذ الوحدة بالكامل (يجب ألا تحتوي الوحدة على
( ))
الخطوة 2: إضافة كود الاختبار
- أضف كتلة
initial begin - داخل الكتلة، أضف:
$display("a b | sum carry");
a = 0; b = 0; #1 $display("%d %d | %d %d", a, b, sum, carry);
a = 0; b = 1; #1 $display("%d %d | %d %d", a, b, sum, carry);
a = 1; b = 0; #1 $display("%d %d | %d %d", a, b, sum, carry);
a = 1; b = 1; #1 $display("%d %d | %d %d", a, b, sum, carry);
- أضف
$finish;لإنهاء الاختبار - أضف
endلإغلاق كتلة initial
جرّب بنفسك
module half_adder (
input a,
input b,
output sum,
output carry
);
assign sum = a ^ b;
assign carry = a & b;
endmoduleجميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)معاملات المقارنةملخص - رياضيات بسيطةمعاملات Bitwise7التعيين والبوابات المنطقية
التعيين المستمرالتعيين باستخدام العملياتالبوابات الأساسية المدمجةبوابات AND و OR و NOTبوابات XOR و XNORمراجعة - دارة البوابات المنطقية5المعاملات - الجزء الثاني
المعاملات المنطقيةمعاملات الاختزالمعاملات الإزاحةمعامل الدمجالمعامل الشرطيمراجعة - تحدي المعاملات3أنظمة العد
التمثيل الثنائيالأعداد محددة الحجمالأعداد غير محددة الحجمالأعداد السالبةالقيم الخاصة X و Zمراجعة - تنسيقات الأعداد6الوحدات
هيكل الوحدةمنافذ الإدخال والإخراجمنافذ Inoutاستدعاء الوحداتربط المنافذ بالاسمربط المنافذ بالترتيبمراجعة - بناء وحدة