Menu
Coddy logo textTech

מקודדי עדיפות

חלק מהיחידה תכנון 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;

הענף הראשון שהתנאי שלו מתקיים הוא זה שנבחר, ולכן לביט הבקשה בעל הערך הגבוה ביותר יש עדיפות.

ציין את סדר העדיפויות והגדר במפורש את הפלט כשאין בקשה.

challenge icon

אתגר

בינוני

קודד את הביט המאושר הגבוה ביותר של 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
quiz iconבחנו את עצמכם

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

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

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