ערכי ברירת מחדל מונעים נעילות
חלק מהיחידה תכנון RTL ואימות במסלול ה-Verilog של Coddy. שיעור 1 מתוך 38.
יש להקצות ערך לפלט קומבינטורי בכל מסלול קלט. אם בלוק always מדלג על הקצאת ערך לפלט, הפלט הזה שומר על הערך הקודם שלו, מה שעלול להסיק תפס. הקצאת ברירת מחדל default ואחריה דריסות הופכת את הכיסוי לגלוי.
קטע רלוונטי; ההצהרות והחיבורים שמסביב מסופקים באתגר.
always @* begin
y = 0;
if (en) y = data;
endה־default מכסה את הנתיב המושבת, ולכן הפלט תלוי רק בקלטים הנוכחיים.
השְׁמֵט ערך לכל פלט קומבינטורי בכל מסלול; השתמש בברירות מחדל לפני דריסות מותנות.
אתגר
בינוניממשו פלט מותנה של 8 סיביות: כאשר en הוא אחד, y שווה ל־a; אחרת y הוא אפס. הקצו ערך ל־y בכל מסלול קומבינטורי. עמודות הפלט: y. כל ערכי העירור הם ערכים בינאריים ידועים.
השלימו את design.v ושמרו על שמות המודולים והיציאות שלו. ה־testbench.v הנעול מספק שינויים בכניסות ומדפיס את הפלטים לאחר התייצבותם. הוא בוחר תרחיש באמצעות ארגומנט של הסימולטור, כגון +CASE=1; אין צורך בקלט סטנדרטי. אל תוסיפו להדפסות, להשהיות או לסיום הסימולציה של התכנון. הפלט הצפוי הוא שורה אחת של ערכים עשרוניים לכל תצפית, מופרדים ברווח אחד ומסתיימים בתו newline.
נסו בעצמכם
module dut (input en, input [7:0] a, output reg [7:0] y);
// החליפו את מציין המקום הזה בתכנון שלכם.
initial y = 0;
endmoduleהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנון RTL ואימות
1RTL קומבינטורי אמין
ערכי ברירת מחדל מונעים נעילותמקודדי עדיפותאימות One-Hotפענוח Case בטוחסיכום - נתב בקשות2רוחבי מילה ואריתמטיקה עם סימן
שימור ביטי נשאהשוואות עם סימןהזזות ימינה אריתמטיותגלישה ורוויהסיכום - הפרש עם סימןתרגלו בעצמכם: קומפיילר Verilog אונליין