Está en la página 1de 9

Tecnológico Nacional de México

Instituto Tecnológico de San juan del Rio


INGENIERÍA EN ELECTRONICA

Formato para prácticas de laboratorio

NOMBRE DE LA ASIGNATURA

Diseño Digital con VHDL

Practica Duración
Nombre de la Practica
No. (Horas)

2.2 Luces traseras 4

Fecha de entrega: 06/11/2020

Integrantes de equipo
Martinez Barrera Yamin Yoqsan
No. De control: 18590353

1 Introducción

Se pretende diseñar un autómata que simule las luces traseras de un viejo modelo thunderbird el cual
tiene arreglos de tres luces traseras para indicar el giro a la izquierda y la derecha, las cuales flashean
en patrones únicos.

El diseño es con base al comportamiento, por lo cual no es necesario hacer diagramas de ningún tipo
ya que se conocen las secuencias de las luces y las condiciones a las que obedecen.

Por esta razón es que se comienza por diseñar un listado VHDL respecto al comportamiento y con las
condiciones planteadas.

Y finalmente se implementa en una tarjeta FPGA con la ayuda de algunos programas y una tarjeta de
desarrollo amiba 2.

2 Objetivos (Competencias)
✓ Soluciona problemas de una aplicación común.
✓ Implementa un diseño en una tarjeta FPGA.

✓ Desarrolla la capacidad de rrealizar un listado VHDL respecto al comportamiento.


✓ Utiliza sentencias secuenciales en VHDL.
Tecnológico Nacional de México
Instituto Tecnológico de San juan del Rio
INGENIERÍA EN ELECTRONICA

Formato para prácticas de laboratorio

3 Fundamentación

LAS LUCES DIRECCIONALES


Son aquellos mecanismos luminosos intermitentes dispuestos en la parte delantera y trasera del
vehículo que sirven para indicar a los demás conductores de la vía el cambio de dirección en nuestro
camino. Estas se activan mediante una palanca dispuesta en la parte izquierda superior del
volante. Subiendo la palanca se indica la inminencia de un giro a la derecha y bajándola, un giro a la
izquierda.

4 Procedimiento (Descripción)
A Equipo Necesario Material
1 TARJETA DE DESARROLLO AMIBA 2
1 COMPUTADORA
✓ Software de diseño ISE WebPACK
✓ Software INTegra de intesc
1 CABLE MICRO USB

B Desarrollo de la Practica
Para comenzar a desarrollar la práctica, lo primero es hacer un análisis del planteamiento del problema,
en este caso se sabe lo siguiente:

Diseñe una red secuencial para controlar las luces.

La red tiene tres entradas, LEFT, RIGHT y HAZ. LEFT y RIGHT vienen de la palanca del conductor
✓ No pueden ser 1 al mismo tiempo.
✓ Cuando LEFT = 1, las luces se encienden con el patrón LA, LA LB, LA LB LC, ninguna y se repite la
secuencia.
✓ Cuando RIGHT = 1, la secuencia es similar.
✓ Si se conmuta la palanca de LEFT a RIGHT (o viceversa) a la mitad de una secuencia, la red se
deberá conmutar a IDLE (todas las luces apagadas) de inmediato y entonces iniciar la nueva
secuencia.
✓ HAZ se activa con el conmutador de intermitentes:
✓ Cuando HAZ = 1, las seis luces de ambos lados deben flashear al mismo tiempo.
✓ HAZ tiene precedencia sobre LEFT y RIGHT, incluso si esta activada la palanca.

Ya conociendo el comportamiento y las condiciones en las que funciona, se procede a realizar el listado
VHDL correspondiente

LISTADO VHDL
El listado se comienza agregando las librerías, los puertos (entradas y salidas) necesarias para el listado.
Las librerías IEEE.STD_LOGIC_ARITH.ALL y IEEE.STD_LOGIC_UNSIGNED.ALL son usadas más adelante
para operaciones aritméticas de un divisor de frecuencia que permite utilizar el oscilador implementado
en la tarjeta de desarrollo amiba 2
Tecnológico Nacional de México
Instituto Tecnológico de San juan del Rio
INGENIERÍA EN ELECTRONICA

