Subido por Marcelo Quispe

MUX DEMUX

Anuncio
Oscar Ignacio Botero Henao.
CIRCUITOS MULTIPLEXORES Y DEMULTIPLEXORES
MULTIPLEXOR (MUX)
Un Multiplexor (MUX) es un circuito combinacional al que entran varios canales de
datos, y sólo salen los datos del que hayamos seleccionado. Es decir, que es un
circuito que nos permite SELECCIONAR que datos pasan a través de dicho
componente. Es la versión Electrónica de un conmutador rotatorio o llave
selectora.
Supongamos, que hay dos tuberías (canales de datos) por el que circulan distintos
fluidos (datos). Una tubería transporta agua para regar y la otra agua potable.
Estas tuberías llegan a una finca, en la cual hay una sola manguera por la que va
a salir el agua (la potable o la para regar), según lo que se seleccione en la llave
de paso, la posición “0” es para el agua potable y “1” para regar.
Con este ejemplo es muy fácil entender la idea de multiplexor. Es como una llave
de paso, que sólo conecta uno de los canales de datos de entrada con el canal de
datos de salida.
Los Mux están compuestos por Entrada de Datos (las
tuberías), Selector de Datos (llave de paso) y la única
Salida.
I0
I1
I2
I3
MUX
O
S1 S0
Ambos MUX tienen 4 canales de entrada de datos y para ello se necesitan 2 bit de
Selector de datos (22 = 4, para poder seleccionar los 4 canales posibles). Sin
Oscar Ignacio Botero Henao 2
Mux – Demux
embargo, el del lado izquierdo tiene 2 bit de entrada por canal y 2 bit de salida, el
de la derecha tiene 1 bit de entrada por cada canal y un bit de salida.
Mux con 1 Entrada de Selección
Permite seleccionar entre dos datos de entrada (S=0 y
S=1)
Construyamos la tabla de verdad:
Son 3 entradas (I0, I1, S), 23 = 8 combinaciones
Si S = “0” entonces F = I0
Si S = “1” entonces F = I1
S
0
0
0
0
1
1
1
1
I1
0
0
1
1
0
0
1
1
I0
0
1
0
1
0
1
0
1
F
0
1
0
1
0
0
1
1
S = 0 → F = I0
S = 1 → F = I1
Por mapas de Karnaugh:
I1 S
I0
0
1
00 01 11 10
1
1
1 1
𝐹 = (𝑆̅ × 𝐼0 ) + (𝑆 × 𝐼1 )
Reemplazando en la Función:
Si 𝑆 = 0 → 𝐹 = (1 × 𝐼0 ) + (0 × 𝐼1 ) ∴ 𝐹 = 𝐼0
Si 𝑆 = 1 → 𝐹 = (0 × 𝐼0 ) + (1 × 𝐼1 ) ∴ 𝐹 = 𝐼1
La salida toma el valor de una de las entradas, depende del valor que tome la
entrada de selección.
La función F que describe el comportamiento de un multiplexor con una
entrada de selección, está descrita en la siguiente tabla:
Oscar Ignacio Botero Henao 3
Mux – Demux
Mux con 2 Entradas de Selección
Como tiene 2 entradas de selección tiene 4 posibles entradas de datos (2 2 = 4).
En total son 6 entradas, realizar la tabla es algo dispendioso ya que 2 6 = 64
posibles combinaciones y el mapa de Karnaugh sería de 6 variables, una forma
más simple de describir este MUX sería mediante la siguiente tabla:
La salida del MUX valdrá I0, I1, I2, o I3 según el valor de las variables de entrada S0
y S1.
𝐹 = (𝑆̅1 × 𝑆̅0 × 𝐼0 ) + (𝑆̅1 × 𝑆0 × 𝐼1 ) + (𝑆1 × 𝑆̅0 × 𝐼2 ) + (𝑆1 × 𝑆0 × 𝐼3 )
Verifiquemos, si S1 = 0 y S0 = 0:
𝐹
𝐹
𝐹
𝐹
= (𝑆̅1 × 𝑆̅0 × 𝐼0 ) + (𝑆̅1 × 𝑆0 × 𝐼1 ) + (𝑆1 × 𝑆̅0 × 𝐼2 ) + (𝑆1 × 𝑆0 × 𝐼3 )
= (0̅ × 0̅ × 𝐼0 ) + (0̅ × 0 × 𝐼1 ) + (0 × 0̅ × 𝐼2 ) + (0 × 0 × 𝐼3 )
= (1 × 1 × 𝐼0 ) + (1 × 0 × 𝐼1 ) + (0 × 1 × 𝐼2 ) + (0 × 0 × 𝐼3 )
= 𝐼0
Mux con 3 Entradas de Selección
Como tiene 3 entradas de selección tiene 8 posibles entradas de
datos (23 = 8). En total son 11 entradas, la tabla sería 211 = 2048
combinaciones posibles; entonces la forma simple de describir
este MUX sería:
𝐹 = (𝑆̅2 × 𝑆̅1 × 𝑆̅0 × 𝐼0 ) + (𝑆̅2 × 𝑆̅1 × 𝑆0 × 𝐼1 ) + (𝑆̅2 × 𝑆1 × 𝑆̅0 × 𝐼2 ) +
(𝑆̅2 × 𝑆1 × 𝑆0 × 𝐼3 ) + (𝑆2 × 𝑆̅1 × 𝑆̅0 × 𝐼4 ) + (𝑆2 × 𝑆̅1 × 𝑆0 × 𝐼5 ) +
(𝑆2 × 𝑆1 × 𝑆̅0 × 𝐼6 ) + (𝑆2 × 𝑆1 × 𝑆0 × 𝐼7 )
S2
0
0
0
0
1
1
1
1
S1
0
0
1
1
0
0
1
1
S0
0
1
0
1
0
1
0
1
F
I0
I1
I2
I3
I4
I5
I6
I7
Oscar Ignacio Botero Henao 4
Mux – Demux
Mux con Entrada de Validación
Los Mux pueden disponer de una entrada adicional llamada de Validación (Enable
= E). Esta entrada funciona como un interruptor. Si E = “1”, el circuito funcionará
normalmente; pero si E = “0” el circuito sacará el valor ’0’ por todas sus salidas,
independiente de lo que llegue por sus entradas, se dice que está deshabilitado.
Las entradas de validación pueden ser de dos tipos: activas en nivel alto o activas
en nivel bajo.
Entrada de validación activa en alto
Si E=1 el multiplexor funciona normalmente, si E=0 entonces su salida será ’0’
(estará desconectado).
Resumiendo la tabla queda:
Las “x” indica que cuando E=0, independiente de los valores que tengan las
entradas S0 y S1 la salida siempre será “0”.
Y la ecuación es:
𝑍 = [(𝑆̅1 × 𝑆̅0 × 𝐼0 ) + (𝑆̅1 × 𝑆0 × 𝐼1 ) + (𝑆1 × 𝑆̅0 × 𝐼2 ) + (𝑆1 × 𝑆0 × 𝐼3 )] × 𝐸
Entrada de validación activa en bajo
Si E=0 el multiplexor funciona normalmente, si E=1 entonces su salida será ’0’
(estará desconectado).
Oscar Ignacio Botero Henao 5
Mux – Demux
Y la ecuación es:
𝑍 = [(𝑆̅1 × 𝑆̅0 × 𝐼0 ) + (𝑆̅1 × 𝑆0 × 𝐼1 ) + (𝑆1 × 𝑆̅0 × 𝐼2 ) + (𝑆1 × 𝑆0 × 𝐼3 )] × 𝐸̅
Extensión de Multiplexores
Es poder obtener multiplexores más grandes a partir de otros más pequeños. La
extensión puede ser aumentando el número de entradas o aumentando el número
de bits por cada canal de datos.
Aumento del número de Entradas
Necesitamos un multiplexor de 8 canales, pero sólo disponemos de varios Mux de
2 canales:
La solución es conectarlos en cascada. Primero colocamos una columna de 4
multiplexores de dos entradas, para tener en total 8 entradas. Todas las entradas
de selección de esta primera columna se unen (la representamos mediante una
línea vertical que une la salida S de un multiplexor con el de abajo).
A continuación colocamos una segunda columna de 2 multiplexores de 2 entradas,
también con sus entradas de selección unidas. Finalmente colocamos una última
columna con un único multiplexor de 2 entradas.
Oscar Ignacio Botero Henao 6
Mux – Demux
La entrada de selección de los multiplexores de la primera columna tiene un peso
de 0, la segunda un peso de 1 y la última un peso de 2.
Por ejemplo: seleccionamos el canal 6, se introduce el número 6 en binario en las
entradas de Selección (S2=1, S1=1 y S0=0). Por los Mux de la primera columna se
introduce “0” y sacan por sus salidas lo que hay en las entradas I 0, I2, I4, I6.
Por la entrada de selección de los Mux de la segunda columna se introduce un “1”
por lo que se están seleccionando las entradas de los canales I1 y la salida de
estos Mux serán I2, I6; y en la entrada del Mux de la tercera columna se ingresa un
“1” lo que elige su entrada I1 y la salida final es I6.
Oscar Ignacio Botero Henao 7
Mux – Demux
Por ejemplo: construir un multiplexor de 16 entradas usando multiplexores de 4.
Oscar Ignacio Botero Henao 8
Mux – Demux
Aumento del número de bits por canal
Los Mux se conectan en paralelo. Se necesita construir un multiplexor de dos
canales de entrada, cada uno de ellos de 2 bits, y para ello disponemos de
multiplexores de 2 canales de un bit:
Oscar Ignacio Botero Henao 9
Mux – Demux
Utilizaremos dos multiplexores de los que tenemos, uno por cada bit de entrada
(A0 y B0). Como los canales en el nuevo multiplexor son de 2 bits, necesitaremos 2
multiplexores (uno para cada bit). A un Mux van los bits de menor peso de los
canales de entrada y al otro los de mayor peso. Las entradas de selección de
ambos están unidas:
Si tenemos S=0, las salidas son: Z0=A0 y Z1=A1
Si tenemos S=1, las salidas son: Z0=B0 y Z1=B1
Ejemplo: construir un multiplexor de 4 canales de 4 bits, usando multiplexores de 4
entradas de 1 bit.
Necesitaremos 4 multiplexores de los que tenemos, a cada uno de los cuales les
llegan los bits del mismo peso de los diferentes canales. Por el primer multiplexor
entran los bits de menor peso (A0, B0, C0 y D0) y por el último los de mayor peso
(A3, B3, C3 y D3). En el dibujo no se muestran todas las conexiones:
Oscar Ignacio Botero Henao 10
Mux – Demux
Implementación de funciones con Mux
Utilizando multiplexores es posible implementar funciones booleanas. En general,
cualquier función de n variables se puede implementar utilizando un multiplexor.
𝐹 = (𝑋̅ × 𝑌 × 𝑍) + (𝑋 × 𝑌̅) + (𝑋̅ × 𝑌̅ × 𝑍̅ )
Tiene 3 variables la función y se puede implementar utilizando un multiplexor de 2
entradas de control (22 = 4):
Utilizamos un método basado en la tabla de verdad, aunque algunas funciones se
pueden implementar de manera más fácil si utilizamos la entrada de validación.
Oscar Ignacio Botero Henao 11
Mux – Demux
1. Se divide la tabla en tantos grupos como canales de entrada halla. En este
caso hay 4 entradas, por lo que hacemos 4 grupos. Las variables de mayor
peso se introducen directamente por las entradas de selección S0 y S1.
I0
I1
I2
I3
Z
0
0
0
0
1
1
1
1
Y
0
0
1
1
0
0
1
1
X
0
1
0
1
0
1
0
1
F
1
1
0
0
0
1
1
0
X = 0 → F =1
X = 1 → F =1
X = 0 → F =0
X = 1 → F =0
X = 0 → F =0
X = 1 → F =1
X = 0 → F =1
X = 1 → F =0
IO=”1”
I1=”0”
I2=𝑋
I3=𝑋̅
2. Las variables Y e Z son las que se han introducido por las entradas de
selección (S0=Y y S1=Z), o sea que se forman 4 grupos de filas, el primer
grupo corresponde con la entrada I0, el siguiente I1, el siguiente I2 y el último
I3.
3. El valor a ingresar por las entradas I0, I1, I2 e I3 lo obtenemos mirando las
columnas de la derecha (la columna X y la F).
a. El primer grupo: cuando X=0  F=1 y cuando X=1 F=1 por tanto
𝐹 = "1". Esa será la salida cuando se seleccione el canal 0, por
tanto en la entrada I0 se ingresa un “1”.
b. El segundo grupo: cuando X=0  F=0 y cuando X=1 F=0 por tanto
𝐹 = "0". Esa será la salida cuando se seleccione el canal 1, por
tanto en la entrada I1 se ingresa un “0”.
c. El tercer grupo: cuando X=0  F=0
y cuando X=1  F=1 por tanto 𝐹 =
𝑋. Esa será la salida cuando se
seleccione el canal 2, por tanto en
la entrada I2 se ingresan los
valores de la variable 𝑋.
d. El cuarto grupo: cuando X=0 
F=1 y cuando X=1  F=0 por tanto
𝐹 = 𝑋̅. Esa será la salida cuando
se seleccione el canal 3, por tanto
en la entrada I3 se ingresan los
valores de la variable 𝑋̅.
Oscar Ignacio Botero Henao 12
Mux – Demux
Ejemplo: implementar la función 𝐹 = (𝐴 × 𝐵) + (𝐴̅ × 𝐵 × 𝐶̅ ) + (𝐴 × 𝐵̅ × 𝐶̅ ) +
(𝐴̅ × 𝐵̅ × 𝐶) utilizando un mux sin entrada de validación.
I0
I1
I2
I3
C
0
0
0
0
1
1
1
1
B
0
0
1
1
0
0
1
1
A
0
1
0
1
0
1
0
1
F
0
1
1
1
1
0
0
1
A = 0 → F =0
A = 1 → F =1
A = 0 → F =1
A = 1 → F =1
A = 0 → F =1
A = 1 → F =0
A = 0 → F =0
A = 1 → F =1
IO=𝐴
I1=”1”
I2=𝐴̅
I3=𝐴
Oscar Ignacio Botero Henao 13
Mux – Demux
Ejemplo: implementar la función 𝐹 = (𝐴 × 𝐵̅ × 𝐶) + (𝐴 × 𝐵 × 𝐶) utilizando un mux
con entrada de validación (E).
C
0
0
0
0
1
1
1
1
I0
I1
I2
I3
B
0
0
1
1
0
0
1
1
A
0
1
0
1
0
1
0
1
F
0
0
0
0
0
1
0
1
C = 0 → F =0 Enable Desactivado
E= C = I0 = I1= 0
A = 0 → F =0
A = 1 → F =1
A = 0 → F =0
A = 1 → F =1
I2=𝐴
I3=𝐴
̅̅̅̅̅̅̅̅̅̅
̅̅̅̅̅̅̅̅̅̅
̅ × 𝐶) ⊕ (𝐵 + 𝐶)} + {(𝐵
̅) ×
Ejemplo:
implementar
la
función
𝐹 = {(𝐴
+𝐷
𝐷} utilizando un mux de 16 entradas con entrada de validación.
D
0
0
0
0
0
0
0
0
1
1
1
1
1
C
0
0
0
0
1
1
1
1
0
0
0
0
1
B
0
0
1
1
0
0
1
1
0
0
1
1
0
A
0
1
0
1
0
1
0
1
0
1
0
1
0
F
1
1
0
0
1
0
1
0
1
1
0
0
1
 I0=𝐴̅
 I1=1
 I2=0
 I3=𝐴̅
 I4=𝐴̅
 I5=𝐴̅
 I6=𝐴̅
 I7=𝐴̅
 I8=𝐴̅
 I9=1
 I10=0
 I11=𝐴̅
 I12=𝐴̅
Oscar Ignacio Botero Henao 14
Mux – Demux
1
1
1
1
1
1
0
1
1
1
0
1
1  I13=1
1  I14=𝐴̅
0  I15=𝐴̅
𝐴̅ = 𝐼0 , 𝐼3 , 𝐼4 , 𝐼5 , 𝐼6 , 𝐼7 , 𝐼8 , 𝐼11 , 𝐼12 , 𝐼14 , 𝐼15
"1" = 𝐼1 , 𝐼9 , 𝐼13
"0" = 𝐼2 , 𝐼10
Oscar Ignacio Botero Henao 15
Mux – Demux
Circuitos Integrados Multiplexores
Multiplexor de 8 entradas – 74151
Las 8 entradas son seleccionadas por el selector de datos (A – B – C, pines 9 – 10
– 11), posee una terminal que habilita el selector de datos con un nivel bajo (“0”)
llamado strobe (pin 7) y dos salidas (Y) que es normal y (W) que es
complementaria
DEMULTIPLEXOR (DEMUX)
En los Demultiplexores hay un único canal de entrada de datos que puede
exhibirse por múltiples salidas (una a la vez).
Si usamos la analogía de la finca y las tuberías sería: supongamos, a la finca solo
llega una única tubería con agua, pero al interior de la finca hay varias mangueras
que se destinan a lugares diferentes por consiguiente no se pueden utilizar varias
mangueras a la vez ya que están en sitios diferentes. Por medio de una llave de
paso se selecciona la manguera por la que saldrá el agua.
Los Demux están compuestos por la única Entrada de Datos (manguera), Selector
de Datos (llave de paso) y las Salidas (múltiples mangueras).
Oscar Ignacio Botero Henao 16
Mux – Demux
Ambos DEMUX tienen 4 canales de salida de datos y para ello se necesitan 2 bit
de Selector de datos (22 = 4, para poder seleccionar los 4 posibles canales). El del
lado izquierdo tiene 2 bit de entrada como único canal y 2 bit de salida por cada
canal, el de la derecha tiene 1 bit de entrada como único canal y un bit en cada
uno de los 4 canales de salida.
Demux con 1 entrada de Selección
Este Demux tiene una entrada de datos y 2 salidas,
según el valor de la entrada del Selector designará la
salida O0 o la O1
Para obtener la tabla aplicamos la definición de
Demultiplexor y vamos comprobando caso por caso
que valores aparecen en las salidas. Por ejemplo, si
S=1 e I=1, se estará seleccionando la salida O1 y por
ella saldrá el valor de I = “1”. La salida O0 no estará
seleccionada y tendrá el valor 0.
S
0
0
1
1
I O1 O0
0 0 0
1 0 1
0 0 0
1 1 0
La forma canónica es:
𝑂1 = 𝑆 × 𝐼
𝑂0 = 𝑆̅ × 𝐼
Reemplazando en las Funciones:
Si se selecciona la salida 0 (S = 0):
𝑂1 = 𝑆 × 𝐼 ∴ 𝑂1 = 0 × 𝐼 ∴ 𝑂1 = 0
S = 0 → O0 = I
S = 1 → O1 = I
Oscar Ignacio Botero Henao 17
Mux – Demux
𝑂0 = 𝑆̅ × 𝐼 ∴ 𝑂0 = 0̅ × 𝐼 ∴ 𝑂0 = 1 × 𝐼 ∴ 𝑂0 = 𝐼
Si se selecciona la salida 1 (S = 1):
𝑂1 = 𝑆 × 𝐼 ∴ 𝑂1 = 1 × 𝐼 ∴ 𝑂1 = 𝐼
𝑂0 = 𝑆̅ × 𝐼 ∴ 𝑂0 = 1̅ × 𝐼 ∴ 𝑂0 = 0 × 𝐼 ∴ 𝑂0 = 0
Podemos considerar que las funciones O0 y O1 solo dependen de la
entrada de selección (S), teniendo la entrada I como parámetro y
podemos simplificar su descripción así:
La salida O0 vale I cuando S = 0 y la salida O1 vale I cuando S = 1.
Demux con 2 entradas de Selección
Tiene dos entradas de selección y cuatro salidas (2 2 = 4 posibles combinaciones
de salida)
La tabla de verdad “abreviada” es:
S 1 S 0 O 3 O2 O1 O0
0 0 0 0 0
I
0 1 0 0
I
0
1 0 0
I
0 0
1 1
I
0 0 0
La entrada I se saca por la salida indicada en las entradas de selección. Las
ecuaciones de las funciones de salida son:
𝑂0 = 𝑆̅1 × 𝑆̅0 × 𝐼
𝑂1 = 𝑆̅1 × 𝑆0 × 𝐼
𝑂2 = 𝑆1 × 𝑆̅0 × 𝐼
𝑂3 = 𝑆1 × 𝑆0 × 𝐼
Analizando la ecuación de O0: O0 = I sólo cuando S1 =”0” y S0 =”0”.
Oscar Ignacio Botero Henao 18
Mux – Demux
Demux con 3 entradas de Selección
Un Demux con 3 entradas de Selección (S2, S1, S0) tendrá 8 salidas, las
ecuaciones para las salidas será:
𝑂5 = 𝑆2 × 𝑆̅1 × 𝑆0 × 𝐼 … . 𝑂0 = 𝑆̅2 × 𝑆̅1 × 𝑆̅0 × 𝐼
Circuitos Integrados Demultiplexores
Demultiplexor de 8 salidas – 74138
El demultiplexor (DEMUX) selecciona una de las 8 salidas basadas en las
condiciones de las 3 entradas binarias (A – B – C, pines 1 – 2 –3) y las 3 entradas
de habilitación (enables, G1 – G2A – G2B, pines 4 – 5 – 6). Una sola entrada de
habilitación puede utilizarse como una entrada de datos para la demultiplexación.
G2 = G2A + G2B.
EJEMPLOS DE SIMULACIÓN Y PROGRAMACIÓN
Multiplexor de 4 entradas sin validación.
Simulación con Proteus
𝐹 = (𝑆̅1 × 𝑆̅0 × 𝐼0 ) + (𝑆̅1 × 𝑆0 × 𝐼1 ) + (𝑆1 × 𝑆̅0 × 𝐼2 ) + (𝑆1 × 𝑆0 × 𝐼3 )
Oscar Ignacio Botero Henao 19
Mux – Demux
Programación con ISE de Xilinx
Método de Flujo de Datos
----------------------------------------------------------------------------------- MULTIPLEXOR DE 4 ENTRADAS - FLUJO DE DATOS
---------------------------------------------------------------------------------library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity Mux4_flujo is
Port ( I0 : in STD_LOGIC;
I1 : in STD_LOGIC;
I2 : in STD_LOGIC;
I3 : in STD_LOGIC;
S0 : in STD_LOGIC;
S1 : in STD_LOGIC;
F : out STD_LOGIC);
end Mux4_flujo;
architecture Flujo of Mux4_flujo is
begin
F<=(NOT S0 AND NOT S1 AND I0) OR (S0 AND NOT S1 AND I1) OR (NOT S0
AND S1 AND I2) OR (S0 AND S1 AND I3);
Oscar Ignacio Botero Henao 20
Mux – Demux
end Flujo;
Método Estructural
----------------------------------------------------------------------------------- MULTIPLEXOR DE 4 ENTRADAS - ESTRUCTURAL
---------------------------------------------------------------------------------library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity Mux4_estruc is
Port ( I0 : in STD_LOGIC;
I1 : in STD_LOGIC;
I2 : in STD_LOGIC;
I3 : in STD_LOGIC;
S0 : in STD_LOGIC;
S1 : in STD_LOGIC;
F : out STD_LOGIC);
end Mux4_estruc;
architecture Estructural of Mux4_estruc is
SIGNAL
S0N,S1N,Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8,Y9,Y10:STD_LOGIC;
Señales Intermedias
COMPONENT INV
-- Estructura de la Compuerta
PORT (I:IN STD_LOGIC;O:OUT STD_LOGIC);
END COMPONENT;
COMPONENT AND2
PORT (I0,I1:IN STD_LOGIC;O:OUT STD_LOGIC);
END COMPONENT;
COMPONENT OR2
PORT (I0,I1:IN STD_LOGIC;O:OUT STD_LOGIC);
END COMPONENT;
begin
U1: INV PORT MAP(I=>S0,O=>S0N); -- Conexión de las Compuertas
U2: INV PORT MAP(I=>S1,O=>S1N);
U3: AND2 PORT MAP(I0=>S0N,I1=>S1N,O=>Y1);
U4: AND2 PORT MAP(I0=>S0,I1=>S1N,O=>Y2);
U5: AND2 PORT MAP(I0=>S0N,I1=>S1,O=>Y3);
U6: AND2 PORT MAP(I0=>S0,I1=>S1,O=>Y4);
U7: AND2 PORT MAP(I0=>Y1,I1=>I0,O=>Y5);
U8: AND2 PORT MAP(I0=>Y2,I1=>I1,O=>Y6);
U9: AND2 PORT MAP(I0=>Y3,I1=>I2,O=>Y7);
--
Oscar Ignacio Botero Henao 21
Mux – Demux
U10: AND2 PORT MAP(I0=>Y4,I1=>I3,O=>Y8);
U11: OR2 PORT MAP(I0=>Y5,I1=>Y6,O=>Y9);
U12: OR2 PORT MAP(I0=>Y7,I1=>Y8,O=>Y10);
U13: OR2 PORT MAP(I0=>Y9,I1=>Y10,O=>F);
end Estructural;
Método Comportamental
----------------------------------------------------------------------------------- MULTIPLEXOR DE 4 ENTRADAS - COMPORTAMENTAL
---------------------------------------------------------------------------------library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity Mux4_compor is
Port ( I0 : in STD_LOGIC;
I1 : in STD_LOGIC;
I2 : in STD_LOGIC;
I3 : in STD_LOGIC;
S0 : in STD_LOGIC;
S1 : in STD_LOGIC;
F : out STD_LOGIC);
end Mux4_compor;
architecture Comportamental of Mux4_compor is
begin
PROCESS(S0,S1,I0,I1,I2,I3) -- Lista de Sensibilidad
begin
IF (NOT S0 AND NOT S1)='1' THEN -- Si...entonces...
F<=I0;
ELSIF (S0 AND NOT S1)='1' THEN – Si No…entonces…
F<=I1;
ELSIF (NOT S0 AND S1)='1' THEN
F<=I2;
ELSIF (S0 AND S1)='1' THEN
F<=I3;
ELSE
F<='0';
END IF;
END PROCESS;
end Comportamental;
Oscar Ignacio Botero Henao 22
Mux – Demux
Método Esquemático – Compuertas Lógicas
Método Esquemático – Módulo M4_1E
Se implementó con el módulo del Mux denominado M4_1E (con validación – E),
debido a que no lo hay sin el Enable. La validación (E) se activa en alto “1”.
Oscar Ignacio Botero Henao 23
Mux – Demux
Método Esquemático – Módulo M2_1
Implementado con Mux de 2 entradas (módulos M2_1), extensión de Multiplexores
por aumento del número de entradas.
Programación con ISE de Xilinx
Demultiplexor de 8 salidas.
C
0
0
0
0
1
1
1
1
B
0
0
1
1
0
0
1
1
A O7 O6 O5 O4 O3 O2 O1 O0
0 0 0 0 0 0 0 0
I
1 0 0 0 0 0 0
I
0
0 0 0 0 0 0
I
0 0
1 0 0 0 0
I
0 0 0
0 0 0 0
I
0 0 0 0
1 0 0
I
0 0 0 0 0
0 0
I
0 0 0 0 0 0
1 I
0 0 0 0 0 0 0
𝑂0 = 𝐼(𝐴̅ × 𝐵̅ × 𝐶̅ )
𝑂1 = 𝐼(𝐴 × 𝐵̅ × 𝐶̅ )
𝑂2 = 𝐼(𝐴̅ × 𝐵 × 𝐶̅ )
𝑂3 = 𝐼(𝐴 × 𝐵 × 𝐶̅ )
𝑂4 = 𝐼(𝐴̅ × 𝐵̅ × 𝐶)
𝑂5 = 𝐼(𝐴 × 𝐵̅ × 𝐶)
𝑂6 = 𝐼(𝐴̅ × 𝐵 × 𝐶)
𝑂7 = 𝐼(𝐴 × 𝐵 × 𝐶)
Oscar Ignacio Botero Henao 24
Mux – Demux
Método de Flujo de Datos
----------------------------------------------------------------------------------- DEMULTIPLEXOR DE 8 SALIDAS - FLUJO DE DATOS
---------------------------------------------------------------------------------library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity Demux8_flujo is
Port ( I : in STD_LOGIC;
A : in STD_LOGIC;
B : in STD_LOGIC;
C : in STD_LOGIC;
O0 : out STD_LOGIC;
O1 : out STD_LOGIC;
O2 : out STD_LOGIC;
O3 : out STD_LOGIC;
O4 : out STD_LOGIC;
O5 : out STD_LOGIC;
O6 : out STD_LOGIC;
O7 : out STD_LOGIC);
end Demux8_flujo;
architecture Flujo of Demux8_flujo is
begin
O0<=NOT A AND NOT B AND NOT C AND I;
O1<=A AND NOT B AND NOT C AND I;
O2<=NOT A AND B AND NOT C AND I;
O3<=A AND B AND NOT C AND I;
O4<=NOT A AND NOT B AND C AND I;
O5<=A AND NOT B AND C AND I;
O6<=NOT A AND B AND C AND I;
O7<=A AND B AND C AND I;
end Flujo;
Método Estructural
----------------------------------------------------------------------------------- DEMULTIPLEXOR DE 8 SALIDAS - ESTRUCTURAL
---------------------------------------------------------------------------------library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity Demux8_estructural is
Oscar Ignacio Botero Henao 25
Mux – Demux
Port ( I : in STD_LOGIC;
A : in STD_LOGIC;
B : in STD_LOGIC;
C : in STD_LOGIC;
O0 : out STD_LOGIC;
O1 : out STD_LOGIC;
O2 : out STD_LOGIC;
O3 : out STD_LOGIC;
O4 : out STD_LOGIC;
O5 : out STD_LOGIC;
O6 : out STD_LOGIC;
O7 : out STD_LOGIC);
end Demux8_estructural;
architecture Estructural of Demux8_estructural is
SIGNAL An,Bn,Cn:STD_LOGIC; -- Señales intermedias
COMPONENT INV
-- Estructura de la Compuerta
PORT (I:IN STD_LOGIC;O:OUT STD_LOGIC);
END COMPONENT;
COMPONENT AND4
PORT (I0,I1,I2,I3:IN STD_LOGIC;O:OUT STD_LOGIC);
END COMPONENT;
begin
U1: INV PORT MAP(I=>A,O=>An);
-- Conexión de las Compuertas
U2: INV PORT MAP(I=>B,O=>Bn);
U3: INV PORT MAP(I=>C,O=>Cn);
U4: AND4 PORT MAP(I0=>An,I1=>Bn,I2=>Cn,I3=>I,O=>O0);
U5: AND4 PORT MAP(I0=>A,I1=>Bn,I2=>Cn,I3=>I,O=>O1);
U6: AND4 PORT MAP(I0=>An,I1=>B,I2=>Cn,I3=>I,O=>O2);
U7: AND4 PORT MAP(I0=>A,I1=>B,I2=>Cn,I3=>I,O=>O3);
U8: AND4 PORT MAP(I0=>An,I1=>Bn,I2=>C,I3=>I,O=>O4);
U9: AND4 PORT MAP(I0=>A,I1=>Bn,I2=>C,I3=>I,O=>O5);
U10: AND4 PORT MAP(I0=>An,I1=>B,I2=>C,I3=>I,O=>O6);
U11: AND4 PORT MAP(I0=>A,I1=>B,I2=>C,I3=>I,O=>O7);
end Estructural;
Método Comportamental
----------------------------------------------------------------------------------- DEMULTIPLEXOR DE 8 SALIDAS - COMPORTAMENTAL
---------------------------------------------------------------------------------library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
Oscar Ignacio Botero Henao 26
Mux – Demux
entity Demux8_comporta is
Port ( I : in STD_LOGIC;
A : in STD_LOGIC;
B : in STD_LOGIC;
C : in STD_LOGIC;
O0 : out STD_LOGIC;
O1 : out STD_LOGIC;
O2 : out STD_LOGIC;
O3 : out STD_LOGIC;
O4 : out STD_LOGIC;
O5 : out STD_LOGIC;
O6 : out STD_LOGIC;
O7 : out STD_LOGIC);
end Demux8_comporta;
architecture Comportamental of Demux8_comporta is
begin
Process(A,B,C,I) -- Lista de sensibilidad
begin
IF (NOT A AND NOT B AND NOT C)='1' THEN -- Si...entonces...
O0<=I;
ELSIF (A AND NOT B AND NOT C)='1' THEN -- Si no Si... entonces...
O1<=I;
ELSIF (NOT A AND B AND NOT C)='1' THEN
O2<=I;
ELSIF (A AND B AND NOT C)='1' THEN
O3<=I;
ELSIF (NOT A AND NOT B AND C)='1' THEN
O4<=I;
ELSIF (A AND NOT B AND C)='1' THEN
O5<=I;
ELSIF (NOT A AND B AND C)='1' THEN
O6<=I;
ELSIF (A AND B AND C)='1' THEN
O7<=I;
ELSE --Si no...
O0<='0';
O1<='0';
O2<='0';
O3<='0';
O4<='0';
O5<='0';
O6<='0';
O7<='0';
END IF;
END PROCESS;
Oscar Ignacio Botero Henao 27
Mux – Demux
end Comportamental;
Método Esquemático – Compuertas Lógicas
𝑂0 = 𝐼(𝐴̅ × 𝐵̅ × 𝐶̅ )
𝑂1 = 𝐼(𝐴 × 𝐵̅ × 𝐶̅ )
𝑂2 = 𝐼(𝐴̅ × 𝐵 × 𝐶̅ )
𝑂3 = 𝐼(𝐴 × 𝐵 × 𝐶̅ )
𝑂4 = 𝐼(𝐴̅ × 𝐵̅ × 𝐶)
𝑂5 = 𝐼(𝐴 × 𝐵̅ × 𝐶)
𝑂6 = 𝐼(𝐴̅ × 𝐵 × 𝐶)
𝑂7 = 𝐼(𝐴 × 𝐵 × 𝐶)
Descargar