Możliwe jest użycie multipleksera 8: 1 do zaimplementowania dowolnej funkcji logicznej z 3 wejściami, ale czy możemy go użyć do implementacji funkcji 4-wejściowej? To bardzo ciekawe pytanie, szczególnie ze strony tego, jak uczymy się układów logicznych. Opisany powyżej wywód, zaczął się na forach EEWeb i związany był z jednym z artykułów dotyczących tablic Karnaugh i obliczania tabel prawdy i generacji układów logicznych.
Cały przebieg dyskusji nie jest ważny. To, co istotne, to zaprezentowana poniżej tabela prawdy dla układu logicznego.
Z tej tabeli, korzystając z minimalizacji tabelą Karnaugha, wygenerować możemy minimalne równanie Boolowskie, a z niego skonstruować układ logiczny, taki jak pokazany na poniższym schemacie.
Wydawałoby się, że tutaj dochodzimy już do końca zagadnienia. Nic błędnego, jeden z uczestników dyskusji wysłał wiadomość do autora artykułu:
Tej wiadomości towarzyszył schemat pokazany poniżej. Autor poniższego rozwiązania niech pozostanie anonimowy, ponieważ popełnił pewien drobny błąd. Omówmy poniższy układ. Spójrzmy najpierw na zaproponowany schemat:
Pamiętajmy, że jest to niepoprawny schemat (poprawiony układ znajdziemy niżej w artykule).
Spójrzmy teraz na proponowany układ - multiplekser CD4512. W karcie katalogowej tego elementu znaleźć możemy jego tabelę prawdy. Znajduje się ona poniżej. Zmieniono odrobinę tylko nazwy pinów, aby pasowały do tych na schemacie powyżej.
Mówi nam to, że CD4512 jest multiplekserem 8:1. Trzy wejścia wyboru: A, B i C są używane do wyboru jednego z ośmiu wejść danych od D0 do D7. Jakakolwiek wartość logiczna obecna była na wybranym wejściu, będzie ona przenoszona na wyjście Q. Widzimy również, że istnieją dwa dodatkowe piny sterujące. Jedyna na wejściu INH („inhibit”) wymusi wyjście równe zero. Tymczasem jedyna na /OE („włączenie wyjścia”) wyłączy wyjście układu i spowoduje jego wejście w stan wysokiej impedancji (Z).
Jeśli na razie zignorujemy sygnały INH i /OE, to możemy przedstawić funkcjonalność pozostałej części układu jako kaskadę multiplekserów 2:1, jak pokazano na poniższym schemacie:
Poświęćmy chwilę, aby powrócić do implementacji przesłanej powyżej. To, co zostało w niej zrobione, to podłączenie wejść D0 do D7 do wartości 0 i 1, odpowiadających wartości Q z naszej oryginalnej tabeli prawdy, jak pokazano poniżej:
To bardzo praktyczne i łatwe do zrozumienia rozwiązanie. Zasadniczo możemy użyć naszego multipleksera 8:1, aby zaimplementować dowolną 3-wejściową funkcję logiczną. Wszystko, co musimy zrobić, to podłączyć wejścia D0 do D7 do 0 i 1, które chcemy wyświetlić na wyjściu Q, jak pokazano w żądanej tabeli prawdy. Jedynym problemem, jak już wspomniałem wcześniej, jest to, że autor wiadomości popełnił mały błąd w swojej implementacji. Zanim przejdziemy dalej, warto poświęcić chwilę na zastanowienie się nad tym, na co zwracaliśmy uwagę do tej pory, aby sprawdzić, czy można dostrzec problem.
Pomocne może być porównanie naszej żądanej tabeli prawdy z naszego problemu do tabeli prawdy z karty katalogowej CD4512, jak pokazano poniżej:
gdzie Z to stan wysokiej impedancji, a X to dowolny stan.
Teraz błąd powinien być oczywisty i dobrze widoczny. W przypadku naszej oryginalnej tabeli zorganizowaliśmy wartości odpowiadające wejściom A, B i C jako standardową liczbę binarną, przy czym A reprezentuje najbardziej znaczący bit (MSB), a C reprezentuje najmniej znaczący bit ( LSB). Dla porównania, w przypadku tabeli prawdy CD4512, wejście A reprezentuje LSB wartości adresu podawanego do multipleksera.
Istnieją dwa sposoby rozwiązania tego problemu. Pierwszym z nich jest zamiana sposobu, w jaki sygnały A, B i C naszego obwodu są podłączone do wejść A, B i C scalonego multipleksera. Innymi słowy, obecnie mamy sygnały obwodów A, B i C połączone odpowiednio z wejściami A, B i C układu. To, co musimy zrobić, to podłączyć sygnały A, B i C naszego obwodu odpowiednio do wejść C, B i A multipleksera, jak pokazano poniżej na poprawionym schemacie:
Jest to całkiem prosta poprawka. Teraz zająć możemy się kolejną sprawą. Użytkownik forum, który postawił pierwszy problem, opublikował kolejny. Nie omówimy go szczegółowo w tym poście. Widzimy poniżej tabelę prawdy dla tego problemu oraz minimalny schemat reprezentujący równanie Boola wygenerowane dla tej tabeli.
Wcześniej zauważyliśmy, że możemy użyć multipleksera CD4512 (8:1) do realizacji dowolnej 3-wejściowej funkcji logicznej. W tym przypadku mamy jednak funkcję z czterema wejściami. Czy jest jakiś sposób, aby użyć CD4512 do realizacji powyższej funkcji? Zapraszam Forumowiczów do rozwiązania tej zagadki.
Źródło: https://www.eeweb.com/profile/max-maxfield/articles/using-81-multiplexers-to-implement-logical-functions
Cały przebieg dyskusji nie jest ważny. To, co istotne, to zaprezentowana poniżej tabela prawdy dla układu logicznego.
| A | B | C | Q | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 |
Z tej tabeli, korzystając z minimalizacji tabelą Karnaugha, wygenerować możemy minimalne równanie Boolowskie, a z niego skonstruować układ logiczny, taki jak pokazany na poniższym schemacie.
Wydawałoby się, że tutaj dochodzimy już do końca zagadnienia. Nic błędnego, jeden z uczestników dyskusji wysłał wiadomość do autora artykułu:
Cytat:Cześć Max, podobał mi się twój artykuł o bramkach logicznych. Dołączone do wiadomości jest jednochipowe rozwiązanie problemu zbiornika do trawienia PCB (powyższa tabela prawdy - przyp.red.). Będzie działać dla każdej kombinacji logicznej trzech wejść i łatwo będzie przejść od tabeli prawdy do schematu. Wykorzystuje układ CD4512, który ma trzy wejścia: A, B i C, które wybierają jedno z ośmiu wejść danych (D0 do D7) i przedstawiają stan wybranego wejścia na wyjściu Q. Wszystko, co musisz zrobić, to podłączyć osiem wejść do GND (masy ) lub VDD (zasilania), aby dopasować pozycję zer i jedynek, na wyjścia Q do tabeli prawdy.
Tej wiadomości towarzyszył schemat pokazany poniżej. Autor poniższego rozwiązania niech pozostanie anonimowy, ponieważ popełnił pewien drobny błąd. Omówmy poniższy układ. Spójrzmy najpierw na zaproponowany schemat:
Pamiętajmy, że jest to niepoprawny schemat (poprawiony układ znajdziemy niżej w artykule).
Spójrzmy teraz na proponowany układ - multiplekser CD4512. W karcie katalogowej tego elementu znaleźć możemy jego tabelę prawdy. Znajduje się ona poniżej. Zmieniono odrobinę tylko nazwy pinów, aby pasowały do tych na schemacie powyżej.
| A | B | C | INH | /OE | Q | 0 | 0 | 0 | 0 | 0 | D0 | 0 | 0 | 1 | 0 | 0 | D1 | 0 | 1 | 0 | 0 | 0 | D2 | 0 | 1 | 1 | 0 | 0 | D3 | 1 | 0 | 0 | 0 | 0 | D4 | 1 | 0 | 1 | 0 | 0 | D5 | 1 | 1 | 0 | 0 | 0 | D6 | 1 | 1 | 1 | 0 | 0 | D7 | X | X | X | 0 | 0 | 0 | X | X | X | X | 1 | Z |
Mówi nam to, że CD4512 jest multiplekserem 8:1. Trzy wejścia wyboru: A, B i C są używane do wyboru jednego z ośmiu wejść danych od D0 do D7. Jakakolwiek wartość logiczna obecna była na wybranym wejściu, będzie ona przenoszona na wyjście Q. Widzimy również, że istnieją dwa dodatkowe piny sterujące. Jedyna na wejściu INH („inhibit”) wymusi wyjście równe zero. Tymczasem jedyna na /OE („włączenie wyjścia”) wyłączy wyjście układu i spowoduje jego wejście w stan wysokiej impedancji (Z).
Jeśli na razie zignorujemy sygnały INH i /OE, to możemy przedstawić funkcjonalność pozostałej części układu jako kaskadę multiplekserów 2:1, jak pokazano na poniższym schemacie:
Poświęćmy chwilę, aby powrócić do implementacji przesłanej powyżej. To, co zostało w niej zrobione, to podłączenie wejść D0 do D7 do wartości 0 i 1, odpowiadających wartości Q z naszej oryginalnej tabeli prawdy, jak pokazano poniżej:
To bardzo praktyczne i łatwe do zrozumienia rozwiązanie. Zasadniczo możemy użyć naszego multipleksera 8:1, aby zaimplementować dowolną 3-wejściową funkcję logiczną. Wszystko, co musimy zrobić, to podłączyć wejścia D0 do D7 do 0 i 1, które chcemy wyświetlić na wyjściu Q, jak pokazano w żądanej tabeli prawdy. Jedynym problemem, jak już wspomniałem wcześniej, jest to, że autor wiadomości popełnił mały błąd w swojej implementacji. Zanim przejdziemy dalej, warto poświęcić chwilę na zastanowienie się nad tym, na co zwracaliśmy uwagę do tej pory, aby sprawdzić, czy można dostrzec problem.
Pomocne może być porównanie naszej żądanej tabeli prawdy z naszego problemu do tabeli prawdy z karty katalogowej CD4512, jak pokazano poniżej:
| Oryginalna tabelka | Tabelka dla układu CD4512 | A | B | C | Q | C | B | A | INH | /OE | Q | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | D0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | D1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | D2 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | D3 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | D4 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | D5 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | D6 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | D7 | X | X | X | 0 | 0 | 0 | X | X | X | X | 1 | Z |
gdzie Z to stan wysokiej impedancji, a X to dowolny stan.
Teraz błąd powinien być oczywisty i dobrze widoczny. W przypadku naszej oryginalnej tabeli zorganizowaliśmy wartości odpowiadające wejściom A, B i C jako standardową liczbę binarną, przy czym A reprezentuje najbardziej znaczący bit (MSB), a C reprezentuje najmniej znaczący bit ( LSB). Dla porównania, w przypadku tabeli prawdy CD4512, wejście A reprezentuje LSB wartości adresu podawanego do multipleksera.
Istnieją dwa sposoby rozwiązania tego problemu. Pierwszym z nich jest zamiana sposobu, w jaki sygnały A, B i C naszego obwodu są podłączone do wejść A, B i C scalonego multipleksera. Innymi słowy, obecnie mamy sygnały obwodów A, B i C połączone odpowiednio z wejściami A, B i C układu. To, co musimy zrobić, to podłączyć sygnały A, B i C naszego obwodu odpowiednio do wejść C, B i A multipleksera, jak pokazano poniżej na poprawionym schemacie:
Jest to całkiem prosta poprawka. Teraz zająć możemy się kolejną sprawą. Użytkownik forum, który postawił pierwszy problem, opublikował kolejny. Nie omówimy go szczegółowo w tym poście. Widzimy poniżej tabelę prawdy dla tego problemu oraz minimalny schemat reprezentujący równanie Boola wygenerowane dla tej tabeli.
| A | B | C | D | /A | /ABC | A+D | /A+D | Q | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 0 |
Wcześniej zauważyliśmy, że możemy użyć multipleksera CD4512 (8:1) do realizacji dowolnej 3-wejściowej funkcji logicznej. W tym przypadku mamy jednak funkcję z czterema wejściami. Czy jest jakiś sposób, aby użyć CD4512 do realizacji powyższej funkcji? Zapraszam Forumowiczów do rozwiązania tej zagadki.
Źródło: https://www.eeweb.com/profile/max-maxfield/articles/using-81-multiplexers-to-implement-logical-functions
