Menu
CoddyTech

בלוק Always

חלק מהיחידה יסודות במסלול ה-Verilog של Coddy. שיעור 46 מתוך 90.

בלוק פרוצדורלי הוא בלוק קוד שבו פקודות מתבצעות זו אחר זו, ברצף, ממש כמו בשפות תכנות תוכנה כמו C או Python. ל-Verilog יש שני בלוקים פרוצדורליים: initial (רץ פעם אחת) ו-always (רץ ברציפות). נתחיל בבלוק always.

בלוק always פועל ברציפות. הוא חוזר על עצמו ללא הפסקה מרגע שהסימולציה מתחילה. משתמשים בו כדי לתאר חומרה שצריכה להמשיך לפעול, כגון כפכפים, מונים ולוגיקה צירופית.

תחביר בסיסי:

always @(sensitivity_list) begin
  // קוד שרץ שוב ושוב
end

ה־@(sensitivity_list) קובע לבלוק מתי להתבצע. בלעדיו (וללא השהיה כגון #5 בתוכו), הבלוק היה נכנס ללולאה אינסופית והסימולציה הייתה נתקעת.

דוגמה לבלוק always: מונה

הנה דוגמה לאופן שבו אפשר להשתמש בבלוק always כדי ליצור מונה.

module counter (
  input clk,
  output reg [3:0] count
);
  always @(posedge clk) count <= count + 1;
endmodule

איך הקוד הזה עובד

חלקמשמעות
alwaysהרץ את הקוד הזה שוב ושוב, ללא הפסקה
@(posedge clk)המתן עד שהשעון יעבור מ־0 ל־1 (קצה עולה)
count <= count + 1קח את הערך הנוכחי של count, הוסף 1 ושמור אותו בחזרה

הבלוק פועל בכל חזית עולה של השעון. בכל פעם, count גדל ב־1.

רשימת הרגישות @(posedge clk) מורה לו לפעול רק בקצוות השעון, ולא ברציפות. בלי זה, הלולאה הייתה פועלת לנצח ללא השהיה.

בלוק always עם כמה אותות

אפשר לרשום אותות מסוימים:

always @(a or b) begin
  out = a & b;
end

הפעולה הזו מתבצעת כאשר a או b משתנים.

challenge icon

אתגר

הוסף את בלוק always החסר כדי שהמודול הזה יפעל.

איך זה עובד:

  • בכל חזית עולה של השעון, out1 מתהפך (משתנה) מ־0 ל־1 או מ־1 ל־0
  • out2 עוקב אחר out1 (אותו ערך כמו out1)

מה צריך לעשות:

  1. הוסף בלוק always @(posedge clk)
  2. בתוכו, גרום ל־out1 להתהפך (השתמש ב־out1 = ~out1)
  3. הגדר את out2 כך שיהיה שווה ל־out1

נסו בעצמכם

module toggler (
  input clk,
  output reg out1,
  output reg out2
);

  initial begin
    out1 = 0;
    out2 = 0;
  end

  // TODO: הוסיפו בלוק always עם posedge clk
  // out1 מתהפך בכל מחזור שעון
  // out2 עוקב אחר out1

endmodule
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: קומפיילר Verilog אונליין