Während das interne Berechnen aller Antworten und das anschließende Auswählen eines Mux zur Auswahl unter ihnen funktioniert, handelt es sich sicherlich nicht um ein minimales Design.
Bedenken Sie, dass Sie das Problem aufteilen können. Anstelle eines einzelnen Logikblocks mit zwei 8-Bit-Eingängen können Sie diesen auch in zwei 4-Bit-Abschnitte unterteilen, sofern Sie diese verknüpfen können, um ein korrektes Gesamtergebnis zu erhalten. Glücklicherweise ist das Verknüpfen der Slices nicht schlechter als ein einzelnes Bit, das im Fall der Addition das Übertragsbit darstellt. Jeder 4-Bit-Slice hat also ein Übertragsbit und ein Übertragsbit. (Beachten Sie, dass Logiken wie AND und NOR dies nicht einmal benötigen. Wenn Sie jedoch später Links- / Rechtsverschiebungen implementieren, kann dieses Bit leicht neu verwendet werden.)
Bis zum Äußersten getragen, könnten Sie 8 Scheiben von jeweils 1 Bit verwenden. Es ist nützlich, über die 1-Bit-Slices nachzudenken, da es einfacher ist, über einen Ansatz nachzudenken, der auf größere Slices zurückskaliert. Bei einem 1-Bit-Slice haben Sie also nur 7 Eingänge: den 4-Bit-Funktionscode, ein Bit von Eingang A, ein Bit von Eingang B und ein Übertragsbit. Sie haben auch nur zwei Ausgänge: Funktion aus und ausführen. Jetzt können Sie die beiden Ausgabefunktionen in Form von nur 7 Eingaben schreiben, was im Bereich der menschlichen Fähigkeit liegt, diese angemessen zu reduzieren. Sie werden am Ende eine Handvoll Gates haben, die nicht unbedingt immer alle Funktionen berechnen, aber es spielt keine Rolle, was innerhalb des Slice passiert , nur dass es von außen betrachtet das richtige Ergebnis liefert.
Jetzt können Sie ein paar Wege gehen. Eine Möglichkeit besteht darin, einfach 8 dieser 1-Bit-Slices zu verwenden, und fertig. Eine andere Möglichkeit besteht darin, größere Scheiben zu erstellen und diese dann zu verwenden. Beim Übergang von 1-Bit zu 2-Bit gehen die Gleichungen von 7 Eingängen zu 9, und für 4-Bit sind Funktionen mit 13 Eingängen erforderlich. Es ist nicht unbedingt einfach, liefert aber kompaktere Ergebnisse als der Compute-Everything-Then-Mux-Ansatz. Wenn Sie sich die Interna eines 74181 4-Bit-ALU-Slice ansehen, sehen Sie dort keinen Mux.