¿Cómo puedo construir un multiplexor 8 x 1 a partir de dos multiplexores 4 x 1 con entradas habilitadas?

He pensado en este problema durante dos días y no puedo encontrar el truco. Sería fácil con un inversor y una puerta OR, pero me dijeron que no usara nada más que muxes y cables. Descubrí cómo construir un multiplexor 6 x 1 a partir de dos muxes 4 x 1, pero eso no es suficiente. ¿Podrías darme una pista?

esto es tarea?
¿Presumiblemente tiene que hacer una "suposición favorable" sobre la forma en que se comportan las salidas? por ejemplo, si tuviera salidas push-pull o tótem, simplemente conectándolas entre sí produce un estado indefinido. Si son de tres estados o de colector abierto, entonces se pueden unir (además, se necesita una resistencia pullup en la caja del colector abierto). | ¿Se permite una resistencia? | ¿Se especificó un tipo de multiplexor específico? | ¿Las habilitaciones son de alto nivel o de bajo nivel? (puede importar)
Sí, esto es tarea. Traté de etiquetarlo, pero la etiqueta no se ha usado antes en este sitio y no tengo suficiente representante para crearla.

Respuestas (2)

Creo que el truco es que con 2 MUX 4x1 obtienes 4 señales de selección de entrada y 2 entradas de habilitación para jugar, para un total de 6 bits de control. Solo necesita 3 bits de control para un MUX 8x1 real (4 si necesita habilitarlo). SI se vuelve un poco liberal/imaginativo con su interfaz de control a 8x1 MUX, puede definir un protocolo de control que funcione.

Sean S0, S1, E0 los bits de entrada de selección y el bit de habilitación para el primer MUX 4x1. Sean S2, S3, E1 los bits de entrada de selección y el bit de habilitación para el segundo MUX 4x1.

Las salidas de los dos MUX 4x1 deben conectarse juntas.

Cualquiera que sea la lógica que controle el MUX 8x1, debe asegurarse de que E0 = !E1 en todo momento para evitar una condición de cortocircuito. Para Input Select = 0 - 3, debe configurar E0 = 1 y E1 = 0. o Input Select = 4 - 7, debe configurar E0 = 0 y E1 = 1.

Como indicó más o menos correctamente, la lógica de control para el circuito podría implementarse de la siguiente manera:

Sean S0', S1' y S2' las entradas de selección lógica para el MUX 8x1:

  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

Claramente de esta tabla de verdad:

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

Por lo tanto, necesitará una puerta de inversor como mínimo para la lógica de control. Por lo que puedo decir, no puedes hacerlo con "solo cable".

El problema no establece si las entradas de habilitación están activas en nivel bajo o activo en nivel alto, y mucho menos que los dos multiplexores deben ser idénticos en este sentido.

Además, es razonable suponer que cuando se desactiva la entrada de habilitación, la salida mux entra en un estado de alta impedancia ("alta Z").

Por lo tanto, la solución es:

  • elija dos multiplexores 4x1 que tengan entradas de habilitación que tengan lógica opuesta: uno tiene una habilitación activa-alta y el otro una habilitación activa-baja.
  • despliegue el bit de dirección alta para ambas habilitaciones.
  • ate las salidas juntas: dado que en cualquier momento, una de las dos salidas mux es alta Z, esto es válido.

Lo contrario nos permite darnos un inversor gratis, y el alto comportamiento de salida Z nos ahorra la puerta OR.