Generate מותנה
חלק מהיחידה תכנון RTL ואימות במסלול ה-Verilog של Coddy. שיעור 14 מתוך 38.
פקודת generate-if בוחרת מבנה חומרה באמצעות parameter קבוע. רק ענף אחד נבנה עבור מופע נתון. פקודת if פרוצדורלית או ביטוי מותנה המשתמשים באות בוחרים התנהגות בזמן ריצה; הם אינם מחליפים הגדרת תצורה באמצעות generate.
קטע רלוונטי; ההצהרות והחיבורים שמסביב מסופקים באתגר.
generate
if(INVERT) begin: inverted
assign y = ~a;
end else begin: direct
assign y = a;
end
endgenerateהפרמטר parameter בוחר איזה דרייבר ייווצר עבור מופע זה.
השתמשו ב-generate עבור תצורה קבועה ובבחירת RTL רגילה עבור בקרות בזמן ריצה.
אתגר
בינוניהשתמשו ב-generate מותנה: MODE=0 מעביר את a ללא שינוי; MODE=1 הופך את כל שמונת הביטים של a. הקלט b אינו בשימוש. MODE הוא 0 או 1. ספסל הבדיקה יוצר מופעים של שתי התצורות ומדפיס תחילה את y0 ואז את y1.
השלימו את design.v ושמרו על שמות המודולים והיציאות שלו. testbench.v הנעול מספק שינויים בקלט ומדפיס את הפלטים לאחר התייצבותם. הוא בוחר תרחיש באמצעות ארגומנט של סימולטור, כגון +CASE=1; אין צורך בקלט סטנדרטי. אל תוסיפו הדפסה, השהיות או סיום סימולציה לתכנון. הפלט הצפוי הוא שורה אחת של ערכים עשרוניים לכל תצפית, מופרדים ברווח אחד ומסתיימים בתו שורה חדשה.
נסו בעצמכם
module dut #(parameter MODE=0) (input [7:0] a,b, output [7:0] y);
assign y=0;
endmoduleהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנון RTL ואימות
1RTL קומבינטורי אמין
ערכי ברירת מחדל מונעים נעילותמקודדי עדיפותאימות One-Hotפענוח Case בטוחסיכום - נתב בקשות2רוחבי מילה ואריתמטיקה עם סימן
שימור ביטי נשאהשוואות עם סימןהזזות ימינה אריתמטיותגלישה ורוויהסיכום - הפרש עם סימן3RTL לשימוש חוזר
פונקציות קומבינטוריותפרמטרים בטוחים מבחינת רוחבלולאות GenerateGenerate מותנהסיכום - מסכת ביטים לשימוש חוזר6סביבות בדיקה עם בדיקה עצמית
בדיקות בארבעה מצביםמשימות בדיקה לשימוש חוזרמודלי ייחוס וניקודכיסוי מקרי קצה ובקרהסיכום - בדיקת מחברתרגלו בעצמכם: קומפיילר Verilog אונליין