טבלאות ROM קומבינטוריות
חלק מהיחידה תכנון RTL ואימות במסלול ה-Verilog של Coddy. שיעור 21 מתוך 38.
טבלת חיפוש קבועה מתארת מיפוי לקריאה בלבד מכתובת לנתונים. אפשר לתאר את התוכן באמצעות case מלא או function מלאה. בקריאה קומבינטורית, שינוי הכתובת משנה את הפלט ללא המתנה לשעון. כלי הסינתזה בוחר מימוש; קוד המקור הזה אינו מבטיח רכיב זיכרון מסוים של FPGA.
קטע רלוונטי; ההצהרות והחיבורים שמסביב מסופקים באתגר.
function [7:0] lookup;
input [1:0] addr;
begin
case(addr)
0: lookup=3;
1: lookup=5;
2: lookup=8;
3: lookup=13;
default: lookup=0;
endcase
end
endfunctionכל כתובת בוחרת קבוע מוגדר, ללא פלט קודם שנשמר.
ציין כל רשומה בטבלה והבחן בין חיפוש קומבינטורי לבין השהיית קריאה רשומה.
אתגר
בינוניממשו טבלת חיפוש קומבינטורית בת שמונה רשומות. הכתובות 0 עד 7 מחזירות בהתאמה 3,5,8,13,21,34,55,89. השתמשו ב-case מלא המבוסס על function כדי להניע את y. עמודות הפלט: y. כל ערכי הגירוי הם ערכים בינאריים ידועים.
השלימו את design.v ושמרו על שמות המודולים והיציאות שלו. testbench.v הנעול מספק שינויי קלט ומדפיס את הפלטים לאחר שהם מתייצבים. הוא בוחר תרחיש באמצעות ארגומנט סימולטור כגון +CASE=1; אין צורך בקלט סטנדרטי. אל תוסיפו הדפסות, השהיות או סיום סימולציה לתכנון. הפלט הצפוי הוא שורה אחת של ערכים עשרוניים לכל תצפית, מופרדים ברווח אחד ומסתיימים בתו newline.
נסו בעצמכם
module dut (input [2:0] addr, output [7:0] y);
// החליפו את מציין המקום הזה בתכנון שלכם.
assign y = 0;
endmoduleהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנון RTL ואימות
1RTL קומבינטורי אמין
ערכי ברירת מחדל מונעים נעילותמקודדי עדיפותאימות One-Hotפענוח Case בטוחסיכום - נתב בקשות2רוחבי מילה ואריתמטיקה עם סימן
שימור ביטי נשאהשוואות עם סימןהזזות ימינה אריתמטיותגלישה ורוויהסיכום - הפרש עם סימן5זיכרון וטבלאות חיפוש
טבלאות ROM קומבינטוריותאחסון במערך רגיסטריםיציאות קריאה עם רגיסטריםהעברה קדימה בקריאה ובכתיבהסיכום — בנק קריאה כפולהתרגלו בעצמכם: קומפיילר Verilog אונליין