Menu
Coddy logo textTech

אימות One-Hot

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

בנתונים בקידוד one-hot יש בדיוק סיבית אחת שמוגדרת כ־1. מפענח מייצר נתונים כאלה, ואילו אימות בודק את הנתונים הנכנסים לפני השימוש בהם. עבור ערכים בינאריים ידועים, ערך שאינו אפס הוא בקידוד one-hot כאשר bits & (bits - 1) הוא אפס. יחידה זו אינה משתמשת בקיצור הדרך הזה כדי לסווג את X או את Z.

קטע רלוונטי; ההצהרות והחיבורים שמסביב מסופקים באתגר.

assign one_hot = (bits != 0) && ((bits & (bits - 1)) == 0);

בדיקת הערך השונה מאפס שוללת מצב סרק; טריק הביטים דוחה כמה ביטים שמוגדרים.

הבחינו בין אפס, ביט אחד בדיוק שמוגדר כ־1, וכמה ביטים שמוגדרים כ־1 בעת אימות בקשות.

challenge icon

אתגר

בינוני

עבור ערכי הקלט הידועים של 4 סיביות, הגדר את valid רק כאשר סיבית אחת בדיוק היא 1. השתמש בבדיקת ערך שאינו אפס יחד עם bits & (bits - 1). עמודות הפלט: valid. כל ערכי הגירוי הם ערכים בינריים ידועים.

השלם את design.v ושמור על שמות המודולים והיציאות שלו. ה-testbench.v הנעול מספק שינויי קלט ומדפיס את הפלטים לאחר שהם מתייצבים. הוא בוחר תרחיש באמצעות ארגומנט סימולטור כגון +CASE=1; אין צורך בקלט סטנדרטי. אל תוסיף להדפסה, להשהיות או לסיום הסימולציה של התכנון. הפלט הצפוי הוא שורה אחת של ערכים עשרוניים לכל תצפית, מופרדים ברווח אחד ומסתיימת בשורה חדשה.

נסו בעצמכם

module dut (input [3:0] bits, output valid);
    // החליפו את ממלא המקום הזה בתכנון שלכם.
    assign valid = 0;
endmodule
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

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

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