Menu
Coddy logo textTech

אוגר הזזה

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

challenge icon

אתגר

אוגר הזזה מזיז נתונים משמאל לימין בכל חזית שעון. כל סיבית עוברת למיקום הבא.

איך אוגר הזזה בן 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פלטסיבית אחתפלט של כפכף רביעי

המשימה שלך היא להשלים את המודול שלהלן.

מה לעשות:

  1. בעת reset, יש להגדיר את כל היציאות ל־0
  2. בכל חזית עולה של השעון, יש להזיז נתונים משמאל לימין:
    1. q0 מקבל את d
    2. q1 מקבל את הערך הישן של q0
    3. q2 מקבל את הערך הישן של q1
    4. q3 מקבל את הערך הישן של 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

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

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