Menu
CoddyTech

Thiết kế bộ ghép kênh 2 thành 1

Thuộc phần Kiến thức nền tảng trong hành trình Verilog của Coddy. Bài học 64 trên 90.

challenge icon

Thử thách

Một bộ chọn kênh (MUX) là mạch số chọn một trong nhiều đầu vào và chuyển đầu vào đó đến một đầu ra duy nhất dựa trên tín hiệu chọn. Bạn có thể hình dung nó như một bộ chọn dữ liệu. Có nhiều đầu vào và bạn chọn đầu vào nào sẽ đi đến đầu ra.

Trong dự án này, bạn sẽ tạo các bộ chọn kênh với nhiều kích thước khác nhau bằng câu lệnh if-else và case.

Bộ chọn kênh 2-to-1

Bộ chọn kênh 2-to-1 là dạng đơn giản nhất. Nó có hai đầu vào dữ liệu (in0 và in1), một đầu vào chọn (sel) và một đầu ra (out). Khi sel là 0, đầu ra nhận giá trị từ in0. Khi sel là 1, đầu ra nhận giá trị từ in1. Bạn sẽ triển khai bộ chọn này bằng câu lệnh if-else bên trong khối always @(*).

Ví dụ: Nếu in0 = 0, in1 = 1 và sel = 1, thì out = 1.

Bộ chọn kênh 2-to-1 chọn một trong hai đầu vào và chuyển đầu vào đó đến đầu ra dựa trên tín hiệu chọn.

Bảng chân trị

 

selout
0out = in0
1out = in1

Khi sel là 0, đầu ra nhận giá trị từ in0. Khi sel là 1, đầu ra nhận giá trị từ in1.

Việc cần làm:

  1. Tạo một module có tên mux2to1
  2. Thêm đầu vào in0 (1 bit)
  3. Thêm đầu vào in1 (1 bit)
  4. Thêm đầu vào sel (1 bit)
  5. Thêm đầu ra out (1 bit, kiểu reg)
  6. Thêm khối always @(*)
  7. Bên trong, thêm câu lệnh if-else:
    • Nếu sel == 0, đặt out = in0
    • Nếu không, đặt out = in1
  8. Kết thúc bằng endmodule

Tự làm thử

// Bước 1: Tạo module tên mux2to1


  // Bước 2: Thêm đầu vào in0
  
  // Bước 3: Thêm đầu vào in1
  
  // Bước 4: Thêm đầu vào sel
  
  // Bước 5: Thêm đầu ra out (kiểu reg)
  

  // Bước 6: Thêm khối lệnh always @(*)
  

    // Bước 7: Thêm câu lệnh if-else
    // Nếu sel == 0, out = in0
    // Nếu không, out = in1
    

// Bước 8: Kết thúc module

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Trình biên dịch Verilog online