Menu
Coddy logo textTech

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 רגילה עבור בקרות בזמן ריצה.

challenge icon

אתגר

בינוני

השתמשו ב-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
quiz iconבחנו את עצמכם

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

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

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