השמה רציפה
חלק מהיחידה יסודות במסלול ה-Verilog של Coddy. שיעור 37 מתוך 90.
בחומרה, חיבור הוא חוט פיזי המקשר בין שתי נקודות במעגל. לאחר שהחוט מחובר, החיבור קבוע ופעיל תמיד. אם אחד הקצוות משתנה, הקצה השני משתנה מיד.
ב-Verilog, אנחנו זקוקים לדרך למדל את ההתנהגות הזאת. אנחנו רוצים להעביר ערך אל חוט ולשמור על החיבור שלו לנצח. התהליך הזה נקרא השמה רציפה.
השמה רציפה משתמשת במילת המפתח assign כדי ליצור חיבור קבוע בין חוט לביטוי. החוט מקבל ברציפות את ערך הביטוי, בדיוק כמו חוט פיזי.
חשוב על זה כעל הלחמת חוט במקום כתיבת ערך פעם אחת.
תחביר
assign wire_name = expression;| חלק | משמעות |
|---|---|
assign | מילת מפתח שמתחילה השמה רציפה |
wire_name | החוט שמקבל את הערך (לא יכול להיות reg) |
expression | הערך שמניע את החוט |
דוגמה פשוטה
wire out;
assign out = a & b;המשמעות היא: out תמיד שווה ל־a AND b. בכל פעם ש־a או b משתנים, out משתנה מיד.
איך זה עובד
בניגוד ל־reg ששומר ערך, wire עם השמה רציפה מתעדכן ללא הרף:
module continuous_demo;
reg a, b;
wire c;
assign c = a & b; // c עוקב תמיד אחרי תוצאת AND של a ו-b
initial begin
a = 0; b = 0;
#10 $display("a=%d, b=%d, c=%d", a, b, c); // c=0
a = 1;
#10 $display("a=%d, b=%d, c=%d", a, b, c); // c=0 (1&0=0)
b = 1;
#10 $display("a=%d, b=%d, c=%d", a, b, c); // c=1 (1&1=1)
$finish;
end
endmoduleפלט:
a=0, b=0, c=0
a=1, b=0, c=0
a=1, b=1, c=1בכל פעם ש־a או b משתנים, c מתעדכן אוטומטית.
השמות מרובות
אפשר להשתמש בכמה השמות רציפות בתוך מודול:
module multiple_assign (
input a, b, c,
output x, y
);
assign x = a & b;
assign y = x | c; // y תלוי ב-x
endmoduleכל ההשמות מתבצעות במקביל, ברציפות.
שימושים נפוצים
השמות רציפים משמשים עבור:
- לוגיקה קומבינטורית פשוטה (AND, OR, XOR)
- חיבור חוטים זה לזה
- יצירת מאגרי תלת־מצב
- הנעת יציאות מתוך ביטויים קומבינטוריים
אתגר
מה לעשות:
- הוסף את השמת הרצף החסרה, כך ש-
zיהיה שווה ל-x AND y.
נסו בעצמכם
module continuous_challenge (
input x,
input y,
output z
);
// TODO: הוסף את ההשמה הרציפה החסרה כך ש-z יהיה שווה ל-x AND y
endmoduleהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
5אופרטורים חלק 2
אופרטורים לוגייםאופרטורי צמצוםאופרטורי הזזהאופרטור שרשוראופרטור תנאיסיכום – אתגר האופרטורים3שיטת המספרים
ייצוג בינארימספרים בעלי גודל מוגדרמספרים ללא גודל מוגדרמספרים שלילייםהערכים המיוחדים X ו־Zסיכום – תבניות מספרים6מודולים
מבנה מודוליציאות קלט ופלטיציאות קלט-פלטיצירת מופע של מודולמיפוי יציאות לפי שםמיפוי יציאות לפי סדרסיכום – בניית מודולתרגלו בעצמכם: קומפיילר Verilog אונליין