אוגר הזזה
חלק מהיחידה יסודות במסלול ה-Verilog של Coddy. שיעור 86 מתוך 90.
אתגר
אוגר הזזה מזיז נתונים משמאל לימין בכל חזית שעון. כל סיבית עוברת למיקום הבא.
איך אוגר הזזה בן 4 סיביות פועל
Initial: q0=0, q1=0, q2=0, q3=0
Each clock: q0 = d, q1 = old q0, q2 = old q1, q3 = old q2
Shifting in d = 1, 0, 1, 0:
Clock 1 (d=1): q0=1, q1=0, q2=0, q3=0
Clock 2 (d=0): q0=0, q1=1, q2=0, q3=0
Clock 3 (d=1): q0=1, q1=0, q2=1, q3=0
Clock 4 (d=0): q0=0, q1=1, q2=0, q3=1לאחר 4 מחזורי שעון, סיבית הקלט הראשונה מגיעה אל q3.
ממשק המודול
| יציאה | כיוון | רוחב | תיאור |
|---|---|---|---|
clk | קלט | סיבית אחת | אות שעון |
reset | קלט | סיבית אחת | איפוס כל היציאות ל־0 |
d | קלט | סיבית אחת | קלט נתונים |
q0 | פלט | סיבית אחת | פלט של כפכף ראשון |
q1 | פלט | סיבית אחת | פלט של כפכף שני |
q2 | פלט | סיבית אחת | פלט של כפכף שלישי |
q3 | פלט | סיבית אחת | פלט של כפכף רביעי |
המשימה שלך היא להשלים את המודול שלהלן.
מה לעשות:
- בעת
reset, יש להגדיר את כל היציאות ל־0 - בכל חזית עולה של השעון, יש להזיז נתונים משמאל לימין:
q0מקבל אתdq1מקבל את הערך הישן שלq0q2מקבל את הערך הישן שלq1q3מקבל את הערך הישן שלq2
נסו בעצמכם
module shift_register (
input clk,
input reset,
input d,
output reg q0,
output reg q1,
output reg q2,
output reg q3
);
// TODO: הוסף always @(posedge clk or posedge reset)
// בעת reset: q0<=0, q1<=0, q2<=0, q3<=0
// אחרת: הסט את הנתונים: q0 <= d, q1 <= q0, q2 <= q1, q3 <= q2
endmodule
כל השיעורים ביחידה יסודות
5אופרטורים חלק 2
אופרטורים לוגייםאופרטורי צמצוםאופרטורי הזזהאופרטור שרשוראופרטור תנאיסיכום – אתגר האופרטורים3שיטת המספרים
ייצוג בינארימספרים בעלי גודל מוגדרמספרים ללא גודל מוגדרמספרים שלילייםהערכים המיוחדים X ו־Zסיכום – תבניות מספרים6מודולים
מבנה מודוליציאות קלט ופלטיציאות קלט-פלטיצירת מופע של מודולמיפוי יציאות לפי שםמיפוי יציאות לפי סדרסיכום – בניית מודולתרגלו בעצמכם: קומפיילר Verilog אונליין