MULTIPLEXORES Y DEMULTIPLEXORES A NIVEL SSI Y MSI. APLICACIONES
En las comunicaciones, y sistemas de computadora se ejecutan muchas operaciones mediante circuitos lógicos combinatorios. Cuando un circuito se ha diseñado para efectuar alguna tarea en una aplicación, a menudo también encuentra empleo en otras diferentes aplicaciones. En este tema se tratarán los multiplexores y demultiplexores tanto a nivel SSI como MSI y como podemos aprovechar sus funciones en el desarrollo de circuitos combinacionales. combinacionales.
es un circuito lógico que acepta varias entradas de datos y permite que sólo una de ellas pase a un tiempo a la salida. El enrutamiento de la entrada de datos hacia la salida está controlado por las entradas de selección (a las que se hace referencia a veces como las entradas de dirección). Un Multiplexor o “
El multiplexor, también conocido como actúa como un conmutador multiposicional controlado digitalmente, donde el código digital aplicado a las entradas de selección controla cuáles entradas de datos serán conmutadas hacia la salida. Por ejemplo, la salida será igual a la entrada de datos, llamémosle D para el código de entrada de selección que sea cero (ABC=000 en el diagrama de abajo); la salida será igual D para cuando el código de selección sea uno y así sucesivamente. Establecido de otra manera, un multiplexor selecciona de fuentes de datos y transmite los datos seleccionados a un solo canal de salida. Esto se llama multiplexión o multiplexaje.
Los multiplexores son rrepresentados epresentados en diagramas de bloques como trapezoides isósceles. A continuación muestro el esquemático de un multiplexor de dos entradas y una salida con su respectivo bit de selección:
ó
Un ejemplo de multiplexores (aunque no digitales como los que vemos aquí) se ve en las líneas telefónicas. Éstas usan exactamente este principio. Transmiten varias llamadas telefónicas (señales de audio) a través de un único par cableado usando la técnica de “multiplexado” y
cada señal de audio va únicamente al receptor al que está destinado. Una aplicación común para los MUX es encontrado en las computadoras, en las cuales la memoria dinámica dinámica usa las mismas líneas de dirección para el direccionamiento tanto de las filas fil as como de las columnas. Un grupo de multiplexores es usado para primero seleccionar las direcciones de la columna y luego cambiar para seleccionar la de la fila. Este esquema permite que grandes cantidades de memoria sean incorporadas dentro de una computadora mientras se limita a la vez la cantidad de conexiones de cobre requeridas para conectar la memoria al resto del circuito. Por eso es que también se les conoce a veces como “selectores de datos”.
Ya se vio el símbolo esquemático esquemático del multiplexor de 2 entradas y una salida pero los multiplexores no están limitados a 2 entradas. Si las líneas de selección son dos podemos alternar entre 4 datos de entrada, si son 3 entre 8 y así sucesivamente. A continuación continuación se muestran los
símbolos esquemáticos de los multiplexores de “4 a 1” (cuatro entradas y una salida), “8 a 1” (ocho entradas y una salida) y “16 a 1” (dieciséis
entradas y una salida) con sus respectivas líneas de selección, respectivamente.
En todos los casos la salida es Z, las entradas de selección S y el resto es la entrada que será multiplexada. A veces pueden verse en forma rectangular asemejando el circuito integrado que representan pero en este caso siempre deben ir bien identificados para poder saber que es. Por ejemplo:
representa (como se ve indicado) un multiplexor a nivel MSI de 8 entradas (que implica las 3 líneas de selección) y una salida (F). Las entradas de selección, o sea, quienes indicarán cual de las entradas será reflejada en la salida, vienen dadas por el código binario representado por ABC. ABC son las “entradas de direccionamiento” o de dirección o de
selección, como usted lo quiera llamar, ya que estas serán quienes indican el dato a acceder. Este mismo concepto es el usado en las memorias. Veamos ahora la implementación de multiplexores a nivel SSI. Para el caso de un multiplexor de 2 entradas y una salida (quien por supuesto requiere sólo una línea de selección) el circuito sería:
El uso del inversor dos veces NO es absolutamente necesario. Se observa que cuando la entrada de selección “A” tiene un valor
cualquiera, una de las compuertas AND tendrá un UNO en una de sus entradas y la otra un CERO. La que tiene el CERO dejará pasar sólo el CERO pero el que tenga el valor de UNO dejará pasar la otra entrada de la AND intacta y será este valor quien se refleje a la salida. Pueden verificar este circuito a través de su tabla de la verdad. Veámosla a continuación: A X 0 X 1 X
1 1 1 0
1 0 1 0 1 0 0 0 0 1 1 1
1
1 0 0 0 1 1 0 0 0
Se ve aquí que cuando que cuando A=0, X=X0 y cuando A=1, X=X1. Esto representa la función booleana: que es exactamente la implementación mostrada.
Veamos como se ven las implementaciones de 4 a 1 y de 16 a 1:
Analícenlos y si lo desean hagan sus tablas de la verdad. Se ve que en el diseño de multiplexores de n entradas se requerirá siempre líneas de selección (que daría un número entero si n es potencia de 2). Claro que, aunque es lo normal, el multiplexor no necesariamente debe tener 2m líneas de entrada con m entero pero en todo caso se requerirán tantas líneas de selección que hagan suficientes combinaciones para direccionar todas las entradas. Por ejemplo, para multiplexar 3ó4 entradas se requieren 2 líneas de selección. Si se requiere multiplexar
5, 6, 7 ú 8, entonces se necesitan 3 líneas de selección y así sucesivamente. El Multiplexor es típicamente usado para combinar dos o más señales digitales en una sola línea pero no es la única forma. También puede conseguirse de otras características pero aquí mencionaré sólo un par de ejemplos de multiplexores:
De dos entradas de 4 bits y una salida de 4 bits. Éste selecciona uno de los nibbles de entrada (internamente son 4 multiplexores de 2 a 1 en un solo encapsulado) y lo refleja en la salida. De dos entradas de 4 bits a una salida de dos bits que representan un bit direccionado en cada nibble reflejado a la salida (internamente son 2 multiplexores de 4 a 1).
Algunas designaciones para multiplexores de la familia TTL son: 74153 que son dos multiplexores 4 a 2, 74157 que son cuatro MUX 2 a 1 y el 74151 que es un MUX 8 a 1. Los circuitos multiplexores pueden incluir también una línea de habilitación indicado con una E por Enable, pero de eso hablaremos en el próximo tema.
Como último comentario de lo multiplexores quiero agregar que estos pueden ser organizados en cascada (tal como los sumadores que vimos en el tema anterior) para implementar multiplexores más grandes. Por ejemplo podemos usar multiplexores de 2 a 1 para implementar un multiplexor de 4 a 1 (o de 4 a 2 que si lo piensan se darán cuenta de que es elemental) o incluso para implementar multiplexores de más entradas. Veamos específicamente el ejemplo de implementación de un multiplexor de 16 a 1 usando sólo multiplexores de 4 a 1. El dato de entrada es X formado por los 16 bits x0, x1,...,x14 y x15. Las líneas de selección vienen dadas por S. con este ejemplo. Analícelo y entiéndalo.
En los multiplexores vemos también la entrada de enable E (que además son de lógica negativa que quiere decir que los IC's se activaran con un cero). Ese es el bit de habilitación que les dije veremos en el próximo tema.
Es lo inverso a un multiplexor. Los demultiplexores o DEMUX tienen una entrada que es transferida a una de las m posibles líneas de salida. La línea m vendrá direccionada por los n bits de selección donde lo normal es que 2n=m. Se podría decir que, como profundizaremos en el próximo tema, . Un uso popular del DEMUX es como decodificador y por eso suele usarse el término Demultiplexor/Decodificador indistintamente. Ya hablaremos de él en próximo tema, pero el propósito principal de un decodificador no es tanto transferir una entrada a una de las salidas sino llevar un valor binario (el de la entrada de selección) a una representación de una única línea a la salida. Esta función es de gran utilidad en la decodificación de la dirección en los microporcesadores por ejemplo cuando involucra la selección de uno de multiples dispositivos (como por ejemplo la memoria). De hecho, la mayoría de los decodificadores son de lógica invertida (o negativa) debido a que la mayoría de los dispositivos periféricos de los microprocesadores son
activados por una señal baja (como el pin E' que vimos en los multiplexores en cascada hace un par de párrafos).
Los DEMUX también suelen incluir un bit de entrada de habilitación. Algunos DEMUX de la familia TTL son: el 74139 que son dos DEMUX de 1 a 4 con salidas invertidas (lógica negada), el 74156 que son dos DEMUX de 1 a 4 con salida de colector abierto (Open Collector), el 74138 que es un DEMUX de 1 a 8 con salida invertida, el 74156 que es un DEMUX de 1 a 16 y el 74159 que es de 1 a 16 con salida a colector abierto. Veamos a continuación la implementación de demultiplexores a nivel SSI. Para el caso de un demultiplexor de 1 a 2 sería:
Se observa que el circuito tiene sólo una entrada (representada por IN), dos salidas (OUT1 y OUT0) y el bit de dirección (A). El proceso es justo el contrario del multiplexor. Para los casos de DEMUX de 1 a 4 y de 1 a 8 tenemos las siguientes implementaciones.
Si lo desean hagan sus tablas de la verdad para que les facilite entender el comportamiento de estos circuitos .
Resulta que algunas veces un circuito diseñado para cierto fin suele ser de gran utilidad en la resolución de problemas que no fueron exactamente para el que fueron diseñados. El multiplexor es una de esos ejemplos. Una poderosísima utilidad de los multiplexores está en la implementación de funciones lógicas. Vamos a estudiar algunas posibilidades de implementación de funciones lógicas mediante multiplexores. Veamos el siguiente ejemplo:
Sabemos que esta función es uno para los términos mínimos 2, 5 y 6. Esta función tiene 3 variables que pueden formar 8 combinaciones. La forma más sencilla de implementación, que es la que veremos a continuación, es a través de un multiplexor de 8 a 1. Veamos la tabla de la verdad de la función y la implementación con el multiplexor:
Dado que se trata de una función de tres variables, el método acabado de sugerir implica en principio utilizar un multiplexor de 8 canales (es decir,con 3 entradas de control). Hay que conectar las variables x2, x1 y x0 a las entradas de selección e introducir en cada uno de los canales el valor ("0" o "1") que toma la función para cada combinación de dichas variables. Observe la figura y note que el paso de una a otra es inmediato ya que el multiplexor tiene cableada las entradas 2, 5 y 6 a uno y el resto a cero. De esta forma se garantiza que para las combinaciones de las variables X (quien se colocó en las líneas de selección) para los que se requiere que la función sea uno harán f=1.
Veamos otro ejemplo. F(A,B,C)=∑(3,5,6,7). Con un multiplexor de 8
entradas se vería:
Es fácil de observar el porque de ésto, así que no lo analizaremos más. Llegados a este punto, una pregunta que podemos hacernos es si es posible implementar funciones de n variables mediante multiplexores con menos de n entradas de control. La respuesta es afirmativa, aunque para ello será necesario en general añadir algún módulo o conjunto de puertas. O lo que es lo mismo, siempre podremos implementar funciones lógicas de n variables con un multiplexor de n-1 líneas de selección. Veamos el siguiente ejemplo:
Esta función tiene 8 (2 3) posibles combinaciones de variables (3 variables) pero debemos implementarlo con un multiplexor de sólo dos (3-1) entradas de selección, o sea, un multiplexor de 4 (2 2) a 1. Llamemos a la entrada del multiplexor I (I 3 I2 I1 I0). La tabla de la verdad de la función F es:
0
0
0
0
0
0
1
1
0
1
0
0
0
1
1
1
1
0
0
0
1
0
1
1
1
1
0
1
1
1
1
0
Lo primero que debemos hacer es decidir como vamos a trabajar con las variables. En estos casos sólo n-1 de las variables de la función se usarán en las líneas de selección y la otra restante se usará a la entrada del multiplexor. Es este caso particular sólo dos de las variables pueden
ser usadas en las líneas de selección. He decidido que éstas serán B y C. Por lo tanto A será usada a la entrada del multiplexor. Ok, lo primero que haremos será formar una tabla. Ésta deberá tener todas las posibles entradas del multiplexor como títulos de las columnas y las dos posibles combinaciones de la variable que decidimos usar en la entrada (en nuestro caso A en sus formas A' [0] y A [1]) como títulos de las filas. I0
I1
I2
I3
A' A A cada celda de la tabla le corresponderá un término mínimo. Vemos que cuando A=0 (A'), los términos de la función van del 0 al 3 y cuando A=1 (A) van de 4 a 7. O sea que la tabla deberá ser llenada con: I0
I1
I2
I3
A'
m0 m1
m2
m3
A
m4 m5
m6
m7
Aquí usted podría sólo encerrar en círculos los términos mínimos que sean uno en la función (en nuestro caso m 1, m3, m5 y m7 ) para procesar la tabla. Yo sencillamente voy a encerrarla con paréntesis (únicamente por comodidad y no tener que estar haciendo más gráficos). También suele colocarse sólo el número del término en vez del m n. Entonces, colocando los “círculos” donde corr esponde tenemos: I0
I1
I2
I3
A'
0
(1)
2
(3)
A
4
(5)
(6)
7
Aquí empezamos el análisis. Cuando en una columna de la tabla no hay ningún termino en círculo como es el caso de la primera columna, concluimos que en esa entrada del multiplexor debe ir 0 (cero). Cuando en una columna AMBOS términos aparecen en círculo decimos que en
esa entrada del multiplexor debemos colocar un uno. Cuando en una columna sólo UNO de los términos aparece en círculo, decimos que en la entrada correspondiente del multiplexor se colocará la variable escogida (en nuestro caso la A) en la forma que aparezca con círculo que aquí sería A para la tercera columna y A' para la cuarta columna. Regularmente nuestra tabla, luego del análisis, quedaría: I0
I1
I2
I3
A'
0
(1)
2
(3)
A
0
(5)
(6)
7
Por lo tanto, nuestra implementación de la función F de tres variables con un multiplexor de 4 a 1 (con sólo dos líneas de selección) nos qued aría:
La entrada I1 puede ir directamente conectada a UNO (1 ó Vcc) y ahorrarnos ese inversor. Yo decidí poner B y C en las entradas de selección pero podría ir cualquier combinación de dos variables. Lo único que hay que tener en
cuenta es que la Supongamos que queremos poner A y B en las líneas de direccionamiento, entonces nuestra tabla sería: I0
I1
I2
I3
C'
0
2
4
(6)
C
(1) (3)
(5)
7
Ya que C es el bit menos significativo y para las casos donde A y B son cero con C' tenemos el cero y con C el uno, Si A=0 y B=1 entonces en C' tenemos 2 y en C tres, y así sucesivamente. Aquí ya sólo nos quedaría implementar el circuito que sería colocando A en S 1, B en S0, C en I0 e I1 e I2 y por último C' en I 3. Haga el esquemático. Por último con respecto a este mismo ejemplo, demuestre que si quisiéramos colocar B en la entrada, la tabla quedaría:
I0
I1
I2
I3
B'
0
(1)
4
(5)
B
2
(3)
(6)
7
y dibuje el esquemático.
Veamos como último ejemplo de ésto la función F(A,B,C,D)=∑(0,1,3,4,8,9,15). Suponiendo que queremos cablear A en la
entrada, nuestra tabla aquí sería:
I0
I1
I2
I3
I4
I5
I6
I7
A'
(0) (1)
2
(3) (4) 5
6
A
(8) (9)
10
11
14 (15)
12 13
7
Y el circuito sería:
Aquí también podemos eliminar el uso de uno de los inversores y cablear directo a 0 ó 1 dependiendo del caso. Haga este ejercicio para los casos con B, C ó D a la entrada del multiplexor.
Este tema será visto mejor más adelante con el uso de decodificadores pero igual será comentado brevemente aquí. Al presentar los demultiplexores se comentaba el hecho de que cada una de las salidas coincide algebraicamente con un término mínimo diferente de las variables de entrada. Por tanto es inmediato sintetizar directamente cualquier función de n variables mediante un que agrupe las salidas correspondientes a
los que aparecen en la expresión canónica como suma de productos de la función. Veamos por ejemplo la implementación de un generador de un bit de paridad impar para un código de 3 bits. Su tabla de verdad sería:
0
0
0
0
0
0
1
1
0
1
0
1
0
1
1
0
1
0
0
1
1
0
1
0
1
1
0
0
1
1
1
1
No hacemos mapa de Karnaugh ya que simplificar la función no es requerido en este tipo de ejercicios debido a que la implementación será hecha a nivel MSI y lo único que nos interesa realmente es que términos mínimos conforman la función. De la tabla de la verdad anterior podemos concluir que la implementación de esa función lógica a través de un demultiplexor sería:
La entrada E' es el bit de habilitación del IC.
1. Implemente un multiplexor de 8 bits de entrada (dos nibbles
indicando dos datos diferentes) y dos de salida (uno de cada nibble) mediante multiplexores de 2 a 1. 2.
Implemente un multiplexor con dos números binarios de 3 bits ( , , y , , ) como entrada que transmita una u otra a la salida Z ( , y ) con la ayuda de una única línea de selección usando multiplexores de 2 a 1.
3. Implemente la siguiente función con multiplexores 8 a 1 y 4 a 1:
F(A,B,C)=∑(0,1,4,7). En el caso de 4 a 1, hágalo de las tres formas
posibles (Con A, B ó C a la entrada del multiplexor). 4. Implemente las siguientes funciones con multiplexores de forma óptima (para funciones N variables use multiplexores de N-1 líneas de selección): F(A, B, C, D) = ∑(0,4,6,10,11,13) F(w, x, y, z) = ∑(3,4,5,7,11,12,14,15) F(a, b, c, d) = ∑(3,5,7,11,15) F(A, B, C, D, E) = ∑(0,1,2,8,9,11,15-19,24,25,29-31) F(A, B, C, D, E, F) = ∑(0,2,4,5,7,8,16,18,24,32,36,40,48,56)
5.
6.
7. 8.
Un número primo es aquel que sólo es divisible entre si mismo y la unidad. Diseñe un circuito lógico que detecte todos los números primos entre 0 y 31. La salida , donde es la variable de mayor peso binario, será igual a , si y sólo si, los cinco bits de la entrada representan un número primo. Realice el circuito óptimo utilizando un multiplexor. Diseñe un circuito que convierta de BCD a exceso a 3 con multiplexores. Diseñe un circuito que convierta de BCD a 84-2-1 con multiplexores. El cerebro humano está hecho de células especializadas llamadas . Cada neurona tiene (que son los puntos de conexión entre ellas ) y éstas pueden ser de excitación y de inhibición (VER NOTA ANEXA *). Una neurona produce una salida si el número de sinapsis de excitación con pulsos excede el número de sinapsis
de inhibición con pulsos por al menos, llamémosle, el valor de umbral (o sea, al menos 1) de la neurona. Dicho lo anterior, determine la función booleana f (a, b, c, d, e) de emisión de pulsos a través del canal de salida f (axón ) en el modelo de la figura de abajo y realice el circuito óptimo co n un m ult ipl ex or.
La actividad de nuestro cerebro resulta de un balance entre la excitación y la inhibición. La excitación involucra principalmente al Glutamato, que es el neurotransmisor excitatorio por excelencia mientras la inhibición es causada en su mayoría por el neurotransmisor GABA. En la Sinapsis las moléculas transmisoras actúan sobre receptores situados en la membrana postsináptica, con lo cual se altera la permeabilidad para los iones de dicha membrana. En el caso del glutamato despolariza (excitación) la membrana postsináptica por un incremento en la permeabilidad a cationes como el Na+ y Ca2+. Por el contrario, GABA
hiperpolariza la membrana postsináptica (inhibición) producto del incremento en la permeabilidad al Cl-. Al nivel neuronal, la excitación permite la propagación de la señal bioeléctrica mientras que la inhibición evita dicha propagación.