RELOJ Y CONTADOR CON TARJETA SPARTAN.
Enviado por Raul Rivera • 23 de Abril de 2016 • Trabajo • 16.213 Palabras (65 Páginas) • 204 Visitas
[pic 1][pic 2]UNIVERSIDAD NACIONAL DE SAN AGUSTIN
INGENIERIAS DE PRODUCCION Y SERVICIOS
[pic 3]
[pic 4]INGENIERÍA ELECTRÓNICA
MICROELECTRONICA
PROYECTO FINAL
ALUMNO:
- RIVERA VERA RAUL PAOLO CUI: 20110825
AREQUIPA-2016
INDICE
CONTADOR Y RELOJ VISUALIZADOS EN LCD…………………………………3
Descripción del proyecto………………………………………..…………….3
Desarrollo de la Programación en general………………………………………….3
ANEXOS…………………………………………………………………………….......5
Programación……………………………………………………………………5
Componente 1……………………………………………………………………9
Componente 2…………………………………………………………………..22
Conexión con la placa spartan3e……………………………………………….24
Datasheet del LCD……………………………………………………………...25
Observaciones………………………………………………………………………..25
Conclusiones …………………………………………………………………………25
Bibliografía…………………………………………………………………………….26
CONTADOR Y RELOJ VISUALIZADOS EN LCD
Descripción del proyecto
El contador electrónico digital es muy útil por ello en la actualidad estamos rodeados de dispositivos que disponen de algún tipo de contador digital, incluso en la mayoría de los electrodomésticos vienen equipados con uno.
En el presente proyecto se implementa un el desarrollo de un lCD en el lenguaje de programación VHDL con la aplicación de una librería para realizarlo como contador o como reloj y para implementarlo usando la tarjeta spartan3E, para el respectivo uso que deseen los lectores.
Desarrollo de la Programación en general
En la primera parte de nuestro programa se define la librería para el uso del lcd con sus respectivos componentes que para nuestro caso son 2.; los cuales veremos más adelante.
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
use IEEE.std_logic_unsigned.all;
use IEEE.std_logic_arith.all;
USE WORK.COMANDOS_LCD_REVB.ALL;
Para la entidad definimos nuestras entradas “IN” y salidas “OUT” dependiendo del rango que van a ocupar ya sea “STD_LOGIC”, “BIT” o “STD_LOGIC_VETOR”; y más adelante también vamos a definir señales que nos van a servir de ayuda.
PORT(CLK: IN STD_LOGIC;
RS : OUT STD_LOGIC; --
RW : OUT STD_LOGIC; --
ENA : OUT STD_LOGIC; --
CORD : IN STD_LOGIC; --
CORI : IN STD_LOGIC; --
DATA_LCD: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --
BLCD : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) --; --
);
end LIB_LCD_INTESC_REVB;
Seguidamente llamamos a los componentes que usamos haciendo las conexiones respectivas para la LCD, para continuar con la programación del código donde se indica las variables ya antes definidas y su funcionamiento; que implica a la variable UNIDADES incrementar en “1”, de similar manera la variable DECENAS aumentará en “1” cuando la variable unidades llegue a “9”; y bajo el mismo principio la variable CENTENAS se incrementará en “1” cuando la variable DECENAS presente el número“6”. En la misma programación se indica el número máximo al que llegaran contando las variables y regresaran a “0” volviendo a comenzar la cuenta; así se indica, que la variable UNIDADES contarán como máximo hasta “9”, la variable DECENAS contaran hasta “6” y las variables CENTENAS llegaran a contar hasta “6”. Sin embargo el número se puede cambiar en la programación, así como también aumentar las variables a MILLARES, etc., según sea el uso del reloj.
En esta etapa se puede cambiar la programación, manteniendo el formato ya explicado, para obtener un contador, acumulador, un reloj, etc. para el objetivo que se tenga en mente.
PRCESS (CLK)
BEGI
IF RISING_EDGE(CLK) THEN CONTA_DELAY <= CONTA_DELAY+1;
IF CONTA_DELAY = DELAY_FIN THEN
CONTA_DELAY <= 0;
UNIDADES <= UNIDADES + 1;
IF UNIDADES = 9 THEN
UNIDADES <=0;
DECENAS <= DECENAS + 1;
IF DECENAS = 6 THEN
DECENAS <=0;
CENTENAS <= CENTENAS + 1;
IF CENTENAS = 6 THEN
...