Announcement

Collapse
No announcement yet.

[Thử tài thiết kế số] Thực hiện hàm logic bằng MUX

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 11520537
    replied
    Originally posted by 12520397 View Post
    Em chào anh.
    Em giải như vầy anh xem có được không ạ. Bài của e dùng 1 MUX_4to1 và 2 MUX_2to1, hơi tốn ^^
    Biểu thức rút gọn: F = ABC + (A + B)D
    code verilog cho bài:

    module f (A, B, C, D, F);
    input A, B, C, D;
    output F;

    wire ABC, AorB;

    Mux_4to1 (.s00(0), .s01(0), .s10(0), .s11(B), .s({A,C}), .f(ABC)); //Bieu thuc tinh ABC
    Mux_2to1 (.s0(B), .s1(1), .s(A), .f(AorB)); //Bieu thuc tinh A + B
    Mux_2to1 (.s0(ABC), .s1(AorB), .s(D), .f(F)); //Bieu thuc tinh F

    endmodule

    Anh xem giúp em với ạ. Em xin cảm ơn anh ạ
    Chào bạn Thành,

    Bài làm của bạn tiếp tục mắc phải lỗi như của bạn Đạo trước đó. Trong bài của bạn, Mux_2to1 dùng để tính F bị sai. Khi D = 0 thì đúng là F = ABC, nhưng khi D=1 thì sao? Liệu F = A + B theo cách của bạn hay không? Mình nghĩ là F = ABC + (A + B) thì đúng hơn.

    Bạn kiểm tra lại và sửa lại lỗi mà mình vừa nêu nha.

    Chúc bạn học tốt!

    Trần Đại Dương.

    P/S: Mình không chú tâm đến code bạn viết có đúng hay không vì mình quên hết cú pháp Verilog HDL rồi, mình chỉ quan tâm đến ý tưởng bạn thực hiện thôi.

    Leave a comment:


  • 12520397
    replied
    Em chào anh.
    Em giải như vầy anh xem có được không ạ. Bài của e dùng 1 MUX_4to1 và 2 MUX_2to1, hơi tốn ^^
    Biểu thức rút gọn: F = ABC + (A + B)D
    code verilog cho bài:

    module f (A, B, C, D, F);
    input A, B, C, D;
    output F;

    wire ABC, AorB;

    Mux_4to1 (.s00(0), .s01(0), .s10(0), .s11(B), .s({A,C}), .f(ABC)); //Bieu thuc tinh ABC
    Mux_2to1 (.s0(B), .s1(1), .s(A), .f(AorB)); //Bieu thuc tinh A + B
    Mux_2to1 (.s0(ABC), .s1(AorB), .s(D), .f(F)); //Bieu thuc tinh F

    endmodule

    Anh xem giúp em với ạ. Em xin cảm ơn anh ạ

    Leave a comment:


  • 11520537
    replied
    Originally posted by 12520797 View Post
    biểu thức được rút gọn bằng bìa karnaugh thành: F=ABC+D(A+B)
    code verilog như sau:
    module f(A,B,C,D,F);
    input A,B,C,D;
    output F;
    MUX_4to1 a0(.out(F),
    .s({A,B}),
    .s11(C),
    .s01(D),
    .s10(D),
    .s00(0));
    endmodule
    P/S: e mới thi rớt môn HDL, môn sinh mới, mong a nương tay cho xin ít gạch (kinh nghiệm) để về tu luyện =D , thanks a!!!
    Chào bạn Đạo,
    Ý tưởng của bạn chính là dùng A và B làm 2 biến điều khiển, việc còn lại là gán 4 đầu vào của MUX4-1 cho C, D và 0 hoặc 1.
    Mình hoàn toàn đồng ý với ý tưởng của bạn, nhưng bạn đã không thực hiện theo "design flow" và bạn đã sa vào bẫy. Theo nhận định của mình thì bạn đã quá nóng vội khi rút gọn hàm F và dẫn đến việc ngộ nhận ở trường hợp A và B đều bằng 1 (các trường hợp còn lại bạn đã nhận định đúng). Bạn nghiệm lại xem, nếu A và B đều bằng 1 thì F = C + D có phải không?
    Bạn xem lại và sửa lại lỗi mà mình vừa nêu nha.

    Một điều khuyến cáo bạn và các bạn khác là khi thiết kế mạch, các bạn nên đi theo từng bước, không bên đốt cháy giai đoạn, tránh bị ngộ nhận.

    Chúc bạn học tốt!
    Trần Đại Dương.

    Leave a comment:


  • 12520797
    replied
    biểu thức được rút gọn bằng bìa karnaugh thành: F=ABC+D(A+B)
    code verilog như sau:
    module f(A,B,C,D,F);
    input A,B,C,D;
    output F;
    MUX_4to1 a0(.out(F),
    .s({A,B}),
    .s11(C),
    .s01(D),
    .s10(D),
    .s00(0));
    endmodule
    P/S: e mới thi rớt môn HDL, môn sinh mới, mong a nương tay cho xin ít gạch (kinh nghiệm) để về tu luyện =D , thanks a!!!

    Leave a comment:


  • [Thử tài thiết kế số] Thực hiện hàm logic bằng MUX

    Chào các bạn,

    Sáng nay có một bạn hỏi mình về việc thực hiện hàm logic bằng MUX, nên mình cũng muốn up lên đây cho các bạn thảo luận và làm xem sao.

    Đề: Chỉ sử dụng MUX2-1, MUX4-1 thiết kế hàm logic 4 biến sau:
    func.PNG

    Chúc các bạn học tốt!

    P/S: Mấy thầy dạy Mạch số ưa thích cái này lắm, đặc biệt là thầy Sang.

LHQC

Collapse
Working...
X