סיכום — בנק קריאה כפולה
חלק מהיחידה תכנון RTL ואימות במסלול ה-Verilog של Coddy. שיעור 25 מתוך 38.
אתגר
בינוניממשו ארבע מילים של 8 סיביות, עם כתיבה אחת מסונכרנת לשעון ושתי יציאות קריאה רשומות של הנתונים הישנים, qa ו־qb. we כותב ל־waddr. rst סינכרוני מאפס רק את qa ואת qb. אחרת, re מאפשר קריאה הן מ־raddr_a והן מ־raddr_b; קריאות שאינן מאופשרות שומרות על ערכן. כתיבות המתרחשות באותו חזית שעון אינן משנות את הערכים הישנים שנלכדים בקריאות האלה. הבדיקות מאתחלות את המילים לפני הקריאה. עמודות הפלט: qa, qb. כל אותות הבקרה והנתונים יציבים לפני כל חזית שעון עולה; התוצאות נצפות לאחר מכן.
השלימו את design.v ושמרו על שמות המודולים והיציאות שלו. testbench.v הנעול מספק שינויי קלט ומדפיס את הפלטים לאחר שהם מתייצבים. הוא בוחר תרחיש באמצעות ארגומנט סימולטור כגון +CASE=1; אין צורך בקלט סטנדרטי. אל תוסיפו הדפסות, השהיות או סיום סימולציה לתכנון. הפלט הצפוי הוא שורה אחת של ערכים עשרוניים לכל תצפית, מופרדים ברווח אחד ומסתיימים בשורה חדשה.
נסו בעצמכם
module dut (input clk, input rst, input we, input re, input [1:0] waddr, input [1:0] raddr_a, input [1:0] raddr_b, input [7:0] data, output reg [7:0] qa, output reg [7:0] qb);
// החליפו את מציין המקום הזה בתכנון שלכם.
initial qa = 0;
initial qb = 0;
endmoduleכל השיעורים ביחידה תכנון RTL ואימות
1RTL קומבינטורי אמין
ערכי ברירת מחדל מונעים נעילותמקודדי עדיפותאימות One-Hotפענוח Case בטוחסיכום - נתב בקשות2רוחבי מילה ואריתמטיקה עם סימן
שימור ביטי נשאהשוואות עם סימןהזזות ימינה אריתמטיותגלישה ורוויהסיכום - הפרש עם סימן5זיכרון וטבלאות חיפוש
טבלאות ROM קומבינטוריותאחסון במערך רגיסטריםיציאות קריאה עם רגיסטריםהעברה קדימה בקריאה ובכתיבהסיכום — בנק קריאה כפולהתרגלו בעצמכם: קומפיילר Verilog אונליין