Formato para prácticas de laboratorio

--LIBRERIAS
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity LUCES_T is
port(
L_R : IN STD_LOGIC_VECTOR (1 downto 0);
HAZ,CLK : IN STD_LOGIC;
C_LEFT,C_RIGHT : OUT STD_LOGIC_VECTOR (2 downto 0);
LED : INOUT STD_LOGIC
);
end LUCES_T;
En la segunda parte se encarga de poder utilizar el oscilador de la tarjeta de desarrollo amiba 2.
Utilizando un divisor de frecuencia.

El divisor de frecuencia funciona simple, cada que se tenga un flanco de subida al contador se le suma
1 y cuando esta cuenta llega a igualarse a la constante se hacen dos cosas, la primera se reinicia el
contador y la segunda envía un pulso de salida que será necesario para la siguiente parte, este pulso
ayudara para hacer las transiciones entre estados.

Pero además también será posible visualizar los pulsos que envié el reloj a través de un led (hablando
a grandes rasgos).

architecture ARCH_LUCES_T of LUCES_T is


constant escala: INTEGER := 30000000;
signal contador: INTEGER range 0 to escala := 0;
signal estado_led: STD_LOGIC := '1';
type estados is (A,B,C,D);
type estados1 is (A1,B1,C1,D1);
type estados2 is (A11,B11);
signal w : estados := A;
signal y : estados1 := A1;
signal m : estados2 := A11;
BEGIN
process(CLK) --DIVISOR DE FRECUENCIA
BEGIN
if RISING_EDGE(CLK) then
contador <= contador +1;
if contador = escala then
contador <= 0;
estado_led <= not estado_led;
end if;
end if;
end process;
process (estado_led)-- INDICADOR DE PULSOS
BEGIN
led <= estado_led;
end process;
Tecnológico Nacional de México
Instituto Tecnológico de San juan del Rio
INGENIERÍA EN ELECTRONICA

Formato para prácticas de laboratorio


Y esta última parte, la más importante que es la que se encarga de hacer las secuencias de las luces en
conjunto de las condiciones que se indican al inicio. Al principio se puede ver que esta parte del listado
se encarga de las luces intermitentes “HAZ” .

Posteriormente se puede observar que sigue la parte del listado que se encarga de ejecutar la secuencia
de las luces izquierdas cuando se cumplen ciertas condiciones, la parte que se encarga de la secuencia
de las luces derechas y al final están las indicaciones si no se usa la palanca o cualquier otro caso. Al
unir estas 4 partes con unas cuantas condiciones podemos obtener un solo listado que tenga las
funciones como lo indica el enunciado del problema.

