# How can I construct an 8 x 1 multiplexer from two 4 x 1 multiplexers with enable inputs?

I've thought about this problem for two days, and I can't figure out the trick. It would be easy with an inverter and an OR gate, but I was told not to use anything but muxes and wires. I figured out how to build a 6 x 1 multiplexer from two 4 x 1 muxes, but that's not sufficient. Can you give me a hint?

-
is this homework? –  vicatcu Oct 19 '11 at 16:00
Presumably you have to make a "favorable assumption" about the way the outputs behave? eg if you had push-pull or totem pole outputs then just connecting them together produces an undefined state. If they are tristate or open collector then they can be joined (plus need a pullup resistor in the open collector case). | Is a resistor permissible? | Was a specific multiplexer type specified? | Are the enables high level enable or low level enable ? (may matter) –  Russell McMahon Oct 19 '11 at 16:14
Yes, this is homework. I tried to tag it, but the tag hasn't been used before on this site and I don't have enough rep to create it. –  Evan Kroske Oct 19 '11 at 17:00

I think the trick is that with 2 4x1 MUXes you actually get 4 Input Select signals and 2 Enable Inputs to play with, for a total of 6 control bits. You only need 3 control bits for a real 8x1 MUX (4 if you need an enable). IF you get a bit liberal/imaginative with your control interface to 8x1 MUX you can define a control protocol that works.

Let S0, S1, E0 be the select input bits and enable bit for the first 4x1 MUX. Let S2, S3, E1 be the select input bits and enable bit for the second 4x1 MUX.

The outputs of the two 4x1 MUXes should be wired together.

Whatever logic controls the 8x1 MUX needs to ensure that E0 = !E1 at all times to avoid a short circuit condition. For Input Select = 0 - 3, it should set E0 = 1 and E1 = 0. or Input Select = 4 - 7, it should set E0 = 0 and E1 = 1.

As you more or less correctly stated, control logic for the circuit could be implemented as follows:

Let S0', S1', and S2' be the logical select inputs for the 8x1 MUX:

  INPUTS             OUTPUTS
S2' S1' S0'   S1  S0  S3  S2  E0  E1
0   0   0     0   0   0   0   1   0
0   0   1     0   1   0   1   1   0
0   1   0     1   0   1   0   1   0
0   1   1     1   1   1   1   1   0
1   0   0     0   0   0   0   0   1
1   0   1     0   1   0   1   0   1
1   1   0     1   0   1   0   0   1
1   1   1     1   1   1   1   0   1


Plainly from this truth table:

  S0 =  S2 = S0'
S1 =  S3 = S1'
E0 = !S2'
E1 =  S2'


So you will need an Inverter gate at a minimum for the control logic. As far as I can tell you can't do it with "just wire."

-