¿Cómo funciona un multiplexor 2-1 (MUX)?

No he hecho EE durante bastante tiempo. Necesito implementar algunos MUX, así que comencé con un MUX bidireccional. Pero no entiendo cómo tomar la decisión:

ingrese la descripción de la imagen aquí

Wiki- multiplexor

Una tabla de verdad mostrará que

Esta tabla de verdad muestra que cuando S=0 entonces Z=A pero cuando S=1 entonces Z=B .

No entiendo la lógica aquí. La expresión booleana es Z = (A y S') o (B y S)


Sea S = 0, entonces cada subexpresión se convertirá en

                z1

A = 0, S' = 1 => 0

A = 1, S' = 1 => 1

                z2

B = 0, S = 0 => 0

B = 1, S = 0 => 0

¿Puede alguien explicarme cómo llegamos a esa conclusión? ¡Muchas gracias!

Su pregunta exacta no está clara. La expresión booleana es correcta. PERO las últimas dos líneas PUEDEN ser incorrectas según lo que quiera decir con ellas, por ejemplo, Z1 y Z2 no están definidas y lo que quiere decir con ellas es incierto. Puede que le resulte útil introducir estados de "no me importa". Esencialmente, mientras que la expresión booleana es correcta, realmente tienes un estado de "no importa" cuando los controles mux relacionados no están activados.

Respuestas (5)

La mejor manera de obtener una comprensión adecuada es escribir la tabla de verdad por completo. Tienes 3 entradas (A, B, S), así que esto te dará 2 3 = 8 combinaciones:

S  A  B | S' C  D | Z
--------+---------+--
0  0  0 | 1  0  0 | 0
0  0  1 | 1  0  0 | 0
0  1  0 | 1  1  0 | 1
0  1  1 | 1  1  0 | 1
1  0  0 | 0  0  0 | 0
1  0  1 | 0  0  1 | 1
1  1  0 | 0  0  0 | 0
1  1  1 | 0  0  1 | 1

Suele ser útil agregar resultados intermedios para aclarar las cosas. Agregué un término C = ( A S ) y D = ( B S ) . Ahora debe quedar claro que Z = ( C D ) .

Un punto aún no mencionado es que en muchos casos, la expresión adecuada es Z = (A y S') o (B y S) o (A y B). El último término se usa si tanto A como B están establecidos y S cambia de cero a 1 o viceversa. En ese escenario, sin el último término, la producción podría bajar brevemente. Agregar el último término asegurará que cuando A y B estén configurados, la salida permanecerá configurada. Esto tiene al menos dos efectos útiles: (1) evitará problemas si el Mux se usa como parte de la lógica de secuenciación en un circuito. Por ejemplo, un Mux cuya salida está vinculada a una entrada hace un buen latch, pero solo si la salida no falla cuando S cambia; (2) en la lógica CMOS, dicho diseño puede reducir el consumo de energía cuando S cambia, ya que la falla momentánea resultante de un cambio en S podría causar corrientes de disparo.

Los dispositivos HCMOS estándar como el 74HC157 no parecen tener este tercer término AND, o al menos no se muestra en el diagrama lógico. También me pregunto si un sintetizador FPGA no lo optimizará.
@stevenvh: los compiladores lógicos generalmente tienen opciones para indicar si dichos términos deben mantenerse (o incluso para indicar que deben agregarse cuando no existen). Si la salida del circuito va a ser 'no importa' cada vez que S cambie, se puede omitir la puerta. En el único circuito que diseñé con un mux como pestillo, usé un pequeño retardo RC para cubrir la condición de peligro. En realidad, era un lindo circuito controlador de memoria. Un chip generó dos salidas: una de las cuales era simplemente la inversa de A12, y la otra era un pestillo que se activaba solo cuando A12 estaba bajo y A11 alto.

Sea S = 0, entonces cada subexpresión se convertirá en

                z1

A = 0, S' = 1 => 0

A = 1, S' = 1 => 1

                z2

B = 0, S = 0 => 0

B = 1, S = 0 => 0

Entonces, esto significa que cuando S = 0, independientemente de la entrada B, la salida dependerá solo de la entrada A. Si hace que S = 1, MUX seleccionará la entrada B. Lo que significa que la salida reflejará solo B. No tendrá ningún efecto. de a

Tomemos la expresión booleana principal: - Z = (A y S') o (B y S)

Cuando S = 0;

Z = (A y 1) | (B y 0)

Z = A | 0

Por lo tanto, Z = A

Cuando S = 1;

Z = (A y 0) | (B y 1)

Z = 0 | B

Por lo tanto, Z = B;

En este caso simple puedes (¿casi?) diseñar el circuito en inglés.

Dependiendo de S, desea que aparezca A o B en Z. Por lo tanto, desea un 1 en Z cuando (se selecciona A y A es uno), o cuando (se selecciona B y B es uno). En todos los demás casos, la entrada seleccionada es 0, por lo que desea un cero en la salida.

Destilando la expresión: (A es uno y A está seleccionado) o (B es uno y B está seleccionado) A está seleccionado significa: (S == 0) B está seleccionado significa: (S == 1)

hacerlo más formal: ( A ^ ~ S ) V ( B ^ S )

por lo que necesita un OR, AND de remolque y un inversor.

Un MUX es simplemente una especie de interruptor lógico. La señal S_0 (seleccionar señal) pasará la señal A si es baja (lógica 0 o 0v) y pasará la señal B si es alta (lógica 1 o +5v o cualquier voltaje que use el sistema).

Lo mismo se puede aplicar a un MUX de 4 a 1. La señal de selección actúa como un número binario que selecciona a través de qué valor de verdad de la señal entrante se pasa. Si piensas en el MUX como vertical como este:

     ________
    |4to1MUX |
    |y0      |
    |y1      |
    |y2     F|
    |y3      |
    |        |
    |_s1__s0_|

Las señales de entrada se distribuyen de menos significativas a más significativas y las entradas seleccionadas se distribuyen de más significativas a menos significativas. Cuando se aplica un "00" a las líneas seleccionadas, se selecciona y0. Cuando se aplica "01", se selecciona y1; "10", y2; "11", y3.

La otra publicación es muy útil para explicar las partes del álgebra booleana, que se encuentran al examinar la tabla de verdad como se dijo en otra parte.