אחסון במערך רגיסטרים
חלק מהיחידה תכנון RTL ואימות במסלול ה-Verilog של Coddy. שיעור 22 מתוך 38.
מערך לא ארוז יכול לייצג מילים של אחסון חומרה. כתיבה מסונכרנת לשעון מעדכנת מילה נבחרת אחת; קריאה רציפה בוחרת מילה ללא שעון קריאה. הסינתזה עשויה לממש מערכים קטנים באמצעות אוגרים או להסיק משאבי זיכרון עבור תבניות נתמכות. לעולם אל תניח שמילה שלא נכתבה מתחילה בערך אפס.
קטע רלוונטי; ההצהרות והחיבורים שמסביב מסופקים באתגר.
reg [7:0] mem [0:3];
always @(posedge clk)
if(we) mem[waddr] <= data;
assign q = mem[raddr];הכתיבה מופעלת בקצה, ואילו הקריאה עוקבת אחר מילת הנתונים המאוחסנת שנבחרה.
הגדירו במפורש את ההפעלה לכתיבה ואת תזמון הקריאה; אל תסתמכו על תוכן זיכרון initial שלא צוין.
אתגר
בינוניממשו ארבע מילים של 8 סיביות. בקצה עולה, we כותב נתונים אל mem[waddr]. q הוא קריאה קומבינטורית אסינכרונית של mem[raddr]. לזיכרון אין איפוס או תוכן initial; ספסל הבדיקה כותב לכל כתובת שנצפתה לפני שהוא קורא ממנה. התצפיות מתבצעות אחרי הקצה, לכן כתיבה וקריאה באותה כתובת נראית ב־q. עמודות הפלט: q. כל אותות הבקרה והנתונים יציבים לפני כל חזית שעון עולה; התוצאות נצפות אחריה.
השלימו את design.v ושמרו על שמות המודולים והפורטות שלו. הקובץ הנעול testbench.v מספק שינויי קלט ומדפיס את הפלטים לאחר התייצבותם. הוא בוחר תרחיש באמצעות ארגומנט של הסימולטור, כגון +CASE=1; אין צורך בקלט סטנדרטי. אל תוסיפו הדפסה, השהיות או סיום סימולציה לתכן. הפלט הצפוי הוא שורה אחת של ערכים עשרוניים לכל תצפית, מופרדים ברווח אחד ומסתיימים בשורה חדשה.
נסו בעצמכם
module dut (input clk, input we, input [1:0] waddr, input [7:0] data, input [1:0] raddr, output [7:0] q);
// החליפו את מציין המקום הזה בתכנון שלכם.
assign q = 0;
endmoduleהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנון RTL ואימות
1RTL קומבינטורי אמין
ערכי ברירת מחדל מונעים נעילותמקודדי עדיפותאימות One-Hotפענוח Case בטוחסיכום - נתב בקשות2רוחבי מילה ואריתמטיקה עם סימן
שימור ביטי נשאהשוואות עם סימןהזזות ימינה אריתמטיותגלישה ורוויהסיכום - הפרש עם סימן5זיכרון וטבלאות חיפוש
טבלאות ROM קומבינטוריותאחסון במערך רגיסטריםיציאות קריאה עם רגיסטריםהעברה קדימה בקריאה ובכתיבהסיכום — בנק קריאה כפולהתרגלו בעצמכם: קומפיילר Verilog אונליין