Làm thế nào để bạn thực hiện chức năng sau bằng cách sử dụng không có gì ngoài 2: 1 MUX?


8

Tôi đang gặp khó khăn trong việc hiểu cách thực hiện các hàm boolean, đặc biệt là tôi chỉ có thể sử dụng các mux 2: 1 và biến D là biến dư.

Chức năng này như sau:

F(Một,B,C,D,E)= =Σ(6,7,12,13,14,15,22,23,24,25,26,27,28,29,30,31)

Tôi đã tạo bảng chân lý và bằng cách sử dụng bản đồ Karnaugh, tôi đã thu nhỏ chức năng này:

F(Một,B,C,D,E)= =MộtB+BC+CDE¯+CDE

Tôi cũng đã quản lý để thiết kế MUX 16: 1 với A, B, C và E là bộ chọn và D là biến dư.

Tôi hiểu cách thức hoạt động của bộ ghép kênh và tôi hoàn toàn có khả năng lấy được bảng chân lý từ một triển khai hiện có nhưng tôi chỉ đơn giản là không hiểu cách lấy bảng chân lý, bản đồ Karnaugh và chức năng tối thiểu hóa và thực hiện chức năng chỉ bằng 2: 1 MUX và D là biến dư.

Tôi không nhất thiết yêu cầu trả lời thẳng, mặc dù nó sẽ rất tốt để xem. Tôi quan tâm nhiều hơn đến một lời giải thích, một thuật toán hoặc thực sự bất cứ điều gì có thể giúp tôi tự mình thực hiện.

Tôi muốn có thể hình dung được mối liên hệ giữa chức năng và việc thực hiện, không chỉ học cách thực hiện nó bằng trái tim mà không hiểu tại sao nó lại như vậy.

Cảm ơn bạn đã dành thời gian!

Chỉnh sửa: Mặc dù tôi hiểu câu trả lời được chấp nhận và đó là câu trả lời đúng, nhưng sau đó tôi được yêu cầu chỉ sử dụng các đầu vào sau cho các dòng dữ liệu của các mux 2: 1 của tôi: logic 0, logic 1 và biến D. Các biến A, B, C chỉ nên được sử dụng làm dòng chọn.

Tôi đã tạo Bản đồ VK cho F (A, B, C, D) = AB + BC + CD và sau đó tôi đã sử dụng bản đồ đó để lấy bản đồ VK cho F (A, B, C) như có thể nhìn thấy bên dưới.

nhập mô tả hình ảnh ở đây Chỉnh sửa: đối với bản đồ bên phải, giá trị của ABC = 000 phải là 0, không phải là 1. Một lỗi tôi đã mắc phải khi sao chép bảng từ sổ ghi chép của mình vào excel.

Sau đó tôi đã tạo ra cách thực hiện mux sau:

nhập mô tả hình ảnh ở đây

Thiết kế mux được lấy từ một cuốn sách điện tử. Việc thực hiện, mặc dù không hiệu quả khủng khiếp, hoạt động. Tôi đã tính toán đầu ra của các mux bằng công thức M (X, Y, Z) = XZ '+ YZ và đầu ra của mux ngoài cùng bên phải là:

MBạnX7= =MộtBC¯+DB¯C+BC

Sử dụng một bản đồ Karnaugh khác, ở trên đơn giản hóa thành AB + BC + CD, đây là chức năng tôi cần để thực hiện.

Bản thân thiết kế của MUXes được mượn từ một cuốn sách điện tử. Trong cuốn sách, các đầu vào dữ liệu của cấp MUX ngoài cùng bên trái đã được đánh số như có thể thấy trong sơ đồ của tôi và các nhãn biểu thị tương đương thập phân của các ô bản đồ VK F (A, B, C). Ví dụ, nếu bạn nhìn vào ô 101 (nhị phân cho 5) thì giá trị trong ô đó là đầu vào cho đầu vào MUX được gắn nhãn tương ứng trong triển khai, trong trường hợp này là 'D'.

Bất cứ ai cũng có thể kêu gọi tại sao các dòng đầu vào dữ liệu được dán nhãn theo thứ tự cụ thể đó (0, 4, 2, 6, 1, 5, 3, 7)?


không F (A, B, C, D, E) giảm xuống A (B + C) + CD?
Tony Stewart Sunnyskyguy EE75

cho A = msb, F = 00110 + 00111 + 011xx + 10110 đến 11111 đây là cách bạn bắt đầu?
Tony Stewart Sunnyskyguy EE75

Cảm ơn đã dành thời gian để đọc câu hỏi của tôi. Nó rất có thể giảm đến đó. Tôi đã không sử dụng bất kỳ đại số nào để giảm thiểu chức năng, chỉ là bản đồ Karnaugh. Trong mọi trường hợp, chức năng tự nó không liên quan như mục tiêu cuối cùng của câu hỏi. Về mặt kỹ thuật, tôi quan tâm đến việc thực hiện chính nó bất kể chức năng trông như thế nào.
dùng1969903

