Professional Documents
Culture Documents
PRCTICAS DE MECATRONICA
CDIGO
3
N PRCTICA
DAC
REA DE
CONOCIMIENTO
ELT
LABORATORIO
DE
ELECTRNICA
NOMBRE DE LA PRCTICA:
Multiplexores y Demultiplexores
Parte 1: Material para el alumno
Objetivos de aprendizaje
Realizar la implementacin fsica en una CPLD con VHDL de circuitos que
funcionen con Multiplexores y demultiplexores.
Actividad(es) de aprendizaje
Usar Quartus II para elaborar funciones booleanas y programar un CPLD para que
el estudiante evalu funciones booleanas definidas en formas cannicas y no
estndar.
Materias relacionadas
Ninguna
PR-MEC-ELT-LE
No. DE PARTE
ELABOR:
REVIS:
AUTORIZ:
ACADEMIA DE INGENIERA
JEFE DE CARRERA
MARTNEZ
MECATRNICA
INGENIERA MECATRNICA
NOMBRE Y FIRMA
NOMBRE Y FIRMA
NOMBRE Y FIRMA
FECHA
FECHA
FECHA
PR-MEC-ELT-LE
ndice de contenido
Introduccin................................................................................................................4
Antecedentes.............................................................................................................5
Arquitectura..................................................................................................... 5
Bloques lgicos............................................................................................ 5
Matriz de trminos producto y su distribucin.............................................5
Macroceldas.................................................................................................. 6
Multiplexores................................................................................................. 7
Sntesis de funciones lgicas mediante multiplexores..................................9
Sntesis de multiplexores mediante la Expansin de Shannon...................10
Demultiplexores.......................................................................................... 12
TestBench probando los diseos en VHDL..................................................13
Modelado Estructural con VHDL..................................................................18
Desarrollo.................................................................................................................22
PR-MEC-ELT-LE
Introduccin
Los CPLD extienden el concepto de un PLD (del acrnimo ingls
Programmable Logic Device) a un mayor nivel de integracin ya que
permite implementar sistemas ms eficaces, ya que utilizan menor
espacio, mejoran la fiabilidad del diseo, y reducen costos. Un CPLD se
forma con mltiples bloques lgicos, cada uno similar a un PLD. Los
bloques lgicos se comunican entre s utilizando una matriz programable
de interconexiones, lo cual hace ms eficiente el uso del silicio,
conduciendo a una mejor eficiencia a menor costo. A continuacin se
explican brevemente las principales caractersticas de la arquitectura de
un CPLD.
PR-MEC-ELT-LE
Antecedentes
Estas estructuras extienden el concepto de de PLD a un nivel de integracin
superior; esto es, se dispone de mayor nmero de puertas y de
entradas/salidas en un circuito programable (con lo que se disminuye el
tamao del diseo, el consumo y el precio). En vez de hacer estos circuitos con
mayor nmero de trminos producto por macrocelda, o de mayor nmero de
entradas/salidas, cada CPLD contiene bloques lgicos, cada uno de ellos similar
a una estructura PAL o GAL. Estos bloques lgicos se comunican entre s por
medio de interconexiones programables, con lo que se optimizan los recursos
incorporados en el chip. Interconexiones programables.(Dueck, 2011)
Las interconexiones programables, conducen las seales de los dispositivos de
entrada/salida (I/O) hacia los bloques lgicos. Cada uno de estos bloques tiene un
nmero predeterminado de entradas.
La mayora de Ias CPLDs utilizan una de las siguientes estrategias para la
implementacin de la interconexin programable:
Arquitectura
Bloques lgicos
Un bloque lgico equivale a una pequea estructura PAL: Dispone de una matriz
que implementa trminos producto y macroceldas. Las celdas de I/O son a veces
consideradas parte de un bloque lgico. El tamao de un bloque lgico es una
medida de su capacidad (cuanta lgica se puede implementar) y se expresa,
habitualmente en trminos del nmero de macroceldas, el nmero de entradas y el
nmero de trminos producto, as de cmo su distribucin.
Macroceldas
Como en las PLD ms sencillas; las CPLD incluyen macroceldas en las que se
dispone de biestables y seales de control de polaridad4. Adems se aumenta
la flexibilidad de las mismas. Por ejemplo muchas CPLDs ofrecen la posibilidad
de configurar los biestables como tipo D o T, para mejorar el proceso de
implementacin. Adems los CPLDs suelen disponer de macroceldas de I/O
(esto es, asociada con una entrada/salida) y macroceldas con salidas slo a la
matriz programable (buried macrocell).
Veamos algunos ejemplos. La familia MAX340 dispone de una macrocelda con
un alto grado de configurabilidad. La suma de trminos producto sirve como
entrada de una puerta o-exclusiva, mientras que la otra entrada es un nico
trmino producto5. De esta forma se puede configurar la polaridad de la salida.
Tambin se puede seleccionar la seal de reloj de la macrocelda, o configurar
el biestable como T, JK o RS. La salida de la macrocelda tambin se puede
configurar como puramente combinacional o a travs de un biestable.
PR-MEC-ELT-LE
Multiplexores
Un circuito multiplexor tiene varias entradas de datos, una o ms entradas de
seleccin y una salida. Pasa el valor de seal de una de las entradas de datos a
la salida. La entrada de datos se elige mediante los valores de las entradas de
seleccin.(Brown, 2006)
Ilustracin 1: Mux 2 a 1
En la Ilustracin 1 se muestra un multiplexor dos a uno. En el inciso a) se
presenta el smbolo que suele usarse para representar un multiplexor. La entrada
select t (seleccin), s, elige como salida del multiplexor cualquiera de las entradas
w0 o w1 . La funcionalidad del multiplexor queda descrita con una tabla de verdad,
como se muestra en el inciso b) de la figura. En el inciso c) se presenta una
implementacin en suma de productos del multiplexor dos a uno, y en el inciso d
d) se ilustra cmo construirlo con compuertas de transmisin.
En la Ilustracin 2 se describe un multiplexor ms grande con cuatro entradas de
datos, w0 , . . ., w3 , y dos entradas de seleccin, s1 y s0 . Como se muestra en la
tabla de verdad del inciso b) de la figura, los nmeros de dos bits representados
por s1 s0 escogen una de las entradas de datos como la salida del multiplexor. En el
PR-MEC-ELT-LE
Ilustracin 2: Mux 4 a 1
Esa implementacin realiza la funcin multiplexora:
f =s1 s0 w0 + s1 s 0 w1 +s 1 s0 w 2+ s 1 s0 w 3
Es posible construir multiplexores mas grandes a partir de multiplexores mas
pequeos; de modo general el numero de entrada de datos n, es una potencia
entera de dos, Un multiplexor con n entradas de datos w 0, ...wn-1 requiere (log2 n)
entradas de seleccin.
PR-MEC-ELT-LE
PR-MEC-ELT-LE
f (w1, w2, ... , wn)=w1f (0, w 2, ..., w n)+ w1f (1, w2, ... , wn )
Esta expansin puede efectuarse en trminos de cualquiera de las n variables.
PR-MEC-ELT-LE
PR-MEC-ELT-LE
Demultiplexores
El propsito del circuito multiplexor es multiplexar r las n entradas de datos en la
salida de datos bajo el control de las entradas de seleccin. Un circuito que realiza
la funcin opuesta, es decir, que coloca el valor de una sola entrada de datos en
varias salidas, se llama demultiplexor.
Un demultiplexor puede implementarse con un circuito decodificador. Por ejemplo,
un decodificador de 2 a 4 de la Ilustracin 6 puede usarse como un demultiplexor
uno a cuatro.
Ilustracin 6: Decodificador 2 a 4
En este caso la entrada EN, funciona como la entrada de datos del demultiplexor y
las salidas y0 , , y3 funcionan como la salida de los datos. Las combinaciones de
las entradas w1w0 definen cual de las salidas se establecer al valor de EN.
En general, un circuito decodificador de n a 2 n puede usarse como un
demultiplexor uno a n, pero en la practica un decodificador no se usa como demux.
PR-MEC-ELT-LE
PR-MEC-ELT-LE
Escribiendo un TestBench
Un testbench es un modelo que es usado para verificar un modelo de hardware, el
cual tiene tres propsitos:
1. Generar estimulos para la simulacin ( formas de onda).
2. Aplicar estos estmulos a la entidad bajo prueba y monitorear las respuestas
de salida.
3. Comparar las respuestas de salida con los esperados.
Una forma tpica de un testbench la cual controla a un dispositivo bajo prueba es la
siguientes
entity TEST_BENCH is
end;
PR-MEC-ELT-LE
Patrn Repetitivo
A <= not A after 20 ns; --Se asume que la seal es de tipo bit
Una seal de reloj con periodo on-off variable puede ser creado usando una
sentencia proceso, por ejemplo:
PR-MEC-ELT-LE
process
constant OFF_PERIOD: TIME :=30 ns;
constant ON_PERIOD: TIME:= 20 ns;
begin
wait for OFF_PERIOD;
D_CLK <= '1';
wait for ON_PERIOD;
D_CLK <= '0';
end process;
PR-MEC-ELT-LE
Una forma alternativa de generar una seal de reloj con un periodo variable es
usando una seal de asignacin condicional:
Un conjunto secuencial de valores pueden ser generados por una seal usando
mltiples formas de onda en una asignacin de seal concurrente. Por ejemplo:
RESET <= '0','1' after 100ns, '0' after 180 ns, '1' after 210 ns;
TWO_PHASE: process
begin
CLK1 <= 'U' after 5 ns, '1' after 10 ns, 'U' after 20 ns, '0' after 25 ns;
PR-MEC-ELT-LE
-- Para std_logic
-- Para unsigned
entity xor2 is
port(
a,b : in bit;
z
: out bit
);
end xor2;
architecture arq1 of xor2 is
begin
z <= a xor b;
end arq1;
-- Para std_logic
-- Para unsigned
entity inv2 is
port(
a :in bit;
z :out bit
);
end inv2;
PR-MEC-ELT-LE
Ahora se elabora la estructura del archivo VHDL del generador de paridad, para
ello tengase en mente la Ilustracin 10.
-- Para std_logic
-- Para unsigned
entity Estructura1 is
port(
d : in bit_vector (8 downto 0);
par : out bit;
impar: out bit
);
end Estructura1;
architecture arq1 of Estructura1 is
--declaracion de los componentes
component xor2
port (a,b: in bit; z: out bit);
end component;
component inv2
port(a: in bit; z: out bit);
end component;
-- seales que conectan a las diferentes compuertas
signal e0,e1,e2,e3,f0,f1,h0,h1: bit;
begin
XE0: xor2 port map(d(0), d(1), e0);
XE1: xor2 port map(d(2), d(3), e1);
XE2: xor2 port map(d(4), d(5), e2);
XE3: xor2 port map(d(6), d(7), e3);
XF0: xor2 port map(e0, e1, f0);
XF1: xor2 port map(e2, e3, f1);
XH0: xor2 port map(f0, f1, h0);
Xpar: xor2 port map(h0, d(8), h1);
Ximpar: inv2 port map(h1, impar);
par <= h1;
end arq1;
PR-MEC-ELT-LE
-- Para std_logic
-- Para signed, unsigned
entity Estructura1_tb is
end
Estructura1_tb;
architecture Testbench of Estructura1_tb is
-- Component Declaration for the Unit Under Test (UUT)
component Estructura1
port(
d : in bit_vector (8 downto 0);
par : out bit;
impar: out bit
);
end component;
--Seales de conexion al componente
signal d : bit_vector(8 downto 0);
signal par,impar : bit;
begin
-- Instantiate the Unit Under Test (UUT)
uut: Estructura1 port map (d,par, impar);
d(0) <= not
d(1) <= not
d(2) <= not
d(3) <= not
d(4) <= not
d(5) <= not
d(6) <= not
d(7) <= not
d(8) <= not
end Testbench;
d(0)
d(1)
d(2)
d(3)
d(4)
d(5)
d(6)
d(7)
d(8)
after
after
after
after
after
after
after
after
after
1 ns;
2 ns;
4 ns;
8 ns;
16 ns;
32 ns;
64 ns;
128 ns;
256 ns;
Este banco de pruebas genera una secuencia de paridad par e impar, la cual a su
vez es complementaria, y que al visualizarla con gtkwave, se mostrarn las seales
de entrada y su respectiva paridad. Vase la Ilustracin 10.
Puede verse adems que en la simulacin en el panel SST la uut (unidad bajo
prueba unit under test) se encuentra compuesta por las seales internas
declaradas en el archivo testbench.
PR-MEC-ELT-LE
Desarrollo
Creacin de un proyecto en Quartus II
1. Da clic en File New Project Wizard y en la ventana que abre, da clic en
siguiente
PR-MEC-ELT-LE
3. Al dar clic en la secuencia File New, aparece una ventana como la que
se muestra a continuacin y presiona Finish.
4. Da clic en File New y
5. Del cuadro selecciona Desing Files VHDL File
PR-MEC-ELT-LE
PR-MEC-ELT-LE
'1'
'1'
'1'
'1'
after
after
after
after
10
20
40
80
ns,
ns,
ns,
ns,
'0'
'0'
'0'
'0'
after
after
after
after
'1' after
'1' after
15
30
60
90
ns;
ns;
ns;
ns;
4 ns;
8 ns;
PR-MEC-ELT-LE
PR-MEC-ELT-LE
PR-MEC-ELT-LE
23.Para una visualizacin adecuada de las seales, Time >> Zoom >>
Zoom best fit
PR-MEC-ELT-LE
PR-MEC-ELT-LE
Compilando el circuito
37.Para la compilacin se presiona el botn RUN y el cual har que se inicie
el proceso de compilacin y sntesis
# Good, verified.
$ sudo jtagconfig
ahora resta correr el jtagconfig como usuario normal y verificar que as lo haga,
cierra el Quartus y abrelo de nueva cuenta para trabajar.
Se puede revisar el link http://iemontiel.blogspot.mx/2015/07/grabando-un-cpldaltera-en-manjaro.html donde existe una explicacin a mayor detalle.
PR-MEC-ELT-LE
Tabla 3
--------------------------------------------------------------------------------- Company : ITS Teziutlan
-- Engineer: Miguel Montiel Martinez
--- Create Date:
17/07/2015 01:16:38
-- Project Name:
mux4_1b
-- Module Name:
mux4_1b.vhd
-- Description:
--- Additional Comments:
-------------------------------------------------------------------------------library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
entity mux4_1b
port(
d
s
y
);
end mux4_1b;
-- Para std_logic
-- Para unsigned
is
: in bit_vector(3 downto 0);
: in bit_vector(1 downto 0);
: out bit
Tabla 4
--------------------------------------------------------------------------------------- Company : ITS Teziutlan
---- Engineer: Miguel Montiel Mtz
------- Create Date:
17/07/2015 01:16:39
---- Project Name:
mux4_1b
---- Module Name:
mux4_1b_tb.vhd
---- Description:
------- Additional Comments:
--------------------------------------------------------------------------------------ENTITY mux4_1b_tb is
--END mux4_1b_tb;
---ARCHITECTURE muxtb OF mux4_1b_tb is
-- COMPONENT mux4_1b
-PORT(
-d
: in bit_vector (3 downto 0);
PR-MEC-ELT-LE
ns;
8 ns;
16 ns;
ns;
24 ns;
PR-MEC-ELT-LE
Tabla 5
--------------------------------------------------------------------------------- Company : ITS Teziutlan
-- Engineer: Miguel Montiel Mtz
--- Create Date:
18/07/2015 13:00:54
-- Project Name:
mux4_1c
-- Module Name:
mux4_1c.vhd
-- Description:
--- Additional Comments:
-------------------------------------------------------------------------------library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
entity mux4_1c
port(
d
s
y
);
end mux4_1c;
-- Para std_logic
-- Para unsigned
is
: in bit_vector(3 downto 0);
: in bit_vector(1 downto 0);
: out bit
=>
=>
=>
=>
y
y
y
y
<=
<=
<=
<=
d(0);
d(1);
d(2);
d(3);
end arq1;
Tabla 6
--------------------------------------------------------------------------------- Company : ITS Teziutlan
-- Engineer: Miguel Montiel Mtz
--- Create Date:
18/07/2015 13:00:54
-- Project Name:
mux4_1c
-- Module Name:
mux4_1c_tb.vhd
-- Description:
--- Additional Comments:
-------------------------------------------------------------------------------library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
-- Para std_logic
-- Para signed, unsigned
entity mux4_1c_tb is
end
mux4_1c_tb;
PR-MEC-ELT-LE
);
MAP (d,s,y);
d(0) after 1
d(1) after 2
d(2) after 4
d(3) after 8
ns;
ns;
ns;
ns;
PR-MEC-ELT-LE
-- Para std_logic
-- Para unsigned
entity mux2_1 is
port(
d : in bit_vector(1 downto 0);
s : in bit;
-- seleccion
y : out bit --salida
);
end mux2_1;
-- datos
-- Para std_logic
-- Para unsigned
entity Funcion1 is
port(
w1,w2,w3 : in bit;
f
: out bit
);
end Funcion1;
architecture arq1 of Funcion1 is
--declaracin de componentes
PR-MEC-ELT-LE
-- datos
-- Para std_logic
-- Para signed, unsigned
entity Funcion1_tb is
end
Funcion1_tb;
architecture Testbench of Funcion1_tb is
-- Component Declaration for the Unit Under Test (UUT)
component Funcion1
port(
w1,w2,w3 : in bit;
f
: out bit
);
end component;
signal w1,w2,w3,f : bit;
begin
-- Instantiate the Unit Under Test (UUT)
uut: Funcion1 port map (w1,w2,w3,f);
w1 <= not w1 after 1 ns;
w2 <= not w2 after 2 ns;
w3 <= not w3 after 4 ns;
end Testbench;
PR-MEC-ELT-LE
PR-MEC-ELT-LE
Actividades
1. Elabora un banco de pruebas para el multiplexor bajo los siguientes
criterios de simulacin
1. Cada canal de entrada de datos del multiplexor ser seleccionado en
una secuencia ascendente al aplicar un conteo binario a las entradas
de seleccin.
2. Cada entrada de datos, deber ser fcilmente reconocida al tener
una firma en su forma de onda.
3. La forma de onda de salida, deber desplegar una serie nica de
formas de onda, la cual indica la seleccin del canal de datos en una
correcta secuencia
4. Los tiempos propuestos son:
100 us
S[1..0]
25 us
D3
1 us
D2
2 us
D1
0.5 us
D0
4 us
Funcin
Valor solicitado
Respuesta
F( A , B , C , D, E , F , G)=(0,3,5,23,56,77,89,100,101) F(23)
F(45)
F(34)
F(88)
PR-MEC-ELT-LE
F(100)
2
F( A , B , C , D)=(0,1,2,5,7,12,15)
F(0)
F(7)
F(15)
F(2)
BIBLIOGRAFIA
Bhasker, J. (1999). A VHDL Primer (Vol. 1). Prentice Hall.
Brown, S. A. (2006). Fundamentos de lgica digital con diseo VHDL (Vol. 1).
McGraw-Hill.
Dueck, R. (2011). Digital Design with CPLD Applications and VHDL (2 edition).
Clifton Park, NY: Delmar Cengage Learning.
Jara, J. A., & Maxinez, D. G. (2003). VHDL El Arte de Programar Sistemas Digitales.
Cecsa.
Morillo, N. (2006, February 22). Fundamentos Sistemas Digitales. Retrieved
December 13, 2010, from about:blank
PR-MEC-ELT-LE
PR-MEC-ELT-LE