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