אימות 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 בעת אימות בקשות.
אתגר
בינוניעבור ערכי הקלט הידועים של 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השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנון RTL ואימות
1RTL קומבינטורי אמין
ערכי ברירת מחדל מונעים נעילותמקודדי עדיפותאימות One-Hotפענוח Case בטוחסיכום - נתב בקשות2רוחבי מילה ואריתמטיקה עם סימן
שימור ביטי נשאהשוואות עם סימןהזזות ימינה אריתמטיותגלישה ורוויהסיכום - הפרש עם סימןתרגלו בעצמכם: קומפיילר Verilog אונליין