Nó giảm xuống F = AB + BC + C D.
jonk

Câu trả lời:


8

Nó không quá phức tạp, tôi nghĩ, giả sử bạn đã thực hiện đúng phương trình mà bạn muốn (tôi sẽ cho rằng bạn đã làm tốt ở đó.) Bắt đầu bằng cách xem phương trình cho MUX 2 trong:

M2(Một,B,S)= =MộtS¯+BS

Từ đó, bạn có thể rút ra một số kết quả hữu ích:

M2(0,x,y)= =xyM2(x,0,y)= =xy¯M2(x,y,0)= =xM2(1,x,y)= =x+y¯M2(x,1,y)= =x+yM2(x,y,1)= =yM2(x,y,x)= =xyM2(x,y,y)= =x+yM2(0,0,x)= =0M2(0,1,x)= =xM2(1,0,x)= =x¯M2(1,1,x)= =1

Vì vậy, nó theo sau:

F= =MộtB+BC+CDx= =MộtB= =M2(Một,B,Một)y= =BC= =M2(B,C,B)z= =CD= =M2(C,D,C)F= =x+y+zF= =M2(M2(x,y,y),z,z)

Nói tóm lại, bạn sẽ cần (5) mux 2-in:

sơ đồ

mô phỏng mạch này - Sơ đồ được tạo bằng CircuitLab

Có một đối xứng đẹp ở đó. Có để ý không?

THÊM: Bạn đã hỏi về việc chỉ có thể sử dụng 0, 1 hoặc D làm nguồn nhập dữ liệu mux. Tôi giả sử rằng bạn có nghĩa là tất cả A, B, C và D có thể được sử dụng làm bộ chọn mux. (Mặt khác, tôi không nghĩ rằng kết quả có thể đạt được.) Vì vậy, điều này chỉ có nghĩa là bạn cần sử dụng một số kết quả hữu ích khác mà tôi đã đề cập trước đó. Ý tưởng đơn giản nhất là chỉ cần thêm ba mux 2-in nữa:

sơ đồ

mô phỏng mạch này

Tôi không chắc có cách nào để tối ưu hóa nó hơn nữa không. Tôi đã không kiểm tra tất cả các khả năng.

EDIT LẠI: Có! Sử dụng giải pháp mới được thêm vào của OP, hai phần sau đây sẽ chảy ra. Người bên trái trả lời phần đầu tiên của câu hỏi, người bên phải trả lời phần thứ hai.

sơ đồ

mô phỏng mạch này

022= =0122= =4021= =0121= =2020= =0120= =1

Vì vậy, bây giờ họ bắt đầu với tầng thứ nhất (trái), đặt ra (4) mux được điều khiển bởi (A) và duy trì sự thuận tiện về mặt tinh thần bằng cách đánh số các mux đó là ABC = "x00", ABC = "x01", ABC = "x10" và cho đáy ABC = "x11".

Bây giờ, vì đối với đầu trang, ABC = "x00", điều này có nghĩa là nó chấp nhận "000" = 0 hoặc "100" = 4. Vì vậy, đối với đầu vào "0" của mux đó (mux1), họ đã xem xét bảng cho ABC = "000" = 0 và đặt mục nhập bảng vào đầu vào bên "0" của nó. Đối với đầu vào "1" của mux đó, họ đã xem xét bảng cho ABC = "100" = 4 và đặt mục nhập bảng đó vào đầu vào bên "1" của nó. (Bảng đó có vẻ sai ở đây, vì chúng phải là 0 trong ô đó, được xác nhận bằng cách xem các cột được mở rộng trước đó.)

Mux tiếp theo xuống (mux2) là cho ABC = "x10" và do đó được sử dụng ABC = "010" = 2 và ABC = "110" = 6; mux tiếp theo xuống (mux3) là cho ABC = "x01" và do đó được sử dụng ABC = "001" = 1 và ABC = "101" = 5; và cuối cùng mux cuối cùng (mux4) là cho ABC = "x11" và do đó sử dụng ABC = "011" = 3 và ABC = "111" = 7.

Cả mux1 (ABC = "x00") và mux2 (ABC = "x10") đều được cung cấp cho mux5. Bạn có thể thấy ở đây B là biến thể giữa các số này, 0 hoặc 1, vì vậy đó là cách họ nối chúng ở đây. Đầu ra của mux5 sẽ là ABC = "xy0", trong đó hai bit đầu tiên đã được giải mã và tất cả những gì còn lại là để giải mã tình huống C = 0. Vì vậy, đầu ra của mux5 đi đến đầu vào "0" của mux7. Tương tự, mux3 (ABC = "x01") và mux4 (ABC = "x11") được cung cấp chung cho mux6. B lại là biến thể mà mux6 chọn giữa. Đầu ra của mux6 luôn liên quan đến trường hợp C = 1 và được đưa vào đầu vào "1" của mux7.

Tất cả những gì còn lại là để mux7 chọn giữa C = 0 và C = 1.


