יצירת מופע של מודול
חלק מהיחידה יסודות במסלול ה-Verilog של Coddy. שיעור 33 מתוך 90.
יצירת מופע של מודול היא תהליך של יצירת עותק של מודול בתוך מודול אחר. כך בונים תכנונים גדולים יותר על ידי חיבור של רכיבים קטנים יותר.
לאחר שהגדרת מודול, אפשר להשתמש בו בתוך מודול אחר. הדבר נקרא יצירת מופע. כל יצירת מופע יוצרת מופע נפרד של המודול הזה. אפשר לחשוב על כך כמו שימוש בתוכנית אב כדי לבנות כמה עותקים של אותו רכיב.
תחביר בסיסי
module_name instance_name (connections);| חלק | משמעות |
|---|---|
module_name | שם המודול ליצירת מופע שלו |
instance_name | שם ייחודי לעותק הזה |
connections | אותות המחוברים ליציאות של המודול |
דוגמה פשוטה
שלב 1: הגדרת מודול
module and_gate (
input a,
input b,
output c
);
assign c = a & b;
endmoduleשלב 2: יצירת מופע שלו במודול אחר
module top (
input x,
input y,
output z
);
and_gate gate1 (x, y, z);
endmoduleכך פועל הקוד הזה:
and_gate: שם המודול שבו אנחנו רוצים להשתמש (הוא חייב להיות מוגדר במקום כלשהו)gate1: שם ייחודי שאנחנו נותנים למופע הספציפי הזה(x, y, z): האותות שאנחנו מחברים ליציאות המודול (באותו סדר שבו הן מופיעות בהגדרת המודול)
האות הראשון x מתחבר ליציאה הראשונה a. האות השני y מתחבר ליציאה השנייה b. האות השלישי z מתחבר ליציאה השלישית c.
העבר אות אחד לכל פורט. Verilog מקבלת גם פחות אותות, ואפילו סוגריים ריקים, אבל כל פורט ללא אות נשאר מנותק ואינו מחובר לשום דבר בתכנון שלך. העברת יותר אותות ממספר הפורטים שיש למודול היא שגיאה.
מופעים מרובים
אפשר ליצור כמה עותקים של אותו מודול:
module top;
wire out1, out2;
wire sig1, sig2, sig3, sig4;
and_gate gate1 (sig1, sig2, out1);
and_gate gate2 (sig3, sig4, out2);
endmoduleלכל מופע יש שם משלו (gate1, gate2) וחיבורים משלו. הם פועלים באופן עצמאי.
מה קורה במהלך יצירת מופע
- נוצרת עותק של החומרה
- לכל מופע יש קבוצת אותות משלו
- המופעים פועלים במקביל (בו־זמנית)
- האותות שמעבירים קובעים כיצד מופעים מתחברים לשאר התכנון
כללים ליצירת מופעים
| כלל | למה |
|---|---|
| שם המופע חייב להיות ייחודי | כדי להבחין בין עותקים |
| שם המודול חייב להתקיים | הוא חייב להיות מוגדר במקום אחר |
| יש להעביר אות אחד לכל יציאה | יציאה ללא אות נשארת לא מחוברת, ויותר אותות מיציאות הם שגיאה |
| סדר החיבורים חייב להתאים לסדר היציאות | האות הראשון מתחבר ליציאה הראשונה, וכן הלאה. |
אתגר
השלימו את הקוד על ידי יצירת מופע של המודול or_gate.
מה לעשות:
- צרו מופע של
or_gateבשם המופעor1 - העבירו את האותות בסדר הנכון:
input_a,input_b,output_y
נסו בעצמכם
module or_gate (
input in1,
input in2,
output result
);
assign result = in1 | in2;
endmodule
module top (
input input_a,
input input_b,
output output_y
);
// TODO: צרו מופע של or_gate בשם or1
// העבירו את האותות לפי הסדר: input_a, input_b, output_y
// אל תשתמשו בתחביר .port(signal)
endmoduleהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
5אופרטורים חלק 2
אופרטורים לוגייםאופרטורי צמצוםאופרטורי הזזהאופרטור שרשוראופרטור תנאיסיכום – אתגר האופרטורים3שיטת המספרים
ייצוג בינארימספרים בעלי גודל מוגדרמספרים ללא גודל מוגדרמספרים שלילייםהערכים המיוחדים X ו־Zסיכום – תבניות מספרים6מודולים
מבנה מודוליציאות קלט ופלטיציאות קלט-פלטיצירת מופע של מודולמיפוי יציאות לפי שםמיפוי יציאות לפי סדרסיכום – בניית מודולתרגלו בעצמכם: קומפיילר Verilog אונליין