Podczas gdy wewnętrzne obliczanie wszystkich odpowiedzi, a następnie używanie multipleksera do wyboru spośród nich będzie działać, z pewnością nie jest to minimalny projekt.
Pomyśl, że możesz pokroić bit na problem; zamiast jednego bloku logiki z dwoma 8-bitowymi wejściami, możesz podzielić to na dwie 4-bitowe sekcje, o ile możesz je połączyć, aby uzyskać poprawny ogólny wynik. Na szczęście łączenie plasterków nie jest gorsze niż pojedynczy bit, który w przypadku dodania reprezentuje bit przeniesienia. Zatem każdy 4-bitowy wycinek ma bit przeniesienia i bit przeniesienia. (Zauważ, że logiki takie jak AND i NOR nawet tego nie potrzebują, chociaż jeśli później zaimplementujesz przesunięcia w lewo / w prawo, ten bit można łatwo zmienić).
Doprowadzony do skrajności, możesz użyć 8 kawałków 1-bitowych każdy. Warto pomyśleć o 1-bitowych odcinkach, ponieważ łatwiej jest pomyśleć o podejściu, które skaluje się z powrotem do większych wycinków. Tak więc z 1-bitowym wycięciem masz tylko 7 wejść: 4-bitowy kod funkcji, trochę z wejścia A, trochę z wejścia B i bit przeniesienia. Masz również tylko dwa wyjścia: funkcjonuj i przeprowadzaj. Teraz możesz napisać dwie funkcje wyjściowe w kategoriach zaledwie 7 danych wejściowych, co mieści się w zakresie ludzkiej możliwości rozsądnego ograniczenia. Skończysz z garstką bramek, które niekoniecznie zawsze obliczą wszystkie funkcje, ale nie ma znaczenia, co dzieje się w wycinku, tylko że daje prawidłowy wynik, gdy patrzysz z zewnątrz.
Teraz możesz przejść na kilka sposobów. Jednym ze sposobów jest po prostu użycie 8 z tych 1-bitowych plasterków i gotowe. Innym sposobem jest utworzenie większych plasterków, a następnie ich użycie. Przechodząc od 1-bitowego do 2-bitowego, równania zmieniają się z 7 wejść na 9, a 4 bity będą wymagały funkcji 13 wejść. Niekoniecznie jest to łatwe, ale daje bardziej kompaktowe wyniki niż podejście obliczania-wszystko-wtedy-multiplekser. Poza tym, jeśli spojrzysz na wnętrze 418-bitowego wycinka ALU 74181, nie zobaczysz w nim multipleksera.