רשימת רגישות
חלק מהיחידה יסודות במסלול ה-Verilog של Coddy. שיעור 48 מתוך 90.
רשימת הרגישות קובעת לבלוק always מתי לבצע אותו. היא נכתבת בתוך סוגריים אחרי הסמל @.
רשימת הרגישות היא קבוצת אותות או אירועים שמפעילים את בלוק always. כאשר אחד מהאותות ברשימה משתנה, הבלוק מתבצע.
תחביר:
always @(sensitivity_list) begin
// הקוד מתבצע כאשר האותות ברשימה משתנים
endסוגי רשימות רגישות
| סוג | תחביר | מתי הבלוק מתבצע |
|---|---|---|
| כל האותות (צירופי) | always @(*) | כאשר אחד מהאותות שבתוכו משתנה |
| אותות מסוימים | always @(a or b) | כאשר a או b משתנה |
| הפעלה בקצה (רצפי) | always @(posedge clk) | בקצה העולה של השעון |
| כמה קצוות | always @(posedge clk or posedge reset) | בקצה השעון או בקצה האיפוס |
אפשרות 1: כל האותות (*)
האפשרות הבטוחה והנפוצה ביותר ללוגיקה קומבינטורית.
always @(*) begin
out = a & b; // מתבצע כאשר a או b משתנים
endהסימן * כולל באופן אוטומטי את כל האותות שנקראו בבלוק.
אפשרות 2: אותות ספציפיים
always @(a or b) begin
out = a & b; // מתבצע כאשר a או b משתנה
endאם תשכח אות, הפלט לא יתעדכן בסימולציה כשהאות הזה ישתנה, ולכן הסימולציה כבר לא תואמת לחומרה שסונתזה.
אפשרות 3: הפעלה בקצה (posedge)
always @(posedge clk) begin
q <= d; // מתבצע בחזית העולה של אות השעון
endהשתמשו ב־posedge עבור חזית עולה, וב־negedge עבור חזית יורדת.
אפשרות 4: קצוות מרובים
always @(posedge clk or posedge reset) begin
if (reset)
q <= 0;
else
q <= d;
endמתבצע בקצה השעון או בקצה האיפוס.
טעויות נפוצות
| טעות | למה זו טעות |
|---|---|
always @(a or b or c) אבל משתמשים ב־d | d חסר → הפלט מתיישן בסימולציה (אי־התאמה בין סימולציה לסינתזה) |
always @(posedge clk or reset) | חסר posedge עבור reset |
always @(clk) | עבור כפכפים (flip-flops), יש להשתמש ב־posedge clk |
אתגר
מה צריך לעשות:
- הוסף רשימת רגישות נכונה כדי לגרום לכפכף הזה לפעול. הבלוק צריך להתבצע בקצה העולה של
clk.
נסו בעצמכם
module flipflop (
input clk,
input d,
output reg q
);
always @(______) begin
q <= d;
end
endmoduleהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
5אופרטורים חלק 2
אופרטורים לוגייםאופרטורי צמצוםאופרטורי הזזהאופרטור שרשוראופרטור תנאיסיכום – אתגר האופרטורים3שיטת המספרים
ייצוג בינארימספרים בעלי גודל מוגדרמספרים ללא גודל מוגדרמספרים שלילייםהערכים המיוחדים X ו־Zסיכום – תבניות מספרים6מודולים
מבנה מודוליציאות קלט ופלטיציאות קלט-פלטיצירת מופע של מודולמיפוי יציאות לפי שםמיפוי יציאות לפי סדרסיכום – בניית מודול9בלוקים פרוצדורליים
בלוק Alwaysבלוק Initialרשימת רגישותהשמה חוסמתהשמה לא חוסמתסיכום — Always לעומת Initialתרגלו בעצמכם: קומפיילר Verilog אונליין