פונקציות קומבינטוריות
חלק מהיחידה תכנון RTL ואימות במסלול ה-Verilog של Coddy. שיעור 11 מתוך 38.
פונקציית Verilog אורזת חישוב ללא זמן לשימוש חוזר בתוך מודול. יש להצהיר על רוחב ערך ההחזרה שלה, על ארגומנטים של הקלט ועל משתנים מקומיים, ואז להשתמש ב-assign כדי להציב את התוצאה בשם ה-function. פונקציות קומבינטוריות אינן מכילות השהיות או בקרות אירועים; לולאה עם גבולות קבועים יכולה לתאר לוגיקה שחוזרת על עצמה.
קטע רלוונטי; הצהרות וחיבורים מסביב מסופקים באתגר.
function [7:0] gray;
input [7:0] value;
begin gray = value ^ (value >> 1); end
endfunctionקריאה ל־function מחשבת ביטוי מבלי להוסיף זמן סימולציה.
יש להקצות את התוצאה של function בכל מסלול ולהשאיר פונקציות קומבינטוריות ללא בקרות תזמון.
אתגר
בינוניממשו את function gray ב-Verilog, שממירה ערך בינארי לא מסומן בן 8 סיביות לקוד Gray באמצעות XOR של value עם value לאחר הזזה ימינה בסיבית אחת. הפעילו את y באמצעות קריאה ל-function עם a. עמודות הפלט: y. כל ערכי הגירוי הם ערכים בינאריים ידועים.
השלימו את design.v ושמרו על שמות המודולים והיציאות שלו. ה-testbench.v הנעול מספק שינויים בקלט ומדפיס את הפלטים לאחר שהם מתייצבים. הוא בוחר תרחיש באמצעות ארגומנט סימולטור כגון +CASE=1; אין צורך בקלט סטנדרטי. אל תוסיפו הדפסה, השהיות או סיום סימולציה לתכנון. הפלט הצפוי הוא שורה אחת של ערכים עשרוניים לכל תצפית, מופרדים ברווח אחד ומסתיימים בשורה חדשה.
נסו בעצמכם
module dut (input [7:0] a, output [7:0] y);
// החליפו את מציין המקום הזה בתכנון שלכם.
assign y = 0;
endmoduleהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנון RTL ואימות
1RTL קומבינטורי אמין
ערכי ברירת מחדל מונעים נעילותמקודדי עדיפותאימות One-Hotפענוח Case בטוחסיכום - נתב בקשות2רוחבי מילה ואריתמטיקה עם סימן
שימור ביטי נשאהשוואות עם סימןהזזות ימינה אריתמטיותגלישה ורוויהסיכום - הפרש עם סימן3RTL לשימוש חוזר
פונקציות קומבינטוריותפרמטרים בטוחים מבחינת רוחבלולאות GenerateGenerate מותנהסיכום - מסכת ביטים לשימוש חוזר6סביבות בדיקה עם בדיקה עצמית
בדיקות בארבעה מצביםמשימות בדיקה לשימוש חוזרמודלי ייחוס וניקודכיסוי מקרי קצה ובקרהסיכום - בדיקת מחברתרגלו בעצמכם: קומפיילר Verilog אונליין