I can implement the functions in the picture below, but then if I implement them independently, I would have 8 outputs to the mux. Our professors wants us to reduce the ALU to only 3 or 4 outputs, I have tried but am not getting anywhere?
-
\$\begingroup\$ Please elaborate on what you tried. \$\endgroup\$– JYeltonOct 15, 2014 at 3:21
-
\$\begingroup\$ Hint: What's the difference between 6 and 7? Between 3 and 5? Between 4 and 5? \$\endgroup\$– Ignacio Vazquez-AbramsOct 15, 2014 at 3:25
-
\$\begingroup\$ the difference btw 5 & 7 is that they are opposites, diff btw 3&5 is that one is subtraction and the other is anding. 4 and 5 are oring and anding, but i don't see how to use these differences. i can only use xnor and xor because they are opposites, but the rest i can't see \$\endgroup\$– user124627Oct 15, 2014 at 4:09
-
\$\begingroup\$ Have you learned about De Morgan yet? \$\endgroup\$– Ignacio Vazquez-AbramsOct 15, 2014 at 4:28
-
1\$\begingroup\$ 4 & 5 are quite the same except that one is inverted. relating 3 and 5 in demorgan is quite confusing \$\endgroup\$– user124627Oct 15, 2014 at 5:11
1 Answer
Addition and subtraction have inverted constants \$C_{in}\$, we can be connected to \$(I_3 \vee I_4)\$. Then invert the subtracting value before passing to a full adder. ADD/SUBR/SUBS can be expressed as :
$$ (R \forall I_3) + (S \forall I_4) + (I_3 \vee I_4) $$
Using the same xor inversion method you can mearge:
AND/NOTRS : \$ (R \forall I_3) \wedge S\$
EXOR/EXNOR : \$ R \forall S \forall I_3\$
This make 4 possibilities that can be decoded using three 2-to-1 muxes.
simulate this circuit – Schematic created using CircuitLab
Hint: Gate count can be reduced further by share logic with the gates inside the fulladder.
-
\$\begingroup\$ thhankyou very much, this is very very helpful \$\endgroup\$ Oct 18, 2014 at 2:02