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!!!
[QUOTE=12520797;319120]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!!![/QUOTE]
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.
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;
[QUOTE=12520397;319187]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;
Anh xem giúp em với ạ. Em xin cảm ơn anh ạ[/QUOTE]
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.
Sau 2 bài làm của 2 bạn ở trên thì mình có nhận xét là: các bạn thực sự không đi đúng các bước thực hiện mạch logic bằng các MUX (tiêu biểu chính là các bạn đã quá vội vàng rút gọn hàm F) dẫn đến việc chọn biến điều khiển và đầu vào cho các MUX không hợp lý một chút nào.
Các bạn có thể sẽ cần xem lại định lý Shannon cho biểu diễn hàm logic (chứ không phải là định lý Shannon trong lấy mẫu tín hiệu đâu nha).
bạn có thể giải thích tại sao “F = D + C = C” được không?[/QUOTE]
Theo em hiểu thì với AB =11 -> F=D+C (D or C nên em nghĩ chọn 1 trong 2 giá trị đều được), không biết đúng không ?
Có thể mọi người đang hiểu sai vấn đề thì phải, đề yêu cầu sử dụng MUX2-1, MUX4-1 để thực hiện hàm logic chứ đâu bắt phải chọn 1 trong MUX đâu nhỉ? Nếu như thế thì làm sao thiết kế mạch này được.
Đúng là D+C, thì khác với D hoặc C.
Trong bài post của thầy (#7), lúc đầu bị sai chỗ F(AB=11), thầy đã fixed lại.
Thầy chưa hiểu yêu cầu của đề lắm, có phải là chỉ được dùng Mux_2to1 và Mux_4to1 để thiết kế mạch trên (ko dùng bất kì cổng logic nào khác)???
Nếu đúng vậy, thì T/h:
F(AB=11) = C + D
[INDENT][/INDENT]= C + D(C+C’)
[INDENT][/INDENT]= C + CD + C’D
[INDENT][/INDENT]= C.1 + C’.D
Bạn sẽ dùng được Mux_2to1 để thế cho cổng OR
Nếu đề yêu cầu chỉ dùng 1 loại Mux_4to1 thì kết hợp với Mux_4to1 trước, với thêm 1 Mux_4to1 này:
F(AB=11) = C + D
[INDENT]= CD’ + CD + C’D[/INDENT]
[INDENT]= C’D’.0 + C’D.1 + CD’.1 + CD.1[/INDENT]
Nếu đề yêu cầu chỉ dùng 1 loại Mux_2to1 thì:
F = A.(BC + CD + C’D) + A’.BD
= A.(BC + D) + A’.BD (Mux_2to1 với A là tín hiệu chọn kênh)
Tiếp tục phân tích:
BC + D = BC + D.(B + B’)
[INDENT]= B(C+D) + B’D (Mux_2to1 với B là tín hiệu hiệu chọn kênh)[/INDENT]
[INDENT]= B(C.1 + C’D) + B’D (thêm 1 Mux_2to1 với C là tín hiệu chọn kênh[/INDENT]
BD = B.D + B’.0 (Mux_2to1 với B là tín hiệu chọn kênh)
Đáp án cho 3 trường hợp ở trên:
Đã Hiểu!!! đã biết sai ở đâu, và đã biết cách sửa ^_^. Thanks anh Dương! Thanks thầy Sang. (p/s: các kiểu topic như này rất hữu ích, hy vọng thầy, các anh, các bạn sẽ có thêm các bài tập, để rèn thêm “sự mắc lỗi” :v ) . Thân ái và quyết thắng =D
[QUOTE=12520797;319234]Đã Hiểu!!! đã biết sai ở đâu, và đã biết cách sửa ^_^. Thanks anh Dương! Thanks thầy Sang. (p/s: các kiểu topic như này rất hữu ích, hy vọng thầy, các anh, các bạn sẽ có thêm các bài tập, để rèn thêm “sự mắc lỗi” :v ) . Thân ái và quyết thắng =D[/QUOTE]
Những cái này các bạn học ở môn Nhập môn Mạch số rồi!
Chắc hồi đó học không kĩ! :unhappy:
[QUOTE=sangnt;319296]Những cái này các bạn học ở môn Nhập môn Mạch số rồi!
Chắc hồi đó học không kĩ! :unhappy:[/QUOTE]
dạ đúng như thầy nói, hồi đó bọn em học ko kỷ…giờ ngồi xem lại mới thấy thấm những lời thầy dạy trên lớp. Cảm ơn thầy Sang nhiều!
[QUOTE=sangnt;319227]Đúng là D+C, thì khác với D hoặc C.
Trong bài post của thầy (#7), lúc đầu bị sai chỗ F(AB=11), thầy đã fixed lại.
Thầy chưa hiểu yêu cầu của đề lắm, có phải là chỉ được dùng Mux_2to1 và Mux_4to1 để thiết kế mạch trên (ko dùng bất kì cổng logic nào khác)???
Nếu đúng vậy, thì T/h:
F(AB=11) = C + D
[INDENT][/INDENT]= C + D(C+C’)
[INDENT][/INDENT]= C + CD + C’D
[INDENT][/INDENT]= C.1 + C’.D
Bạn sẽ dùng được Mux_2to1 để thế cho cổng OR
Nếu đề yêu cầu chỉ dùng 1 loại Mux_4to1 thì kết hợp với Mux_4to1 trước, với thêm 1 Mux_4to1 này:
F(AB=11) = C + D
[INDENT]= CD’ + CD + C’D[/INDENT]
[INDENT]= C’D’.0 + C’D.1 + CD’.1 + CD.1[/INDENT]
Nếu đề yêu cầu chỉ dùng 1 loại Mux_2to1 thì:
F = A.(BC + CD + C’D) + A’.BD
= A.(BC + D) + A’.BD (Mux_2to1 với A là tín hiệu chọn kênh)
Tiếp tục phân tích:
BC + D = BC + D.(B + B’)
[INDENT]= B(C+D) + B’D (Mux_2to1 với B là tín hiệu hiệu chọn kênh)[/INDENT]
[INDENT]= B(C.1 + C’D) + B’D (thêm 1 Mux_2to1 với C là tín hiệu chọn kênh[/INDENT]
BD = B.D + B’.0 (Mux_2to1 với B là tín hiệu chọn kênh)
Đáp án cho 3 trường hợp ở trên:
[/QUOTE]
Thầy vẽ bằng phần mềm gì mà đẹp thế thầy?:adore:
Vẫn phần mềm kinh điển đã nói với các bạn: Microsoft Visio
Nếu có vẽ sơ đồ khối, thì nên dùng cái đó vẽ. Vẽ quen rồi, thì làm nhanh lắm.
Bạn cũng có thể tạo thư viện riêng cho mình.