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

تجميع العينات

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

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

challenge icon

التحدي

صعب

أنشئ Sample Monitor واحدًا على خمس خطوات. عند كل حافة صاعدة، يمسح rst المتزامن قيمة total؛ وإلا فأضف البيانات غير الموقعة إلى total. استخدم سجل total بعرض 16 بت. في هذه الخطوة الأولى، لا يُستخدم en وclear، وتحافظ السيناريوهات على en=1 وclear=0. إن count وalarm مخرجان محجوزان يظلان بصفر. جميع قيم الإدخال معروفة. تحتوي السيناريوهات على 40 حافة كحد أقصى، لذا تتسع قيمة total ضمن 16 بت. تطبع testbench الثابتة 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);
    initial begin total=0;count=0;end
    assign alarm=0;
endmodule

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

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