Menu
CoddyTech

יצירת שעון

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

שעון הוא אות שמתחלף ללא הרף בין 0 ל-1 במרווחי זמן קבועים. שעונים חיוניים ללוגיקה סדרתית, כמו כפכפים ומונים.

למה ליצור שעון

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

שיטות ליצירת שעון

שיטהתיאור
always עם השהיה של #השיטה הנפוצה ביותר
לולאת foreverשיטה חלופית
לולאת repeatלמספר קבוע של מחזורים

שיטה 1: בלוק always עם השהיה

reg clk;

initial begin
  clk = 0;
end

always #5 clk = ~clk;
  • clk = 0 בזמן 0
  • כל 5 יחידות זמן, clk מתהפך
  • המחזור = 10 יחידות זמן
  • התדירות = 1/10 = 0.1 ליחידת זמן

שיטה 2: לולאה אינסופית

reg clk;

initial begin
  clk = 0;
  forever begin
    #5 clk = ~clk;
  end
end

אותה תוצאה כמו בשיטת always.

שיטה 3: חזרה למשך מספר מחזורים קבוע

reg clk;

initial begin
  clk = 0;
  repeat (10) begin
    #5 clk = ~clk;
  end
end

יוצר בדיוק 10 חזיתות שעון (5 מחזורים מלאים), ואז נעצר.

challenge icon

אתגר

הוסף את הקוד החסר כדי ליצור שעון שמחליף מצב כל 4 יחידות זמן (המחזור = 8 יחידות זמן).

מה לעשות:

  1. אתחל את clk ל-0 בזמן 0 באמצעות בלוק initial
  2. השתמש בבלוק always עם השהיה כדי להחליף את מצב clk כל 4 יחידות זמן

נסו בעצמכם

module clock_challenge;
  reg clk;
  
  // TODO: שלב 1 - הוסיפו בלוק initial כדי להגדיר clk = 0
  
  
  // TODO: שלב 2 - הוסיפו בלוק always כדי להפוך את הערך של clk בכל 4 יחידות זמן
  

  initial begin
    $monitor("Time %0t: clk = %b", $time, clk);
    #20;
    $display("Clock generated for 20 time units");
    $finish;
  end
endmodule
quiz iconבחנו את עצמכם

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

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

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