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

عدّ العينات المقبولة

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

challenge icon

التحدي

صعب

أنشئ مراقب عينات واحدًا على مدى خمس خطوات. تتبّع العينات المقبولة في count: زِد القيمة عند كل حافة en لا تؤدي إلى إعادة الضبط أو المسح، مع تشبيعها عند 15. تؤدي rst أو clear إلى إعادة ضبط count وكذلك total. تزيد العينات المقبولة ذات القيمة صفرية قيمة count أيضًا. احتفظ بكل ما سبق من الخطوات السابقة، بما في ذلك بيئة الاختبار الخاصة بها وسلوك إخراجها السابق. جميع قيم الإدخال معروفة. تحتوي السيناريوهات على 40 حافة كحد أقصى، لذا يتسع المجموع ضمن 16 بتًا. تطبع بيئة الاختبار الثابتة total للسيناريوهات 1-9، وtotal وcount للسيناريوهات 10-12، وtotal وcount وalarm للسيناريوهات 13-15. تُقيَّم فقط السيناريوهات المفعّلة لهذه الخطوة.

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

جرّب بنفسك

module dut(input clk,rst,en,clear, input [7:0] data, input [15:0] limit, output reg [15:0] total, output reg [3:0] count, output alarm);
    always @(posedge clk)begin
        if(rst)total<=0;else if(clear)total<=0;else if(en)total<=total+data;
        count<=0;
    end
    assign alarm=0;
endmodule

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

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