No ja w "pierwszym czytaniu" również pomyślałem o operacjach w sensie arytmetycznym. Jednak po zastanowieniu uznałem, że chodzi o operacje logiczne, ponieważ to trochę zbyt skomplikowane jak na "ćwiczebne zabawy". Dodatkowo w układzie sumy liczb 3-bitowych wyjdzie suma jako liczba 4-bitowa oraz w przypadku mnożenia liczb 3-bitowych ich iloczyn jest 6-bitowy. O takiej 'ekspansji' danych wynikowych nie było mowy w zadaniu. To, że znalazło się w treści "operacji arytmetycznych" zrzuciłem na karb 'laickiego' podejścia madmike.ZbeeGin pisze:Niestety nasze działania wzięły w łeb. Przecież zadanie nie polega na zrobieniu iloczynu Y=AxBxC i sumy Y=A+B+C tylko XYZ = ABC + A'B'C' albo XYZ = ABC x A'B'C.
Zatem w/w sumy i iloczyny trójwejściowe nie będą nam tutaj wogóle potzebne!.
No cóż, można zaproponować kilka rozwiązań.
Jedno to takie, gdzie zostanie zimplementowany równoległy sumator liczb 3-bitowych z przeniesieniami (co nie jest karkołomne), zespół mnożący liczby 3-bitowe jako kaskadowe połączenie 3 sumatorów i końcowy multiplekser.
Drugie, to potraktować całość jako typowy kombinacyjny układ, który na wejściu dostaje dane 7-bitowe (dwie liczby 3-bitowe i typ operacji). W tym przypadku trzeba by wytworzyć 6 tablic Karnaugh'a dla zmiennych 7-bitowych, co oznacza kłopoty w minimalizacji. Sprowadza się to do wypisania wszystkich możliwych kombinacji wejściowych i odpowiednich wyników (coś jak pamięć stała tylko na bramkach).
Trzecie, jako modyfikacji powyższego, czyli sumator jako pamięć stała, układ mnożący jako pamięć stała i końcowy miltiplekser. Dla sumatora będą trzy funkcje logiczne z argumentem 6-bitowym, dla mnożarki odpowiednio 6-funkcji logicznych z argumentem 6-bitowym.
Czwarty pomysł, to 'wyciąć' fragment z układu ALU (czyli patrz 74HCT181).
Piąte rozwiązanie: odpowiednio zaprogramować układ FLASH lub EPROM. Na szynę adresową EPROM podać argumenty (dane 7-bitowe), z szyny danych EPROM pobrać gotowy wynik
I na koniec zupełnie zwariowany pomysł: napisać to coś w VHDL'u (co jest proste nawet dla początkujących, bo to typowa funkcja kombinacyjna), skompilować i kazać wydrukować funkcje końcowe (będą jednocześnie już zminimalizowane)