השמה חוסמת
חלק מהיחידה יסודות במסלול ה-Verilog של Coddy. שיעור 49 מתוך 90.
ב-Verilog יש שני סוגים של השמות פרוצדורליות: חוסמות (=) ולא חוסמות (<=). בשיעור הזה נתמקד בהשמה חוסמת.
השמה חוסמת משתמשת באופרטור =. היא נקראת "חוסמת" משום שהיא חוסמת את ביצוע הפקודה הבאה עד שההשמה הנוכחית מסתיימת. הקוד רץ שלב אחר שלב, לפי הסדר.
תחביר:
variable = expression;מתי להשתמש בהשמה חוסמת
משתמשים בהשמה חוסמת (=) עבור לוגיקה קומבינטורית: מעגלים שבהם הפלטים משתנים מיד כשהקלטים משתנים, ללא שעון וללא זיכרון.
דוגמאות ללוגיקה צירופית:
- שערי AND / OR / XOR
- מחברים ומחסרים
- מרבבים
- מפענחים
דוגמה ב-Verilog:
always @(*) begin
sum = a + b; // השמה חוסמת
carry = a & b; // השמה חוסמת
endהשמה חוסמת בבלוקים מסוג Always (לוגיקה קומבינטורית)
always @(*) begin
temp = a & b; // שלב 1
out = temp | c; // שלב 2 (משתמש ב-temp משלב 1)
endהסדר חשוב. זה בסדר עבור לוגיקה קומבינטורית.
חוסם לעומת לא חוסם
חוסם (=) | לא חוסם (<=) | |
|---|---|---|
| ביצוע | אחד אחרי השני | כולם בבת אחת |
| האם השורה הבאה ממתינה? | כן | לא |
| שימושים | לוגיקה קומבינטורית | לוגיקה סדרתית (כפכפים) |
חשוב: אל תשתמשו בהשמה חוסמת עבור כפכפים
אתגר
הוסף את השמות החסרות מסוג blocking כדי להחליף בין הערכים של x ו־y באמצעות משתנה זמני.
מה לעשות:
- הקצה את הערך של
xל־temp(שמור את x ב־temp) - הקצה את הערך של
yל־x(העבר את y אל x) - הקצה את הערך של
tempל־y(העבר את x שנשמר אל y)
נסו בעצמכם
module swap;
reg x, y;
reg temp;
initial begin
x = 1;
y = 0;
$display("Before swap: x=%d, y=%d", x, y);
// TODO: שלב 1 - הצב את x ב-temp
// TODO: שלב 2 - הצב את y ב-x
// TODO: שלב 3 - הצב את temp ב-y
$display("After swap: x=%d, y=%d", x, y);
$finish;
end
endmoduleהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
5אופרטורים חלק 2
אופרטורים לוגייםאופרטורי צמצוםאופרטורי הזזהאופרטור שרשוראופרטור תנאיסיכום – אתגר האופרטורים3שיטת המספרים
ייצוג בינארימספרים בעלי גודל מוגדרמספרים ללא גודל מוגדרמספרים שלילייםהערכים המיוחדים X ו־Zסיכום – תבניות מספרים6מודולים
מבנה מודוליציאות קלט ופלטיציאות קלט-פלטיצירת מופע של מודולמיפוי יציאות לפי שםמיפוי יציאות לפי סדרסיכום – בניית מודול9בלוקים פרוצדורליים
בלוק Alwaysבלוק Initialרשימת רגישותהשמה חוסמתהשמה לא חוסמתסיכום — Always לעומת Initialתרגלו בעצמכם: קומפיילר Verilog אונליין