Curso a Distancia
INTRODUCCIÓN AL DISEÑO DIGITAL CON VHDL Y
LÓGICA PROGRAMABLE
Ing. Arturo J. Miguel de Priego Paz Soldán
amiguel@[Link]
[Link]
Chincha, Perú
22 de abril de 2008
Módulo 4
MULTIPLEXORES
Multiplexor de 2 líneas a 1.
Multiplexor de 4 líneas a 1.
Multiplexor 74151 (8 líneas a 1),
74153 (4 líneas a 1) y
74157 (2 líneas a 1).
Multiplexor de N líneas a 1.
Multiplexores en cascada.
Un multiplexor selecciona una de varias entradas. Típicamente, se utilizan para elegir datos desde
varias fuentes posibles, y suelen usarse también para generar funciones lógicas.
Objetivos
Al finalizar este módulo estarás en capacidad de:
Describir en VHDL varios tipos de multiplexores.
Curso de VHDL a distancia 4. Multiplexores
Multiplexor de 2 a 1 línea
La función de salida de un multiplexor de dos entradas de datos es: f = a·s + b·s
Esta función podemos describirla en VHDL
utilizando asignación directa de señal:
La simulación de este circuito demuestra que cuando el selector s es 0 la salida copia el valor de la
entrada a, y cuando s es 1 la salida copia el valor de la entrada b:
Otra simulación con condiciones de no
importa muestra el mismo resultado:
Ing. Arturo Miguel de Priego amiguel@[Link] Chincha, Perú, 2008 Pág. 2
Curso de VHDL a distancia 4. Multiplexores
A continuación, se describe el mismo multiplexor con otras arquitecturas.
Asignación selectiva:
Asignación condicional:
Sentencia IF-ELSE:
Sentencia CASE:
Ing. Arturo Miguel de Priego amiguel@[Link] Chincha, Perú, 2008 Pág. 3
Curso de VHDL a distancia 4. Multiplexores
Multiplexor 4 a 1
Un multiplexor 4 a 1 tiene 4 entradas de datos, una entrada de selección de dos bits, y una salida.
Una descripción VHDL para este multiplexor es:
Esta descripción muestra una arquitectura con asignación selectiva.
En la simulación se comprueba que la descripción es de un multiplexor de 4 a 1 línea:
Ing. Arturo Miguel de Priego amiguel@[Link] Chincha, Perú, 2008 Pág. 4
Curso de VHDL a distancia 4. Multiplexores
Otra manera de describir el mismo multiplexor es agrupando las entradas de datos en un bus, tal
como se muestra a continuación:
En la simulación, el resultado es el mismo que el caso anterior, solamente se ha modificado la
representación de las entradas de datos:
Ing. Arturo Miguel de Priego amiguel@[Link] Chincha, Perú, 2008 Pág. 5
Curso de VHDL a distancia 4. Multiplexores
Una ventaja de tener los datos agrupados por buses es que podemos tratar las señales con índices.
Por ejemplo, una forma más de hacer
la descripción de este multiplexor es
con un lazo FOR:
En este lazo FOR la variable x
cambia desde 0 hasta 3. Para cada
valor se evalúa si x coincide con el
índice, y cuando eso ocurra el valor
de la salida copiará la entrada de
índice x.
La siguiente descripción es una forma más
compacta del multiplexor utilizando índices,
pero ahora la entrada es de tipo entero:
Ing. Arturo Miguel de Priego amiguel@[Link] Chincha, Perú, 2008 Pág. 6
Curso de VHDL a distancia 4. Multiplexores
Multiplexor de 4 canales de datos de 4 bits
A continuación se muestra la descripción de un multiplexor de 4 a 1 pero con entradas de datos de 4
bits. Esta descripción utiliza sentencia selectiva:
1. Crea arquitecturas con asignación condicional, IF-ELSE y CASE. Envía el archivo VHD por
email (un único archivo con la entidad y las tres arquitecturas). Recuerda que en la compilación
la arquitectura que se toma en cuenta es la última que aparece en el archivo.
2. Simula el circuito con al menos dos valores diferentes de cada entrada cuando estén
seleccionadas.
3. Vuelve a considerar el multiplexor pero ahora con una entrada i de 16 bits, de tal modo que la
entrada a corresponda con los bits 3-0 de i, b con los bits 7-4, c con los bits 11-8 y d con los bits
15-12.
4. Realiza las arquitecturas con asignación selectiva, condicional e IF-ELSE. Haz un único archivo
y llámalo [Link]. Este archivo contendrá la entidad y todas las arquitecturas.
5. Como en el caso inicial, simula el circuito con al menos dos valores diferentes de cada entrada
cuando estén seleccionadas.
Ing. Arturo Miguel de Priego amiguel@[Link] Chincha, Perú, 2008 Pág. 7
Curso de VHDL a distancia 4. Multiplexores
Multiplexor 74LS151
Es un multiplexor de ocho entradas. Puede usarse como
un generador de función universal para generar
cualquier función lógica de cuatro variables. Cuenta
con salida normal y complementada. Tiene una entrada
de habilitación (E) activa en BAJA. Cuando el
multiplexor está deshabilitado, la salida normal es
BAJA y la salida complementada es ALTA.
La tabla de verdad de este circuito es:
Una descripción VHDL con asignación directa se muestra a continuación:
Ing. Arturo Miguel de Priego amiguel@[Link] Chincha, Perú, 2008 Pág. 8
Curso de VHDL a distancia 4. Multiplexores
Esta arquitectura con asignación selectiva utiliza una señal intermedia y luego asigna la salida
considerando la entrada de habilitación:
Esta arquitectura con asignación condicional primero evalúa el estado del habilitador y luego
prosigue con la entrada de selección para asignar la salida. La señal auxiliar y es necesaria, porque
las salidas son de tipo OUT (sólo lectura):
Ing. Arturo Miguel de Priego amiguel@[Link] Chincha, Perú, 2008 Pág. 9
Curso de VHDL a distancia 4. Multiplexores
Las siguientes arquitecturas
utilizan procesos con IF-ELSE y
con CASE:
Multiplexor 74LS151 con arquitecturas selectiva y CASE modificadas
Modifica las arquitecturas selectiva y CASE del multiplexor 74LS151 de modo que la señal y sea
directamente la salida deseada. (Sugerencia: agrupa la entrada i con la señal e.)
Ing. Arturo Miguel de Priego amiguel@[Link] Chincha, Perú, 2008 Pág. 10
Curso de VHDL a distancia 4. Multiplexores
Multiplexor 74LS153
Contiene dos multiplexores (a y b) de 4 entradas. Las entradas de selección son comunes a ambos
multiplexores, mas las entradas de datos y de habilitación
son independientes. Los habilitadores se activan en
BAJA. Las salidas de cada multiplexor son normales (no
complementadas). Cada multiplexor es capaz de generar
una función cualquiera de tres variables. Cuando el chip
está deshabilitado las salidas son cero.
La tabla de verdad de cada multiplexor es:
Vamos a modificar el circuito original para crear un modelo VHDL con entrada de habilitación
común. Una entidad para este nuevo multiplexor puede ser:
La arquitectura siguiente emplea asignaciones simples (con expresiones booleanas):
Ing. Arturo Miguel de Priego amiguel@[Link] Chincha, Perú, 2008 Pág. 11
Curso de VHDL a distancia 4. Multiplexores
La simulación de este circuito concuerda con la tabla de verdad (considerando entrada de
habilitación común):
A continuación se muestran otras arquitecturas para este multiplexor.
Asignación selectiva:
Ing. Arturo Miguel de Priego amiguel@[Link] Chincha, Perú, 2008 Pág. 12
Curso de VHDL a distancia 4. Multiplexores
Asignación condicional:
Proceso con IF-ELSE:
Ing. Arturo Miguel de Priego amiguel@[Link] Chincha, Perú, 2008 Pág. 13
Curso de VHDL a distancia 4. Multiplexores
Proceso con CASE:
Multiplexor 74LS153
En el modelo del 74153 hemos usado el mismo habilitador para los dos multiplexores del circuito
integrado. Modifica la entidad y las arquitecturas selectiva y condicional para que las entradas de
habilitación sean independientes, tal como ocurre en el multiplexor 74LS15. Simula el circuito de
acuerdo a la tabla de verdad.
Ing. Arturo Miguel de Priego amiguel@[Link] Chincha, Perú, 2008 Pág. 14
Curso de VHDL a distancia 4. Multiplexores
Multiplexor 74LS157
El circuito integrado 7LS157 es un
multiplexor cuádruplo de dos
entradas. El selector y el habilitador
son comunes para los cuatro bloques.
El habilitador se activa en BAJA.
Cuando está deshabilitado las salidas
van a BAJA.
En esta página se muestran una
entidad, una arquitectura y una
simulación de este circuito.
1. Crea arquitecturas de asignación selectiva, condicional, IF-ELSE y CASE.
2. Simula el circuito de acuerdo al patrón mostrado en la simulación previa.
Ing. Arturo Miguel de Priego amiguel@[Link] Chincha, Perú, 2008 Pág. 15
Curso de VHDL a distancia 4. Multiplexores
Multiplexor N a 1
Como en el caso del descodificador 1 de N líneas, es posible crear un multiplexor de N a 1 línea. En
esta sección mostraremos el modelo de un multiplexor de N a 1, y luego se mostrará cómo utilizarlo
como un componente de un circuito mayor.
La descripción de un multiplexor N a 1 se indica a continuación.
Se necesitan tres paquetes de la
biblioteca IEEE.
A representa el número de
entradas. Por defecto se ha
colocado en 8. N representa el
número de bits de selección.
Por defecto está en 3.
El lazo FOR se emplea para determinar la salida
a partir de un índice x que varía desde el dato 0
hasta el dato A – 1.
Nota que no se usa z <= i(s) en esta arquitectura. Los índices deben ser
enteros en VHDL, y s es de tipo std_logic_vector. Puedes obtener una
descripción más simple cambiando el tipo de s en la entidad para que sea
INTEGER. Luego de hacer tal cambio, se podrá usar z <= i(s) en la
arquitectura, directamente sin necesidad de usar un proceso con FOR.
Ing. Arturo Miguel de Priego amiguel@[Link] Chincha, Perú, 2008 Pág. 16
Curso de VHDL a distancia 4. Multiplexores
Ahora crearemos un nuevo archivo VHDL que utilice la descripción anterior, Multiplexor_Na1,
como componente del circuito. Este estilo de descripción es estructural.
Para hacer esto, se
declara el componente
Multiplexor_Na1 en la
arquitectura, antes de
BEGIN. Puedes usar la
plantilla provista por
MAX+plus II para
facilitar la edición
(Templates > VHDL Templates, y luego eliges Component Declaration):
Luego, en el cuerpo de la
arquitectura, después de
BEGIN, se instancia o
inserta el componente como
parte del circuito general.
También puedes usar una
plantilla (Templates > VHDL Templates, y luego eliges Component Instantation Statement):
Veamos todo esto en un ejemplo:
Esta descripción tiene una entrada i de 16 bits (datos), una entrada s de 4 bits (selector) y dos salidas
x e y.
Ing. Arturo Miguel de Priego amiguel@[Link] Chincha, Perú, 2008 Pág. 17
Curso de VHDL a distancia 4. Multiplexores
El componente
Multiplexor_Na1 se
declara en la
arquitectura, antes de
BEGIN. Luce similar
a la declaración de la
entidad de
Multiplexor_Na1.
En el cuerpo de la
arquitectura se crea
un multiplexor de 16
a 1. La señal x es la
salida de este
multiplexor.
Luego, se crea un
multiplexor de 8 a 1.
La señal y es la salida.
Observa que el selector de la instancia mux16a1 es el selector declarado en la entidad. En el caso de
la instancia mux8a1 el selector es de tres bits y se han usado los tres bits menos significativos de la
señal s que está declarada en la entidad.
La simulación de este circuito
muestra que hemos descrito dos
multiplexores diferentes a partir del
modelo del multiplexor N a 1:
Ing. Arturo Miguel de Priego amiguel@[Link] Chincha, Perú, 2008 Pág. 18
Curso de VHDL a distancia 4. Multiplexores
Multiplexores en cascada
Utiliza componentes del multiplexor de N a 1 para describir estructuralmente un multiplexor de 16
a 1 a partir de dos multiplexores 8 a 1 y de un multiplexor 2 a 1. Para ello, deberás crear instancias
del multiplexor N a 1 para los dos multiplexores 8 a 1 y para el multiplexor 2 a 1. La salida del
circuito será la salida del multiplexor 2 a 1. En la entidad declara la entrada de datos como un bus.
Las entradas de selección de la entidad se repartirán entre las señales de conexión a los
componentes. También necesitarás crear dos señales para mantener la salida de los multiplexores 8
a 1.
Conclusiones
1. Hemos visto cómo describir varios tipos de multiplexores en VHDL usando varios estilos de
descripción.
2. En el próximo módulo estudiaremos cómo describir comparadores.
Recomendaciones
• Realiza en MAX+plus II cada ejemplo y ejercicio indicado en este módulo. Luego, envía
por email los archivos VHD y SCF.
Ing. Arturo Miguel de Priego amiguel@[Link] Chincha, Perú, 2008 Pág. 19