process (HAZ,LED,L_R,w,y,m)
begin
if (LED'event and LED = '1' ) then

if (HAZ = '1') then -- INTERMITENTES


m <= A11;
case(m) is
when A11 => m <= B11;
C_LEFT <= "000"; C_RIGHT <= "000";
when B11 => m <= A11;
C_LEFT <= "111"; C_RIGHT <= "111";
end case;
else
w <= A;
y <= A1;
CASE (L_R) IS
WHEN "10" => -- SECUENCIA IZQUIERDA
case (w) is
when A => w <= B;
C_LEFT <= "000"; C_RIGHT <= "000";
when B => w <= C;
C_LEFT <= "001"; C_RIGHT <= "000";
when C => w <= D;
C_LEFT <= "011"; C_RIGHT <= "000";
when D => w <= A;
C_LEFT <= "111"; C_RIGHT <= "000";
end case;
WHEN "01" => -- SECUENCIA DERECHA
case (y) is
when A1 => y <= B1;
C_RIGHT <= "000"; C_LEFT <= "000";
when B1 => y <= C1;
C_RIGHT <= "100"; C_LEFT <= "000";
when C1 => y <= D1;
C_RIGHT <= "110"; C_LEFT <= "000";
when D1 => y <= A1;
C_RIGHT <= "111"; C_LEFT <= "000";
end case;
WHEN "11" => -- LEFT Y RIGTH NO PUEDEN SER '1' AL MISMO TIEMPO
C_LEFT <= "000"; C_RIGHT <= "000";
Tecnológico Nacional de México
Instituto Tecnológico de San juan del Rio
INGENIERÍA EN ELECTRONICA

Formato para prácticas de laboratorio

WHEN OTHERS => -- LEFT Y RIGHT SON '0'


C_LEFT <= "000"; C_RIGHT <= "000";
END CASE;
end if;
end if;

end process;
end ARCH_LUCES_T;

Una vez terminado el listado, es necesario implementarlo en la tarjeta FPGA, pero antes, es necesario
crear el archivo para hacerlo.

IMPLEMENTACIÓN EN UNA TARJETA FPGA

✓ Se inicia el programa “project navigator” de xilinx

✓ Se comienza creando un nuevo proyecto.

✓ Después, en la siguiente ventana, se seleccionan las características de la tarjeta FPGA.


Tecnológico Nacional de México
Instituto Tecnológico de San juan del Rio
INGENIERÍA EN ELECTRONICA

Formato para prácticas de laboratorio

✓ Una vez creado el proyecto se crea una nueva fuente “VHDL module”, se siguen las Indicaciones,
en la siguiente ventana se escribe el nombre de la entidad, arquitectura, más abajo se escribe
el nombre de las entradas y salidas.

✓ Se copia el resto del listado y se verifica la sintaxis.

✓ Se crea una nueva fuente “implementation constraints file”, se abre un nuevo archivo y se
escribe la asignación de los pines para los switch, puertos de salida y/o entrada que se requieren.
Tecnológico Nacional de México
Instituto Tecnológico de San juan del Rio
INGENIERÍA EN ELECTRONICA

Formato para prácticas de laboratorio

✓ Se corre “implement desing” y “generate programming”

✓ Ahora se abre el programa “integra” de la tarjeta FPGA

✓ Ya dentro del programa, se conecta la tarjeta con la computadora usando el cable USB, se
enciende la tarjeta, se vincula y carga el archivo “.bit” que se generó con “xilinx” (este archivo
estará dentro de la carpeta de proyecto que creamos al inicio).
Tecnológico Nacional de México
Instituto Tecnológico de San juan del Rio
INGENIERÍA EN ELECTRONICA

Formato para prácticas de laboratorio


✓ Por último, se selecciona la memoria en la que se desea almacenar y se programa.

5 Resultados y conclusiones
Después de realizar la práctica correspondiente, llegue a la conclusión de que muchas veces para
hacer un listado en VHDL es mejor guiarse con el comportamiento para hacer el diseño que hacerlo
con los diagramas, tiene ventajas como realizar la practica en menos tiempo y entender mejor el
funcionamiento ya que nosotros mismos lo vamos describiendo.

Pero, así como tiene sus ventajas, también cuenta con desventajas. Una de las mayores con las que
me encontré fue cuando no entendía como estaba interpretando el listado el programa. Por razones
como esa me demore mas tiempo, pero al final se pudo solucionar con la información de la referencia

Al principio yo me imaginé esta practica mas sencilla, pero al tratar de hacerla me costó más trabajo,
además de que tuve que pensar en cómo adaptar problemas mecánicos a los elementos con los que
cuenta la tarjeta.

Y por último quiero agregar que me gusto la practica porque vi esto como una aplicación real y muy
común en la vida diaria, algo que no sucede muy a menudo en las practicas

6 Anexos
Tecnológico Nacional de México
Instituto Tecnológico de San juan del Rio
INGENIERÍA EN ELECTRONICA

Formato para prácticas de laboratorio

7 Referencias

• Stephen Brown y Zvonko Vranesic, (2006). Fundamentos de lógica digital con diseño
VHDL, segunda edición. México, México: Mcgraw-hill/interamericana editores, S.A. De
C.V.
• Marcos Sánchez-Élez (2014), Introducción a la programación en VHDL, Facultad de Informática
Universidad Complutense de Madrid.

Link del video (click para abrir):


https://drive.google.com/file/d/15qIme73YXAtSew64h2Q3_JEenRm
BtvSo/view?usp=sharing

También podría gustarte