sistemas digitales - practica 5

6

Click here to load reader

Upload: luis-reyes

Post on 29-Jun-2015

567 views

Category:

Technology


6 download

DESCRIPTION

Programación de multiplexores en VHDL

TRANSCRIPT

Page 1: Sistemas Digitales - Practica 5

UNIVERSIDAD AUTONOMA

DE QUERETARO

FACULTAD DE INFORMATICA

ING. EN TELECOMUNICACIONES

SISTEMAS DIGITALES

PRACTICA No.5

“Multiplexores en VHDL”

Alumnos:

Ramírez Cruz Uriel Exp: 215488

Reyes Cruz Luis Ángel Exp: 163986

Paniagua Martínez Jonathan Exp: 215486

Uribe García Alejandro Exp: 215484

FECHA: 23/09/11

Page 2: Sistemas Digitales - Practica 5

Objetivo Aprender el funcionamiento de los multiplexores para poder implementarlos mediante VHDL,

realizar el código necesario para hacer esta implementación en la GAL y aprender a minimizar

funciones con mapas K pero especialmente para multiplexores.

Antecedentes

Los Multiplexores son circuitos Combinacionales con varias entradas y una única salida de datos, están

dotados de entradas de control capaces de seleccionar una, y sólo una, de las entradas de datos para

permitir su transmisión desde la entrada seleccionada hacia dicha salida.

En el campo de la electrónica el multiplexor se utiliza como dispositivo que puede recibir varias entradas y

transmitirlas por un medio de transmisión compartido. Para ello lo que hace es dividir el medio de

transmisión en múltiples canales, para que varios nodos puedan comunicarse al mismo tiempo.

Material Galaxy previamente instalado Y Active Sim

Desarrollo Tenemos la función con la que vamos a trabajar:

F4(0, 1, 2, 3, 4, 8, 10, 14, 15)

Y se minimizara por mapas K de manera que la función F4(x₄, X₃, X₂, X₁) se implemente como

multiplexores teniendo como S₁ = X₄ y S₂= X₃ para obtener los valores de I₀, I₁, I₂, I₃. Para

posteriormente pasar a programar en VHDL.

Para programar esa función en VHDL usaremos vectores lógicos para S y para las I también pero

estas tendrán que ir como señales intermedias.

A: in std_logic_vector(3 downto 0); -- <- Como se muestra aqui

Y el programa tendrá que tener una estructura CASE para los valores de S. Ejemplo:

Case señal is

When opcion1 => grupo_de_asignaciones_1;

When opcion2 => grupo_de_asignaciones_2;

Page 3: Sistemas Digitales - Practica 5

When others => grupo_de_asignaciones_por_omision;

End case;

Por último se simulara para ver los resultados y comprobar que el código fue correcto.

Resultados

X₂X₁ X₃X₄

00 01 11 10

00 1 1 1 1

01 1

11 1 1 1

10 1 1

Reduciendo por medio de este mapa K tenemos las siguientes subfunciones cuando como S₁ = X₄ y

S₂= X₃

I₀= 1

I₁= X₂’X₁’

I₂= x₁’

I₃= X₂

Por lo tanto podemos observar que Y = S₁ ‘S₂’ I₀ + S₁ ‘S₂ I₁ + S₁ S₂’ I₂ + S₁ S₂ I₃

Ya con estos datos procedemos a realizar el código en VHDL y obtuvimos lo siguiente:

--PRACTICA 4 : MULTIPLEXORES

Library IEEE;

USE IEEE.std_logic_1164.all;

--Programacion Estructura Case

I₃

I₀

I₁

I₄

Page 4: Sistemas Digitales - Practica 5

--De esta manera solo se usa el 9% de los recursos

ENTITY MUX_4_1_CASE is

PORT (

S: in std_logic_vector (1 downto 0);

X1,X2:in std_logic;

Y: out std_logic

);

END MUX_4_1_CASE;

ARCHITECTURE MUX_4_1_CASE OF MUX_4_1_CASE IS

SIGNAL I: std_logic_vector(3 downto 0);

BEGIN

I(0) <= '1';

I(1) <= (not X2) and (not X1);

I(2) <= (not X1);

I(3) <= X2;

PROCESS(S,I)

BEGIN

CASE (S) IS

WHEN "00" => Y <= I(0);

WHEN "01" => Y <= I(1);

WHEN "10" => Y <= I(2);

WHEN OTHERS => Y <= I(3);

END CASE;

END PROCESS;

END MUX_4_1_CASE;

Page 5: Sistemas Digitales - Practica 5

Procediendo a simularlo para comprobar los resultados tenemos las imágenes de las simulaciones

parciales que realizamos donde se puede comprobar que la función programada esta correcta con

respecto a la función dada.

Primera parte de la simulación donde se puede ver que de 0 hasta 4 da en alto y 5 y 6 en bajo.

En la segunda parte de la simulación nos damos cuenta de que en el 7 está en bajo pero en el 8

cambia a alto y en el 9 vuelve a bajar para después subir en el 10 y en el 11 vuelve a estar en bajo.

Page 6: Sistemas Digitales - Practica 5

En la última parte de la simulación nos damos cuenta de que desde el 11 hasta el 13 está en bajo y

en el 14 y 15 cambia a alto y así tenemos que la función se programó correctamente y podemos

ahora implementarlo físicamente en la GAL lo que en esta práctica no se realizó.

Conclusión Aprendimos en esta práctica varias cosas como:

El uso de vectores en VHDL, el funcionamiento de los multiplexores y sus aplicaciones así como

una forma más fácil de minimizar por medio de mapas K.

Y todo esto será la base para las practicas posteriores ya que será más común el uso de vectores

que aparte de tener una forma más ordenada del código, también nos facilita algunas

operaciones.