Tôi thừa nhận tôi chưa bao giờ nghĩ đến việc sử dụng các công thức cho mux để hướng dẫn tôi. Tôi có thể là một chút không biết gì vào những lúc tôi cho là.
dùng1969903

@ user1969903: Đó chỉ là vấn đề để cho tâm trí của bạn lang thang, một chút. Đừng loay hoay. Chỉ cần ngồi lại và chơi xung quanh. Bạn có thể tìm thấy một cái gì đó thú vị. Khám phá bản thân nó là hầu hết các niềm vui. Tất nhiên, đó là lý do tại sao tôi ở đây và trả lời. Tôi cũng học được điều gì đó từ vấn đề của bạn và tôi rất thích cảm giác từ việc chơi đùa với nó. Chỉ cần học cách đi với điều đó, chính mình. Hãy nghĩ về nó như một câu đố bạn muốn giải. (Nếu bạn không tham gia vào các câu đố, bạn có thể ở sai khu vực.)
jonk

Sau khi nghiên cứu câu trả lời của bạn, tôi đã dành thời gian để rút ra công thức cho AND và OR với một mux và tự mình thực hiện chức năng này. Tôi rất vui khi thấy nó giống hệt như những gì bạn đã đăng nhưng lật ngược lại (Tôi đã kết nối 2 đầu vào cuối cùng theo cách khác, nhưng nó vẫn đúng). Nếu bạn muốn chơi với nó xa hơn một chút, bây giờ tôi bắt buộc phải thực hiện lại chức năng chỉ với mux 2: 1 nhưng lần này tôi không được phép sử dụng A, B, C hoặc E làm đầu vào cho bất kỳ dòng dữ liệu nào cho bất kỳ dòng dữ liệu nào của các mux. Các đầu vào dữ liệu duy nhất tôi có thể sử dụng là logic 0, logic 1 và D.
user1969903

@ user1969903: Có lẽ nên thêm câu hỏi đó vào câu hỏi hiện tại của bạn (để câu trả lời từ tôi sẽ có ý nghĩa hơn) hoặc nếu không sẽ tạo một câu hỏi mới. Hiện tại, tôi sẽ thêm một vài điều kiện M () nữa, điều này sẽ không gây hại.
jonk

Thực tế tôi đã tìm ra nó nhưng tôi không chắc làm thế nào tôi sẽ chia sẻ nó ở đây. Ngày mai, sau khi tôi hoàn thành công việc, tôi sẽ chỉnh sửa câu hỏi ban đầu và tôi sẽ thêm phiên bản thực hiện của mình cho mọi người xem và cũng để sửa nếu nó sai.
dùng1969903

3

Một mux 2: 1 chứa một biến tần, hai cổng AND và cổng OR. Với hệ thống dây thích hợp, bạn có thể sử dụng nó như một cổng AND, cổng OR, biến tần và một vài chức năng khác. Trong thực tế, một số họ của các GPU hoàn toàn dựa trên khái niệm này.

Điều này là đủ gợi ý để cho phép bạn nhận ra bất kỳ chức năng tùy ý nào bằng cách sử dụng các mux 2: 1.


2

Một bộ ghép kênh hai đầu vào có ba đầu vào (a, b và select). Xem xét những gì nó thoái hóa khi bạn chọn bất kỳ hai trong số chúng, và nối dây còn lại thành "0" hoặc "1". Xem xét những gì xảy ra khi bạn chọn bất kỳ hai trong số họ, và nối thứ ba với một trong hai. Về cơ bản, có một loạt các cách để suy biến ba không gian đầu vào thành hai không gian đầu vào.

Không cần làm bất cứ điều gì quá hấp dẫn, bạn chỉ cần nhận ra rằng bộ ghép kênh cho phép bạn đặt giá trị đầu ra một cách rõ ràng cho các hàng của bảng chân lý tương ứng với các đầu vào chọn được giải mã. Vì vậy, với bộ ghép kênh bốn đầu vào (và do đó là hai bit chọn), bạn có thể biểu diễn bất kỳ 2 hàm boolean đầu vào nào bằng cách đơn giản nối cứng các đầu vào một cách thích hợp.

Hơn nữa, rõ ràng là bạn có thể tạo một bộ ghép kênh 4: 1 từ ba bộ ghép kênh 2: 1, bộ ghép kênh 8: 1 từ bảy bộ ghép kênh 2: 1, và thứ tư, bằng cách tạo một cấu trúc liên kết cây và nối dây một cách thích hợp. Chỉ cần đặt đủ bộ ghép kênh 2: 1 để có được số lượng đầu vào bạn cần, sau đó chuyển các đầu ra, theo cặp, vào bộ ghép kênh 2: 1 xuôi dòng cho đến khi bạn nhận được một đầu ra duy nhất và suy nghĩ về cách nối dây các đầu vào được chọn.

Bạn có thể thoát khỏi một biến ẩn bởi vì bạn chỉ có 16 minterms mặc dù bạn có một bảng chân lý 32 hàng và chúng được nhóm theo cách mà toàn bộ cây con là không thể biết được.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.