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

دوال توافقية

جزء من قسم تصميم RTL والتحقق منه في رحلة Verilog على Coddy. الدرس 11 من 38.

تُغلّف function في Verilog عملية حسابية تستغرق صفرًا من الوقت لإعادة استخدامها داخل وحدة. حدّد عرض القيمة المُعادة، ووسائط الإدخال والمتغيرات المحلية، ثم استخدم assign لإسناد النتيجة إلى اسم function. لا تحتوي الدوال التوافقية على تأخيرات أو عناصر تحكم في الأحداث؛ ويمكن لحلقة ذات حدود ثابتة وصف منطق متكرر.

مقتطف ذو صلة؛ يتم توفير التصريحات والاتصالات المحيطة في التحدي.

function [7:0] gray;
    input [7:0] value;
    begin gray = value ^ (value >> 1); end
endfunction

يؤدي استدعاء function إلى حساب تعبير من دون إضافة وقت للمحاكاة.

أسنِد نتيجة function في كل مسار، وحافظ على خلوّ الدوال التوافقية من عناصر التحكم في التوقيت.

challenge icon

التحدي

متوسط

نفّذ function بلغة Verilog باسم gray لتحويل قيمة ثنائية غير موقعة من 8 بتات إلى ترميز Gray باستخدام XOR بين value و(value بعد إزاحتها إلى اليمين بمقدار واحد). قُد y باستدعاء function باستخدام a. أعمدة الإخراج: y. جميع قيم التحفيز هي قيم ثنائية معروفة.

أكمل design.v وحافظ على أسماء الوحدات ومنافذها. يوفّر testbench.v المقفل تغييرات الإدخال ويطبع المخرجات بعد استقرارها. ويختار سيناريو باستخدام وسيط للمحاكي مثل +CASE=1؛ ولا يلزم إدخال قياسي. لا تضف طباعة أو تأخيرات أو إنهاءً للمحاكاة إلى التصميم. المخرج المتوقع هو صف واحد من القيم العشرية لكل ملاحظة، تفصل بينها مسافة واحدة وتنتهي بسطر جديد.

جرّب بنفسك

module dut (input [7:0] a, output [7:0] y);
    // استبدل هذا العنصر النائب بتصميمك.
    assign y = 0;
endmodule
quiz iconاختبر نفسك

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

جميع دروس تصميم RTL والتحقق منه

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