Menu
Coddy logo textTech

ניקוי החלון הנוכחי

חלק מהיחידה תכנון RTL ואימות במסלול ה-Verilog של Coddy. שיעור 33 מתוך 38.

challenge icon

אתגר

קשה

בנה Sample Monitor אחד לאורך חמישה שלבים. הוסף ניקוי סינכרוני בעדיפות אחרי rst ולפני en. clear מאפס את total בלי לקבל נתונים באותו חזית שעון, גם כאשר en=1. השאר את התנהגות האיפוס וההפעלה. השאר את כל מה שנכלל בשלבים הקודמים, כולל testbench שלו והתנהגות הפלט הקודמת. כל ערכי הקלט ידועים. התרחישים מכילים לכל היותר 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);
    always @(posedge clk)begin
        if(rst)total<=0;else if(en)total<=total+data;
        count<=0;
    end
    assign alarm=0;
endmodule

כל השיעורים ביחידה תכנון RTL ואימות

תרגלו בעצמכם: קומפיילר Verilog אונליין