השמה לא חוסמת
חלק מהיחידה יסודות במסלול ה-Verilog של Coddy. שיעור 50 מתוך 90.
בשיעור הקודם עסקנו בהשמה חוסמת (=), שמתבצעת שלב אחר שלב. עכשיו נעסוק בהשמה לא חוסמת (<=), שמתבצעת בבת אחת, במקביל.
השמה לא חוסמת משתמשת באופרטור <=. היא נקראת "לא חוסמת" משום שהיא לא חוסמת את ביצוע הפקודה הבאה. כל ההשמות הלא חוסמות בבלוק מתבצעות באותו זמן.
תחביר:
variable <= expression;מתי להשתמש בהשמה לא חוסמת
השמה לא חוסמת (<=) משמשת עבור לוגיקה סדרתית: מעגלים שמשתמשים בשעון ויש להם זיכרון. הפלטים משתנים רק בקצה של פעימת שעון (בדרך כלל בקצה העולה).
דוגמאות ללוגיקה סדרתית:
- כפכפים
- אוגרים
- מונים
- מכונות מצבים
- אוגרי הזזה
דוגמה ב-Verilog:
initial begin
a <= 5; // תוזמן, אך טרם בוצע
b <= a + 2; // תוזמן, משתמש בערך הישן של a
c <= b * 3; // תוזמן, משתמש בערך הישן של b
endכל שלוש ההשמות מתבצעות באותו הזמן באמצעות הערכים הישנים. בסוף שלב הזמן, כל העדכונים מתבצעים יחד.
השמה לא חוסמת בבלוקים מסוג Always (לוגיקה סדרתית)
השמה לא חוסמת משמשת עבור לוגיקה סדרתית: מעגלים שמשתמשים בשעון ויש להם זיכרון (פליפ-פלופים, אוגרים, מונים).
always @(posedge clk) begin
q <= d; // q מקבל את d בקצה השעון
count <= count + 1; // count גדל ב-1 בקצה השעון
endשתי ההשמות מתבצעות באותו הזמן, תוך שימוש בערכים שהיו לפני חזית השעון.
סיכום
| כלל | הסבר |
|---|---|
השתמשו ב־<= ללוגיקה סדרתית | always @(posedge clk) |
השתמשו ב־= ללוגיקה קומבינטורית | always @(*) |
| השמה לא־חוסמת מתבצעת במקביל | כל ההשמות מתבצעות בו־זמנית |
| הערכים מתעדכנים בסוף צעד הזמן | לא באופן מיידי |
אתגר
השלימו את ההשמה הלא־חוסמת
הוסיפו את ההשמות הלא־חוסמות החסרות כדי שאוגר ההזזה בן 2 הסיביות הזה יפעל.
איך זה עובד:
- בכל חזית שעון,
q1מקבל אתd q2מקבל את הערך הישן שלq1
מה לעשות:
- השימו את
dב-q1(השמה לא־חוסמת) - השימו את
q1ב-q2(השמה לא־חוסמת)
נסו בעצמכם
module shift_register (
input clk,
input reset,
input d,
output reg q1,
output reg q2
);
always @(posedge clk or posedge reset) begin
if (reset) begin
q1 <= 0;
q2 <= 0;
end else begin
// TODO: הוסף לוגיקת הזזה
// שלב 1: השם את d ב־q1 (בהשמה לא חוסמת)
// שלב 2: השם את q1 ב־q2 (בהשמה לא חוסמת)
end
end
endmoduleהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
5אופרטורים חלק 2
אופרטורים לוגייםאופרטורי צמצוםאופרטורי הזזהאופרטור שרשוראופרטור תנאיסיכום – אתגר האופרטורים3שיטת המספרים
ייצוג בינארימספרים בעלי גודל מוגדרמספרים ללא גודל מוגדרמספרים שלילייםהערכים המיוחדים X ו־Zסיכום – תבניות מספרים6מודולים
מבנה מודוליציאות קלט ופלטיציאות קלט-פלטיצירת מופע של מודולמיפוי יציאות לפי שםמיפוי יציאות לפי סדרסיכום – בניית מודול9בלוקים פרוצדורליים
בלוק Alwaysבלוק Initialרשימת רגישותהשמה חוסמתהשמה לא חוסמתסיכום — Always לעומת Initialתרגלו בעצמכם: קומפיילר Verilog אונליין