Menu
Coddy logo textTech

תכנון מרבב 4 ל־1

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

challenge icon

אתגר

מרבב 4 ל־1

למרבב 4 ל־1 יש ארבע כניסות נתונים (in0, in1, in2, in3), שתי סיביות בחירה (sel[1:0]) ויציאה אחת (out). שתי סיביות הבחירה קובעות איזו כניסה תועבר ליציאה:

  • כאשר sel = 2'b00, היציאה היא in0
  • כאשר sel = 2'b01, היציאה היא in1
  • כאשר sel = 2'b10, היציאה היא in2
  • כאשר sel = 2'b11, היציאה היא in3

תבנו את המרבב הזה בשתי דרכים: תחילה באמצעות פקודות if-else, ולאחר מכן, בשיעור הבא, באמצעות פקודת case. שתי השיטות עובדות, אבל case לרוב נקייה יותר כשיש אפשרויות רבות.

מרבב 4 ל־1 בוחר אחת מארבע כניסות ומעביר אותה ליציאה בהתאם לאות בחירה בן 2 סיביות.

טבלת אמת

sel1sel0out
00out = in0
01out = in1
10out = in2
11out = in3

כאשר sel הוא 00, היציאה עוקבת אחר in0. כאשר sel הוא 01, היציאה עוקבת אחר in1. כאשר sel הוא 10, היציאה עוקבת אחר in2. כאשר sel הוא 11, היציאה עוקבת אחר in3.

מה לעשות:

  1. צרו מודול בשם mux4to1
  2. הוסיפו כניסה in0 (סיבית אחת)
  3. הוסיפו כניסה in1 (סיבית אחת)
  4. הוסיפו כניסה in2 (סיבית אחת)
  5. הוסיפו כניסה in3 (סיבית אחת)
  6. הוסיפו כניסה sel (2 סיביות)
  7. הוסיפו יציאה out (סיבית אחת, מסוג reg)
  8. הוסיפו בלוק always @(*)
  9. בתוכו, הוסיפו פקודת if-else שבודקת את sel:
    • אם sel == 2'b00, הגדירו out = in0
    • אחרת, אם sel == 2'b01, הגדירו out = in1
    • אחרת, אם sel == 2'b10, הגדירו out = in2
    • אחרת, הגדירו out = in3
  10. סיימו באמצעות endmodule

נסו בעצמכם

// שלב 1: צרו מודול בשם mux4to1


  // שלב 2: הוסיפו קלט in0
  
  // שלב 3: הוסיפו קלט in1
  
  // שלב 4: הוסיפו קלט in2
  
  // שלב 5: הוסיפו קלט in3
  
  // שלב 6: הוסיפו קלט sel (2 ביטים)
  
  // שלב 7: הוסיפו פלט out (מסוג reg)
  

  // שלב 8: הוסיפו בלוק always @(*)
  

    // שלב 9: הוסיפו פקודת if-else
    // אם sel == 2'b00, אז out = in0
    // אחרת, אם sel == 2'b01, אז out = in1
    // אחרת, אם sel == 2'b10, אז out = in2
    // אחרת, out = in3
    

// שלב 10: Endmodule

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

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