מקודדי עדיפות
חלק מהיחידה תכנון RTL ואימות במסלול ה-Verilog של Coddy. שיעור 2 מתוך 38.
מקודד ממפה סיבית בקשה לאינדקס. כשיש כמה בקשות פעילות, נדרש כלל עדיפות מפורש. שרשרת if/else-if מעניקה עדיפות לענפים מוקדמים יותר; אות תקפות נפרד מבדיל בין היעדר בקשה לבין אינדקס אפס.
קטע רלוונטי; הצהרות וחיבורים מסביב מסופקים באתגר.
if (req[3]) code = 3;
else if (req[2]) code = 2;
else if (req[1]) code = 1;
else code = 0;הענף הראשון שהתנאי שלו מתקיים הוא זה שנבחר, ולכן לביט הבקשה בעל הערך הגבוה ביותר יש עדיפות.
ציין את סדר העדיפויות והגדר במפורש את הפלט כשאין בקשה.
אתגר
בינוניקודד את הביט המאושר הגבוה ביותר של req ברוחב 4 סיביות לתוך code. הגדר את valid אם קיימת בקשה כלשהי; כאשר req הוא אפס, גם code וגם valid הם אפס. עמודות הפלט: code, valid. כל ערכי הגירוי הם ערכים בינאריים ידועים.
השלם את design.v ושמור על שמות המודולים והיציאות שלו. ה-testbench.v הנעול מספק שינויים בקלט ומדפיס את הפלטים לאחר שהם מתייצבים. הוא בוחר תרחיש באמצעות ארגומנט לסימולטור, כגון +CASE=1; אין צורך בקלט סטנדרטי. אל תוסיף להדפסות, השהיות או סיום סימולציה לתכנון. הפלט הצפוי הוא שורה אחת של ערכים עשרוניים לכל תצפית, מופרדים ברווח אחד ומסתיימים בשורה חדשה.
נסו בעצמכם
module dut (input [3:0] req, output reg [1:0] code, output reg valid);
// החליפו את מציין המקום הזה בתכנון שלכם.
initial code = 0;
initial valid = 0;
endmoduleהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנון RTL ואימות
1RTL קומבינטורי אמין
ערכי ברירת מחדל מונעים נעילותמקודדי עדיפותאימות One-Hotפענוח Case בטוחסיכום - נתב בקשות2רוחבי מילה ואריתמטיקה עם סימן
שימור ביטי נשאהשוואות עם סימןהזזות ימינה אריתמטיותגלישה ורוויהסיכום - הפרש עם סימןתרגלו בעצמכם: קומפיילר Verilog אונליין