רשימת רגישות
חלק מהיחידה יסודות במסלול ה-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) | יש להשתמש ב־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 אונליין