Menu
CoddyTech

יצירת מופע של מודול

חלק מהיחידה יסודות במסלול ה-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) וחיבורים משלו. הם פועלים באופן עצמאי.

מה קורה במהלך יצירת מופע

  • נוצרת עותק של החומרה
  • לכל מופע יש קבוצת אותות משלו
  • המופעים פועלים במקביל (בו־זמנית)
  • האותות שמעבירים קובעים כיצד מופעים מתחברים לשאר התכנון

כללים ליצירת מופעים

כלללמה
שם המופע חייב להיות ייחודיכדי להבחין בין עותקים
שם המודול חייב להתקייםהוא חייב להיות מוגדר במקום אחר
יש להעביר אות אחד לכל יציאהיציאה ללא אות נשארת לא מחוברת, ויותר אותות מיציאות הם שגיאה
סדר החיבורים חייב להתאים לסדר היציאותהאות הראשון מתחבר ליציאה הראשונה, וכן הלאה.
challenge icon

אתגר

השלימו את הקוד על ידי יצירת מופע של המודול or_gate.

מה לעשות:

  1. צרו מופע של or_gate בשם המופע or1
  2. העבירו את האותות בסדר הנכון: 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
quiz iconבחנו את עצמכם

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

כל השיעורים ביחידה יסודות

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