Menu
Coddy logo textTech

בלוק 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 אונליין