יצירת שעון
חלק מהיחידה יסודות במסלול ה-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 מחזורים מלאים), ואז נעצר.
אתגר
הוסף את הקוד החסר כדי ליצור שעון שמחליף מצב בכל 4 יחידות זמן (המחזור = 8 יחידות זמן).
מה לעשות:
- אתחל את
clkל־0 בזמן 0 באמצעות בלוקinitial - השתמש בבלוק
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השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
5אופרטורים חלק 2
אופרטורים לוגייםאופרטורי צמצוםאופרטורי הזזהאופרטור שרשוראופרטור תנאיסיכום – אתגר האופרטורים3שיטת המספרים
ייצוג בינארימספרים בעלי גודל מוגדרמספרים ללא גודל מוגדרמספרים שלילייםהערכים המיוחדים X ו־Zסיכום – תבניות מספרים6מודולים
מבנה מודוליציאות קלט ופלטיציאות קלט-פלטיצירת מופע של מודולמיפוי יציאות לפי שםמיפוי יציאות לפי סדרסיכום – בניית מודולתרגלו בעצמכם: קומפיילר Verilog אונליין