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

القيم الافتراضية تمنع المزالج

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

يجب تعيين خرج تجميعي لكل مسار إدخال. إذا تخطّت كتلة always تعيين خرج، فإن ذلك الخرج يحتفظ بقيمته القديمة، مما قد يؤدي إلى استنتاج مزلاج. يجعل تعيين default متبوعًا بالتجاوزات التغطية مرئية.

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

always @* begin
    y = 0;
    if (en) y = data;
end

يغطي default مسار التعطيل، لذا يعتمد الخرج على المدخلات الحالية فقط.

أسند قيمة لكل خرج تركيبي في كل مسار؛ استخدم القيم الافتراضية قبل التجاوزات الشرطية.

challenge icon

التحدي

متوسط

نفّذ مخرجًا مُبوّبًا بعرض 8 بت: عندما تكون en تساوي واحدًا، تساوي y قيمة a؛ وإلا تكون قيمة y صفرًا. أسند قيمة إلى y في كل مسار توافقي. أعمدة الخرج: y. جميع قيم التحفيز هي قيم ثنائية معروفة.

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

جرّب بنفسك

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

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

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

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