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

معلمات آمنة العرض

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

قدّمت المفاهيم الأساسية عروضًا قابلة للتهيئة. يجب أن يتعامل RTL القابل لإعادة الاستخدام أيضًا مع أصغر عرض قانوني، وأن يحدّد أحجام التعبيرات الوسيطة عمدًا، وأن يتجنب مواضع البتات المضمّنة ثابتًا. ينشئ التكرار {WIDTH{1'b1}} قناعًا مطابقًا للعرض. المعلمات ثوابت لمرحلة التوسعة، وليست عناصر تحكم وقت التشغيل.

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

wire [WIDTH:0] sum;
assign sum = {1'b0,a} + {1'b0,b};
assign y = sum[WIDTH] ? {WIDTH{1'b1}} : sum[WIDTH-1:0];

يتكيف كلٌّ من موضع الحمل وقيمة التشبع مع العرض المُهيّأ.

اختبر الحد الأدنى القانوني للعرض، واستنتج كل شريحة وثابت يعتمدان على العرض من المعلمات.

challenge icon

التحدي

متوسط

أنشئ مُزِيدًا بعرض WIDTH بت يُرجع البتات WIDTH الدنيا من a+1. الإدخال b غير مستخدم. يجب أن تعمل الوحدة نفسها مع WIDTH=1 وكذلك مع العروض الأكبر. قيمة WIDTH موجبة. تنشئ بيئة الاختبار المقفلة مثيلات بقيم WIDTH تساوي 1 و4 و8، باستخدام البتات الدنيا من a وb للمثيلات ذات العروض الأصغر. أعمدة الخرج هي y1 وy4 وy8 بالنظام العشري.

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

جرّب بنفسك

module dut #(parameter WIDTH=4) (input [WIDTH-1:0] a,b, output [WIDTH-1:0] y);
    // نفّذ الدائرة ذات المعلمات.
    assign y = 0;
endmodule
quiz iconاختبر نفسك

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

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

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