Anda di halaman 1dari 44

Universidad Mayor de San Andrs Facultad de Ingeniera Carrera Ingeniera Electrnica

Proyecto de Final de Curso ETN 601 - Sistemas Digitales I

DISEO E IMPLEMENTACIN DE UN RELOJ DIGITAL

Por: Amrico lvarez Surci

Docente: Roberto Oropeza Crespo

La Paz Bolivia Diciembre 2010

INDICE GENERAL
INDICE DE FIGURAS INDICE DE TABLAS RESUMEN CAPITULO 1: ANTECEDENTES Y PROPSITOS
1.1. Introduccin 1.2. Objetivos 1.2.1. Objetivo principal 1.2.2. Objetivos secundarios 1.3. Metodologa IV V VI

1
1 2 2 2 2

CAPITULO 2: DESARROLLO TERICO


2.1. Elementos del reloj digital 2.1.1. Codificadores, decodificadores 2.1.2. Contadores 2.1.3. Generador de pulsos (multivibrador-astable) 2.3. Descripcin de Hardware 2.3.1. VHDL i) Elementos Bsicos VHDL ii) Estructura Bsica de un archivo fuente en VHDL

3
5 5 8 11 13 13 14 16

CAPITULO 3: MECANISMO DE DISEO


3.1. SS: Segundos 3.2. MM: Minutos 3.3. HH: Horas 3.4. Ajuste de hora 3.5. Descripcin VHDL ii

21
21 22 23 24 25

CAPITULO 4: SIMULACIONES Y PRUEBAS EN LABORATORIO


4.1. Simulacin plano circuital usando Proteus 4.2. Simulacin VHDL usando Quatus2

30
30 32

CAPITULO 5: CONCLUSIONES Y MEJORAS


5.1. Conclusiones 5. 2. Mejoras

35
35 35

6. BIBLIOGRAFA 7. ANEXOS
7.1. Tarjeta Cyclone II- DE2 de Altera

36 36
36

iii

INDICE DE FIGURAS
Figura 1: Reloj Digital Figura 2: Reloj Atmico NIST-F1, EE.UU. Figura 3: Decodificador Bsico Figura 4: Diagrama de Pines CI 7447 Figura 5: Contador Sncrono Modulo-3 Figura 6: Diagrama de Tiempos Contador Flanco descendente Figura 7: Contador Asncrono Figura 8: Multivibrador Astable con transistores Figura 9: Multivibrador astable con CI 555 Figura 10: Ejemplo de Entity Figura 11: Diagrama de bloques del Segundero Figura 12: Diagrama de bloques del decodificador Figura 13: Diagrama de bloques del Minutero Figura 14: Diagrama de bloques del Horero Figura 15: Plano Circuital completo del Reloj digital Figura 16: cada 60 Pulsos de 1Hz, se enva un Impulso (clock del minutero) Figura 17: cada 60 impulsos del minutero, se enva un Impulso (clock del horero) Figura 18: Segmento de cuenta segundero y reset Figura 19: Segmento, ajustando horas y minutos

iv

INDICE DE TABLAS
Tabla 1: Decodificador binario a display 7 segmentos nodo comn Tabla 2: tabla de verdad de CI 7447 Tabla 3: Secuencia de Cuenta de CI 7490 Tabla 4: Tabla de verdad de CI 7490 Tabla 5: Codigo VHDL reloj digital Tabla 6: Numero decimal mostrado en quartus2 que representa los 7 bits, del decodificador

Resumen
Con la utilizacin de contadores, decodificadores y varios otros componentes digitales se implementara en laboratorio un reloj que nos mostrara horas, minutos segundos, adems se implementara este mismo en una tarjeta de estudio DE2, utilizando lenguaje de descripcin de hardware VHDL. Se visualizara el reloj en displays de 7 segmentos, contara con la funcionalidad de modificar la hora, adems que contara con un clock de 1 segundo.

vi

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

CAPITULO 1: ANTECEDENTES Y PROPSITOS

1.1. Introduccin
En los tiempos actuales es masiva la utilizacin de Sistemas Digitales ya que proporcionan una serie de ventajas con respecto a la electrnica analgica, y ha sido utilizada incluso en dispositivos pequeos como un reloj, el cual ha pasado del uso de las manecillas para la indicacin de la hora a proporcionar una visualizacin numrica de la misma gracias a la electrnica digital. El reloj digital es un proyecto ampliamente conocido y realizado en cursos bsicos de sistemas digitales, con este proyecto se pretende demostrar todo lo aprendido en dicho curso. La bibliografa que se puede encontrar sobre este tema es extensa, el aadido de este trabajo es que aparte de disear el reloj con circuitos integrados comunes, se utiliza la descripcin de hardware para describir nuestro reloj digital.

Figura 1: Reloj Digital

Amrico lvarez Surci

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

1.2. Objetivos
1.2.1. Objetivo principal
Diseo e implementacin de un Reloj digital utilizando componentes digitales bsicos y descripcin de este, utilizando VHDL.

1.2.2. Objetivos secundarios


Descripcin de diferentes contadores digitales para la utilizacin en segundero, minutero y horas. Manejo de decodificadores de binario a 7 segmentos (display). Descripcin en un solo modulo, para representar el reloj.

1.3. Metodologa
La elaboracin de este proyecto tiene dos etapas importantes: hardware y el software En la parte de hardware nos enfocaremos en el diseo utilizando diferentes circuitos integrados bsicos, conectados de tal forma que emulen el funcionamiento de un tpico reloj digital. Y cuando nos referimos a software utilizaremos el paquete informtico Quatus-2, para realizar la descripcin de hardware utilizando el lenguaje vhdl, para describir nuestro circuito reloj digital. Adems para correcciones si se lo amerita se empleara el software Proteus, para la simulacin de nuestro circuito a montar en laboratorio.

Amrico lvarez Surci

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

CAPITULO 2: DESARROLLO TERICO

Se denomina reloj a un instrumento que permite medir el tiempo. Existen diversos tipos, que se adecuan segn el propsito: Conocer la hora actual (reloj de pulsera (automtico o 'de cuerda'), reloj de bolsillo, reloj de saln o pared, cronmetro) Medir la duracin de un suceso (crongrafo, reloj de arena) Sealar las horas por sonidos parecidos a campanadas o pitidos (reloj de pndulo, reloj de pulso con bip a cada hora) Activar una alarma en cierta hora especfica (reloj despertador)

Los relojes se utilizan desde la antigedad. A medida que ha ido evolucionando la ciencia y la tecnologa de su fabricacin, han ido apareciendo nuevos modelos con mayor precisin, mejor prestancia y menor costo de fabricacin. Es quiz uno de los instrumentos ms populares que existen actualmente y casi todas las personas disponen de uno o varios relojes personales de pulsera. Mucha gente, adems de la utilidad que los caracteriza, los ostenta como smbolo de distincin y estatus social. La mayor precisin conseguida hasta ahora es la del ltimo reloj atmico desarrollado por la Oficina Nacional de Normalizacin (NIST) de los EE.UU., el NIST-F1, puesto en marcha en 1999, es tan exacto que tiene un margen de error de solo un segundo cada 20 millones de aos. A pesar de ello, los fsicos continan experimentando con nuevas variaciones, como los msers de hidrgeno (Townes), los de bombeo ptico de rubidio (Kasler) o los recientemente propuestos de mercurio, que permitiran alcanzar mayor precisin. En agosto de 2004 del NIST hicieron la primera demostracin de un reloj atmico del tamao de un circuito integrado. Esto representa un reloj cien veces menor que cualquier otro construido hasta la fecha y con un consumo de slo 0,079 vatios. Un reloj digital es un tipo de reloj que basa su funcionamiento en la electrnica digital para marcar el tiempo. La invencin, en 1956, del reloj digital supuso una gran revolucin en el campo de la relojera porque se consigui fabricar relojes mucho ms baratos y precisos que los de funcionamiento mecnico.

Amrico lvarez Surci

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

Para representar la hora, muchos relojes digitales usan los siete segmentos LED (los que se usan en el proyecto), VFD o LCD, para formar cada uno de los nmeros. Estos relojes tambin incluyen otros elementos, para indicar si la hora es por la maana AM o por la tarde PM, as como si est activada la alarma y a qu hora est programada. Los relojes digitales son muy pequeos, tiles y baratos. Por estas razones se han incorporado a la mayora de equipos electrnicos. La ruptura principal con el reloj mecnico es que se eliminaron todos los mecanismos que haba en el interior de la caja de los relojes y fueron sustituidos por unos circuitos electrnicos alimentados por una pequea batera y que facilitaba la lectura directa del tiempo. Debido a lo barato que son los relojes digitales ya se han impuestos en muchas aplicaciones, y as la mayora de despertadores son ya digitales, los relojes que hay en electrodomsticos, ordenadores, telfonos celulares, automviles, etc. Asimismo, muchos de los relojes de pulsera que se utilizan son digitales si bien en el campo de los relojes de pulsera se han impuesto los relojes electrnicos analgicos de cuarzo.

Figura 2: Reloj Atmico NIST-F1, EE.UU. Amrico lvarez Surci 4

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

2.1. Elementos del reloj digital


Un reloj electrnico es un reloj en el que la base de tiempos es electrnica o electromecnica y la divisin de frecuencia, tambin. La exactitud del reloj depende de la base de tiempos, que puede consistir en un oscilador o en un adaptador que, a partir de una referencia, genera una seal peridica. El divisor de frecuencia es un circuito digital formado por una sucesin de contadores hasta obtener una frecuencia de 1 Hz, que permite mostrar segundos. Si se quiere mostrar dcimas, la divisin se detiene al llegar a los 10 Hz. Esta frecuencia pasa al mdulo de presentacin, que puede ser electrnico o mecnico, donde otros divisores van separando los segundos, minutos y horas para presentarlas mediante algn tipo de display.

2.1.1. Codificadores, decodificadores

Decodificador: Se trata de un dispositivo con n entradas y 2n salidas donde en funcin de la combinacin binaria de sus entradas, una y slo una de las salidas se activa. Es decir, convierte un cdigo binario de entrada en cdigo "1-entre-n. Su smbolo para el caso DEC 2:4 con habilitacin y salidas activa en alta, su tabla de verdad y sus ecuaciones de cada salida se muestran a continuacin:

Figura 3: Decodificador Bsico Amrico lvarez Surci 5

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

Decodificador binario 4bits a display 7 segmentos nodo comn: La cuenta de nmeros se lo realizara en binario 4 bits, no obstante este nmero de base 2 no representa los nmeros decimales 0 a 9 mostrados por un tpico reloj, por tal motivo se utilizara decodificadores de 4 bits a 7 segmentos. Los displays de nodo comn son activos en nivel bajo y tienen un punto comn que es la alimentacin de este. Para mostrar nmeros decimales en los displays, los 7 bits deben de obedecer la siguiente tabla: Binario Display 4bits 7 segmentos Decimal B3 B2 B1 B0 a b c d e f g 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 1 1 1 2 0 0 1 0 0 0 1 0 0 1 0 3 0 0 1 1 0 0 0 0 1 1 0 4 0 1 0 0 1 0 0 1 1 0 0 5 0 1 0 1 0 1 0 0 1 0 0 6 0 1 1 0 1 1 0 0 0 0 0 7 0 1 1 1 0 0 0 1 1 1 1 8 1 0 0 0 0 0 0 0 0 0 0 9 1 0 0 1 0 0 0 0 1 0 0 10 1 0 1 0 X X X X X X X 11 1 0 1 1 X X X X X X X 12 1 1 0 0 X X X X X X X 13 1 1 0 1 X X X X X X X 14 1 1 1 0 X X X X X X X 15 1 1 1 1 X X X X X X X Tabla 1: Decodificador binario a display 7 segmentos nodo comn De la tabla, los elementos marcados con X, no sern utilizados por que tan solo necesitamos los nmeros 0 al 9, el circuito integrado que realiza la decodificacin de binario a display nodo comn es el 7447.

Amrico lvarez Surci

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

Tabla 2: Tabla de verdad de CI 7447

Figura 4: Diagrama de Pines CI 7447 Amrico lvarez Surci 7

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

2.1.2. Contadores
Los contadores son circuitos que tienen la propiedad de incrementar su contenido (ascendentes), decrementarlo (descendentes) o ambas (reversibles). Un contador mdulo-K cuenta K valores de forma cclica, normalmente entre 0 y el K-1. Adems, estos dispositivos pueden tener operaciones que permitan cargar un estado inicial de cuenta, (carga o load) y restablecer el estado inicial de cuenta, ya sea el cero para contadores ascendentes (clear) o todos los bits a 1 (estado 2n-1) para los descendentes (preset). Existe gran diversidad de contadores dependiendo del tipo de operaciones que realizan y del tamao del contador. El tamao se especifica por el mdulo (p.ej.: mdulo 10) o por el nmero de bits en caso de mdulos 2n. Por ejemplo, en la siguiente figura se muestra el esquema de un contador sncrono ascendente de mdulo 8 (3 bits) con las operaciones de cuenta arriba, carga, puesta a 0 e inhibicin.

Figura 5: Contador Sncrono Modulo-3

En la siguiente figura aparece la secuencia de salidas de un contador mdulo 8 ascendente. Como se observa, el periodo de las seales de salida va duplicndose, lo que motiva que a los contadores se les denomine, tambin, divisores de frecuencia.

Amrico lvarez Surci

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

Figura 6: Diagrama de Tiempos Contador Flanco descendente Al momento de definir nuestro reloj requeriremos de dos contadores modulo-60 para el segundero y el minutero, adems de un contador modulo-24 para las horas si nuestras horas son en ese sistema. Hay dos formas de realizar contadores: 1) los de rizado (ripple-counter) o contadores asncronos; y 2) los sncronos. En los contadores de rizado la salida de cada biestable se utiliza como seal de reloj del siguiente.

Figura 7: Contador Asncrono El circuito integrado 7490 nos brinda un contador BCD de modulo-10. Con la interconexin de varios podemos realizar contadores de mdulos mayores (p.ej.: modulo-60).

Amrico lvarez Surci

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

Tabla 3: Secuencia de Cuenta de CI 7490


Note A: Salida QA tiene que estar conectada a la entrada B para la cuenta BCD

Tabla 4: Tabla de verdad de CI 7490

Amrico lvarez Surci

10

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

2.1.3. Generador de pulsos (multivibrador-astable)


Los contadores digitales anteriormente vistos, utilizar una seal de clock que no es otra cosa ms que un tren de pulsos con una frecuencia dada. La precisin del reloj depende de esta frecuencia de clock. En electrnica, un astable es un multivibrador que no tiene ningn estado estable, lo que significa que posee dos estados "cuasi-estables" entre los que conmuta, permaneciendo en cada uno de ellos un tiempo determinado. La frecuencia de conmutacin depende, en general, de la carga y descarga de condensadores.

Figura 8: Multivibrador astable con transistores

Tambin podemos obtener un multivibrador utilizando el CI 555, que un circuito integrado ampliamente conocido con mucha informacin.

Amrico lvarez Surci

11

3 de diciembre de 2010 555 modo astable:

PROYECTO RELOJ DIGITAL

Figura 9: Multivibrador Astable con CI 555 Este tipo de funcionamiento se caracteriza por una salida con forma de onda cuadrada (o rectangular) continua de ancho predefinido por el diseador del circuito. El esquema de conexin es el que se muestra. La seal de salida tiene un nivel alto por un tiempo t1 y un nivel bajo por un tiempo t2. La duracin de estos tiempos depende de los valores de R1, R2 y C, segn las frmulas siguientes:

t1 ln 2 R1 R2 C t1 0.693 R1 R2 C
La frecuencia con que la seal de salida oscila est dada por la frmula:

t 2 ln 2 R2 C t 2 0.693 R2 C

1 0.693 C R1 2 R2

Amrico lvarez Surci

12

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

2.3. Descripcin de Hardware


Con la creciente complejidad de los diseos digitales ha aparecido una necesidad de describir un circuito de la forma ms eficiente y prctica posible. Un lenguaje de programacin ofrece la posibilidad de un alto nivel de abstraccin y es la solucin adecuada para dicha tarea. Los lenguajes de descripcin hardware son lenguajes de alto nivel con una sintaxis similar a los de programacin (C, ADA, Pascal, Modula, etc.) y una semntica que permite el modelado y simulacin de los dispositivos hardware a diferentes niveles de abstraccin. Los primeros lenguajes de este tipo slo pretendan servir de vehculo de comunicacin del diseo. Los actuales lenguajes han adquirido un alto grado de estandarizacin y han adoptado los nuevos conceptos de la ingeniera de software, permitiendo la verificacin de la especificacin del diseo mediante simulacin.

2.3.1. VHDL
VHDL es un lenguaje de descripcin de circuitos electrnicos digitales que utiliza distintos niveles de abstraccin. El significado por sus siglas VHDL es VHSIC (Very High Speed Integrated Circuits) Hardware Description Language. Esto significa que VHDL permite acelerar el proceso de diseo. VHDL no es un lenguaje de programacin, por ello conocer su sintaxis no implica necesariamente saber disear con l. VHDL es un lenguaje de descripcin de hardware genrico, que permite describir circuitos sncronos y asncronos. Para realizar esto debemos: - Pensar en puertas y biestables, no en variables ni funciones. - Evitar bucles combinacionales y relojes condicionados. - Saber qu parte del circuito es combinacional y cul secuencial. Los circuitos descritos en VHDL pueden ser simulados utilizando herramientas de simulacin para reproducir el funcionamiento del circuito. Adems utilizando herramientas de sntesis se puede implementar dicho circuito en un dispositivo lgico programable o en un circuito integrado.

Amrico lvarez Surci

13

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

i)

Elementos bsicos VHDL

VHDL es un lenguaje y como tal, posee sus tipos de datos y operadores. Los datos se almacenan en objetos que contienen valores de un tipo dado. IDENTIFICADORES. - CONSTANT. Los objetos de esta clase tienen un valor inicial que es asignado de forma previa a la simulacin y que no puede ser modificado durante sta. o constant identificador: tipo:= valor; - VARIABLE. Los objetos de esta clase contienen un nico valor que puede ser cambiado durante la simulacin con una sentencia de asignacin. Las variables generalmente se utilizan como ndices, principalmente en instrucciones de bucle, o para tomar valores que permitan modelar componentes. Las variables NO representan conexiones o estados de memoria. o variable identificador: tipo [:= valor]; - SIGNAL. Los objetos de esta clase contienen una lista de valores que incluye el valor actual y un conjunto de valores futuros. Las seales representan elementos de memoria o conexiones y si pueden ser sintetizadas. Los puertos de una entidad son implcitamente declarados como seales en el momento de la declaracin, ya que estos representan conexiones. Tambin pueden ser declaradas en la arquitectura antes del BEGIN, lo cual nos permite realizar conexiones entre diferentes mdulos. o signal identificador: tipo; VHDL permite utilizar tipos predefinidos, as como otros definidos por el usuario. BIT 0, 1 BIT_VECTOR (range*) BOOLEAN TRUE, FALSE CHARACTER {ascii} STRING {ascii} SEVERITY_LEVEL {WARNING, ERROR, FALURE} INTEGER range* Amrico lvarez Surci 14

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

NATURAL range* POSITIVE range* REAL range* TIME *(range: n_min TO n_max; n_max DOWNTO n_min) STD_LOGIC. Tipo predefinido en el estndar IEEE 1164. Este tipo representa una lgica multivaluada de 9 valores. Adems del 0 lgico y el 1 lgico, posee alta impedancia Z, desconocido X sin inicializar U entre otros. Igual que se permite crear un vector de bits se puede crear un vector de std_logic, STD_LOGIC_VECTOR. Para poder utilizar el tipo std_logic hay que aadir la librera que lo soporta. Para poder utilizar el tipo: use ieee.std_logic_1164.all. Para poder utilizar las funciones aritmeticolgicas definidas (suma, resta multiplicacin) use ieee.std_logic_arith.all. Si los vectores estn en representacin binaria pura use ieee.std_logic_unsigned.all. Los vectores estn en C2 use ieee.std_logic_unsigned.all. TIPO ENUMERADO es un tipo de dato con un grupo de posibles valores asignados por el usuario. Los tipos enumerados se utilizan principalmente en el diseo de mquinas de estados type nombre is (valor1, valor2, ); Los tipos enumerados se ordenan de acuerdo a sus valores. Los programas de sntesis automticamente codifican binariamente los valores del tipo enumerado para que estos puedan ser sintetizados. Algunos programas lo hacen mediante una secuencia binaria ascendente, otros buscan cual es la codificacin que mejor conviene para tratar de minimizar el circuito o para incrementar la velocidad del mismo una vez que la descripcin ha sido sintetizada. Tambin es posible asignar el tipo de codificacin mediante directivas propias de la herramienta de sntesis. TIPOS COMPUESTOS un tipo compuesto es un tipo de dato formado con elementos de otros tipos, existen dos formas de tipos compuestos, arrays y records. Amrico lvarez Surci 15

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

UN ARRAY es un objeto de datos que consiste en una coleccin de elementos del mismo tipo. type nombre is array (rango) of tipo; UN RECORD es un objeto de datos que consiste en una coleccin de elementos de distintos tipos. type nombre is record elemento1: tipo_de_dato1; elemento2: tipo_de_dato2; end record;

OPERADORES. Un operador nos permite construir diferentes tipos de expresiones mediante los cuales podemos calcular datos utilizando diferentes objetos de datos con el tipo de dato que maneja dicho objeto. En VHDL existen distintos operadores de asignacin con lo que se transfieren valores de un objeto de datos a otro, y operadores de asociacin que relacionan un objeto de datos con otro, lo cual no existe en ningn lenguaje de programacin de alto nivel. abs *, /, mod, rem + (sig.), - (sig) +, -, & and, or, nand, nor, xor := asignacin de valores a constantes y variables. <= asignacin de valores a seales.

ii) Estructura Bsica de un archivo fuente en VHDL El archivo VHDL contiene la descripcin del circuito que se quiere implementar.
ENTIDADES (ENTITY) Una entidad es la abstraccin de un circuito, ya sea desde un complejo sistema electrnico hasta una simple compuerta lgica. La entidad nicamente describe la forma externa del circuito, aqu se enumeran las entradas y las salidas del diseo. Amrico lvarez Surci 16

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

Una entidad es anloga a un smbolo esquemtico de los diagramas electrnicos, el cual describe las conexiones del dispositivo hacia el resto del diseo. Lo siguiente muestra un ejemplo de su contenido: 1. Define externamente al circuito o subcircuito. 2. Nombre y nmero de puertos, tipos de datos de entrada y salida. 3. Tienes toda la informacin necesaria para conectar tu circuito a otros circuitos.

Figura 10: Ejemplo de Entity entity F is port (A, B: in bit; Y out bit); end F; Los puertos pueden ser para seales de entrada in, salida out, entrada-salida o un buffer; que utilizar el modo in/out. Adems, la entidad puede definir un valor genrico (GENERIC) que se utilizar para declarar las propiedades y constantes del circuito, independientemente de cul sea la arquitectura. entity nombre is generic (cte1: tipo := valor1; cte2: tipo:= valor 2; ); port (entrada1, entrada2, : in tipo; salida1, salida2, : out tipo; puertoi : modo tipo); end nombre;

Amrico lvarez Surci

17

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

ARQUITECTURA (ARCHITECTURE). Los pares de entidades y arquitecturas se utilizan para representar la descripcin completa de un diseo. Una arquitectura describe el funcionamiento de la entidad a la que hace referencia. Si una entidad la asociamos con una caja en la que se enumeran las interfaces de conexin hacia el exterior, entonces la arquitectura representa la estructura interna de esa caja. Sus principales funciones son: 1. Define internamente el circuito. 2. Seales internas, funciones, procedimientos, constantes 3. La descripcin de la arquitectura puede ser estructural o por comportamiento. Lo siguiente muestra un ejemplo de su contenido: architecture arch_name of entity_name is -- declaraciones de la arquitectura -- tipos -- seales -- componentes begin -- cdigo de descripcin -- instrucciones concurrentes -- ecuaciones booleanes process begin -- cdigo de descripcin end process; end arch_name; Una arquitectura se describe por comportamiento o por estructura. Una entidad puede tener ms de una arquitectura, pero cuando se compile se debe indicar cul es la arquitectura que queremos utilizar. PROCESS: Cuando en VHDL se escribe un process, dentro de l aparece la parte secuencial del circuito. La simulacin no entra en el process hasta que no haya variado alguna de las seales o variables de su lista de sensibilidad independientemente de lo Amrico lvarez Surci 18

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

que este contenido dentro del process. Por otro lado nicamente dentro de un process pueden aparecer las sentencias de tipo if y else y nunca puede aparecer una sentencia del tipo wait. Sentencias de descripcin WAIT esta instruccin es utilizada en procesos que no tienen lista de sensibilidad: wait on signal_list; wait for time_expression; wait until condition; Eventos sobre las seales (EVENT) nos indican cuando ocurre un cambio en la seal signal'event signal'last_event signal'last_value IF THEN ELSE solo son aplicables dentro de un process if condicin then ... instrucciones secuenciales elsif otra_condicin then ... instrucciones secuenciales else ... instrucciones secuenciales end if; CASE WHEN solo son aplicables dentro de un process case expresin is when alternativa_l => ... instrucciones secuenciales when alternativa_n => ... -- instrucciones secuenciales when others => ... -- instrucciones secuenciales end case; FOR LOOP solo son aplicables dentro de un process Amrico lvarez Surci 19

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

for loop_var in range loop ... -- instrucciones secuenciales end loop; WHILE LOOP solo son aplicables dentro de un process while condicin loop ... -- instrucciones secuenciales end loop; WHEN ELSE Signal_name <= valor_1 when condicin1 else valor_2 when condicin2 else ... valor_i when condicini else otro_valor; WITH SELECT WHEN with identificador select Signal_name <= valor_1 when valor_identificador1, valor_2 when valor_identificador2, ... valor_i when valor_identificadori, otro_valor when others;

Amrico lvarez Surci

20

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

CAPITULO 3: MECANISMO DE DISEO

Describiremos el proyecto a implementarse en laboratorio mediante componentes bsicos ya vistos en el anterior capitulo. Ademas mostraremos cada bloque controlador por separado, para que pueda observarse en plenitud el diseo utilizado para el reloj digital.

3.1. SS: Segundos


El bloque del segundero se lo implemento con un contador modulo-60 utilizando 2 circuitos integrados 7490 que son contadores BCD, segn el siguiente diagrama de bloques:

Figura 11: Diagrama de bloques del Segundero Amrico lvarez Surci 21

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

Al primer contador se conecta el clock de 1Hz, diseado previamente con un multivibrador astable, como es un contador BCD este cuenta de 0 al 9 una vez concluida esta cuenta vuelve a comenzar en 0. El segundo contador cuenta del 0 hasta el 5 y cuando es 6 esta habilita mediante el and los resets de ambos contadores comenzando la cuenta en 0 otra vez. El clock del segundo contador ser el bit de mayor peso posicional de del primer contador, que cuando cambie de 1 a 0 (flanco de bajada) har como un pulso de clock. La cuenta realizada por los contadores BCD es de binario (0000 - 1001) del 0 al 9, este cdigo binario ser decodificado a 7 segmentos para un display anodo comn

Figura 12: Diagrama de bloques del decodificador Cuando se menciona nodo comn es que el segmento se enciende con un 0 lgico, porque el punto comn est conectado a la alimentacin o 1 lgico.

3.2. MM: Minutos


De igual manera que el segundero se disea un contador modulo 60 para el minutero, con la diferencia que el clock del primer contador ya no es 1Hz sino que es un impulso dado por el reset del bloque del segundero.

Amrico lvarez Surci

22

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

Figura 13: Diagrama de bloques del Minutero Y similar al segundero cada salida del contador se conecta a un decodificador de 4bits a 7 segmentos, para mostrar los 2 dgitos del minutero.

3.3. HH: Horas


De igual manera que los anteriores elementos descritos, las horas ser un contador mudulo-24 que contara las horas, el clock el primer contador ser el impulso reset del minutero que se realiza cada que se cumple los 60 minutos. Cada contador a la salid se conectara un decodificador de 4 bits a 7 segmentos para observar los 2 dgitos de este. El reset ser utilizando ambos contadores segn el diagrama siguiente

Amrico lvarez Surci

23

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

Figura 14: Diagrama de bloques del Horero

3.4. Ajuste de hora


Para el ajuste de hora se aprovechara los impulsos realizados por el bloque del segundero y del minutero, para modificar minutos y horas respectivamente, ya que estos son los clock de entrada de los bloques de minutero y horero. Se pondr 2 botones conectados a la alimentacin, que nos emularan estos pulsos (clock de los bloques minutero y horero) en cualquier momento que el usuario requiera modificar la hora a una cualquiera. Cuando se presione un botn reseteara el modulo inmediatamente inferior, asi que se tendr que modificar horas, luego minutos en ese orden.

Amrico lvarez Surci

24

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

3.5. Descripcin VHDL


Mediante el uso de lenguaje de descripcin de hardware se proceder a describir el reloj digital, con todas las caractersticas del diseo circuital anteriormente descrito: 1- Un bloque segundero contador modulo-60, utilizamos una seal de este para habilitar el bloque minutero cada 60 segundos. 2- Un bloque minutero contador modulo-60, utilizamos una seal de este para habilitar el bloque horero cada 60 minutos. 3- Un bloque de horas contador modulo-24. Adems de mostrar la hora esta se debe modificar en cualquier momento que el usuario requiera mediante 2 botones para modificar horas y minutos. Ya que no tenemos limitaciones econmicas, ni de CI al momento de realizar la descripcin en vhdl, se aadir un selector que cuando este en 1 se pueda modificar la hora y cuando este en 0 no se pueda. Adems de un Reset para reiniciar nuestro sistema. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ------------------------------------------------------------------ Reloj Digital -- Autor: Amrico Alvarez S. ----------------------------------------------------------------library ieee; use ieee.std_logic_1164.all; entity reloj_v3 is port(clk_50Mhz:in std_logic; reset,ajuste:in std_logic; ajuste_hh,ajuste_mm:in std_logic; hex0,hex1,hex2,hex3,hex4,hex5:out std_logic_vector(0 to 6) ); end reloj_v3; architecture rtl of reloj_v3 is signal clk0,clk1,clk2,clk3,clk4,clk5: std_logic:='0'; signal clk_a1,clk_a2:std_logic:='0'; signal ajuste_sync:std_logic; Amrico lvarez Surci 25

3 de diciembre de 2010 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54

PROYECTO RELOJ DIGITAL

constant max: integer := 2;--50000000; constant half: integer := max/2; signal count: integer range 0 to max; function numero(digito:integer) return std_logic_vector is Variable hex:std_logic_vector(0 to 6); begin case digito is when 0 => hex := "0000001"; when 1 => hex := "1001111"; when 2 => hex := "0010010"; when 3 => hex := "0000110"; when 4 => hex := "1001100"; when 5 => hex := "0100100"; when 6 => hex := "1100000"; when 7 => hex := "0001111"; when 8 => hex := "0000000"; when 9 => hex := "0000100"; when others => null; end case; return(hex); end numero; begin -- definimos el clock de 1 hz process (clk_50Mhz) begin if (clk_50Mhz'event and clk_50Mhz='1') then if (count < max) then count <=count + 1; else count <=0; end if; if (count <= half) then clk0 <='0'; else clk0 <='1'; end if; end if; end process; -- definimos el reloj como tal Amrico lvarez Surci 26

3 de diciembre de 2010 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89

PROYECTO RELOJ DIGITAL

process (clk0,reset,ajuste,ajuste_hh,ajuste_mm) variable uu_s: integer range 0 to 10; variable dd_s: integer range 0 to 6; variable uu_m: integer range 0 to 10; variable dd_m: integer range 0 to 6; variable uu_h: integer range 0 to 10; variable dd_h: integer range 0 to 3; begin -- seal asincrona de reset if (reset='1') then uu_s:=0; dd_s:=0; uu_m:=0; dd_m:=0; uu_h:=0; dd_h:=0; else -- definimos segundos contador mod 60 if (clk0'event and clk0='1') then uu_s:= uu_s+1; clk1 <= '0'; if (uu_s=10) then uu_s := 0; clk1 <= '1'; end if; end if; if (clk1'event and clk1='1') then dd_s:= dd_s+1; clk2 <= '0'; if (dd_s=6) then dd_s := 0; clk2 <= '1'; end if; end if; -- seal de ajuste minutos Amrico lvarez Surci 27

3 de diciembre de 2010 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124

PROYECTO RELOJ DIGITAL

-- sincronizamos a los segundos if (clk0'event and clk0='0') then ajuste_sync<=ajuste; end if; clk_a1<=(clk2 and not ajuste_sync) or (ajuste_mm and ajuste_sync); -- definimos minutos contador mod 60 if (clk_a1'event and clk_a1='1') then uu_m:= uu_m+1; clk3 <= '0'; if (uu_m=10) then uu_m := 0; clk3 <= '1'; end if; end if; if (clk3'event and clk3='1') then dd_m:= dd_m+1; clk4 <= '0'; if (dd_m=6) then dd_m := 0; clk4 <= '1'; end if; end if; -- seal de ajuste minutos clk_a2<=(clk4 and not ajuste_sync) or (ajuste_hh and ajuste_sync); -- definimos horas contador mod 24 if (clk_a2'event and clk_a2='1') then uu_h:= uu_h+1; clk5 <= '0'; if (uu_h=10) then uu_h := 0; clk5 <= '1'; end if; end if; Amrico lvarez Surci 28

3 de diciembre de 2010 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141

PROYECTO RELOJ DIGITAL

if (clk5'event and clk5='1') then dd_h:= dd_h+1; end if; if (dd_h=2 and uu_h=4) then uu_h:= 0; dd_h:= 0; end if; end if; -- definimos la alarma -- mostramos en displays hex0 <= numero(uu_s); hex1 <= numero(dd_s); hex2 <= numero(uu_m); hex3 <= numero(dd_m); hex4 <= numero(uu_h); hex5 <= numero(dd_h); end process; end rtl; Tabla 5: Cdigo VHDL reloj digital

Amrico lvarez Surci

29

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

CAPITULO 4: SIMULACIONES Y PRUEBAS EN LABORATORIO


4.1. Simulacin plano circuital usando Proteus

Figura 15: Plano Circuital completo del Reloj digital Amrico lvarez Surci 30

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

Anlisis diagrama de tiempos de los clock del circuito U1 es la seal de clock de 1hz. U6 es la generacin de impulsos por el reset del modulo del Segundero (cada 60 segundos). Que sirve como clock para el bloque del minutero U3 es la generacin de impulsos por el reset del modulo del Minutero (cada 60 minutos). Que sirve como clock para el bloque del Horero

Figura 16: cada 60 Pulsos de 1Hz, se enva un Impulso (clock del minutero)

Figura 17: cada 60 impulsos del minutero, se enva un Impulso (clock del horero)

Amrico lvarez Surci

31

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

4.2. Simulacin VHDL usando Quatus2


A continuacin se presenta la simulacin del diagrama de tiempos simulado en quartus2, cabe mencionar que se establecieron seales de prueba de reset y modificar hora, en cualquier instante de cuenta de nuestro reloj digital. Las seales de salida de los displays de 7 segmentos se los muestra en su equivalente decimal del numero de 7 bits que representa, segn la siguiente tabla: Display Numero decimal 7 segmentos mostrado en a b c d e f g la simulacin de quatus2 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 79 2 0 0 1 0 0 1 0 18 3 0 0 0 0 1 1 0 6 4 1 0 0 1 1 0 0 76 5 0 1 0 0 1 0 0 36 6 1 1 0 0 0 0 0 96 7 0 0 0 1 1 1 1 15 8 0 0 0 0 0 0 0 0 9 0 0 0 0 1 0 0 4 Tabla 6: Numero decimal mostrado en quartus2 que representa los 7 bits, del decodificador Decimal

El Anlisis diagrama de tiempos en quatus2 se presenta a continuacin: Clk0 representa la seal de 1Hz. Reset representa la entrada de reset que pulsaremos en cualquier momento. Ajuste: cuando este en 1 logico, se podr ajustar la hora (ajuste_hh) y minutos(ajuste_mm), caso contrario no. Hex0: primer digito segundero, unidades segundero. Hex1: segundo digito segundero, decenas segundero. Amrico lvarez Surci 32

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

Hex2: primer digito minutero, unidades minutero. Hex3: segundo digito minutero, decenas minutero. Hex4: primer digito horero, unidades horero. Hex5: segundo digito horero, decenas horero.

Figura 18: Segmento de cuenta segundero y reset

Amrico lvarez Surci

33

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

Figura 19: Segmento, ajustando horas y minutos

Amrico lvarez Surci

34

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

CAPITULO 5: CONCLUSIONES Y MEJORAS


5.1. Conclusiones
Se diseo e implemento satisfactoriamente el reloj digital utilizando componentes digitales bsicos. Se describi en lenguaje VHDL el comportamiento de nuestro circuito pudiendo comprobar satisfactoriamente que realiza lo mismo que nuestro circuito armado El reloj implementado en VHDL utilizando la tarjeta DE2, fue ms preciso que el ensamblado, esto se debe a que nuestro clock de 1 hz tubo errores de exactitud al momento de calcular el 1Hz por el error que lleva cada resistencia y capacitor utilizado para realizar el oscilador astable. La descripcin en vhdl nos ahorro mucho tiempo y se le dio el aadido del activar el ajuste de hora y un reset del sistema. La descripcin fue ms rpida y es fcil detectar los errores en sintaxis del lenguaje de nuestra descripcin, en futuras ocasiones se debera de dar ms manejo a este lenguaje, as no se tendr falencias en componentes que hay pocos en nuestro mercado.

5. 2. Mejoras
Implementar un reloj que adems nos brinde un calendario, la fecha del da en que nos encontramos. Se puede utilizar el impulso de reset del modulo de horas, para realizar la cuenta de das, y estos realizaran de meses. Se podra implementar un calendario utilizando una memoria EEPROM ya que los meses varan en nmero de das. Aadir al reloj una alarma a manera de despertador u otra alarma segn sea el agrado del diseador. Se podra implementar esto con comparadores, que se introdusca la hora de alarma a un registro y que cuando la hora sea igual que el dato guardado en el registro, se encienda la alarma, y cuando se apage de igual manera con otro registro para apagar la alarma a los X segundos. Aadir a este mismo reloj un cronometro digital utilizando los displays empleados. El inconveniente estara en el reloj de 10Hz. Implementarlo en pantalla LCD 16x2.

Amrico lvarez Surci

35

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

6. BIBLIOGRAFA
1. 2. 3. 4. 5. Problemas de circuitos y sistemas digitales Mc Graw Hill Fundamentos de lgica digital con diseo VHDL Stephen Brown Zvonko Vranesic Circuit Desing with VHDL Volnei A. Pedroni DE2_UserManual http://www.iesleonardo.info/ele/pro/CURSO%202001-2002/p02-relojdigital/

7. ANEXOS
7.1. Tarjeta Cyclone II- DE2 de Altera

Amrico lvarez Surci

36

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

DE2 board provides users many features to enable various multimedia project development. Component selection was made according to the most popular design in volume production multimedia products such as DVD, VCD, and MP3 players. The DE2 platform allows users to quickly understand all the insight tricks to design real multimedia projects for industry.

Altera Cyclone II 2C35 FPGA with 35000 LEs Altera Serial Configuration devices (EPCS16) for Cyclone II 2C35 USB Blaster built in on board for programming and user API controlling JTAG Mode and AS Mode are supported 8Mbyte (1M x 4 x 16) SDRAM 512K byte(256K X16) SRAM 4Mbyte Flash Memory (upgradeable to 4Mbyte) SD Card Socket 4 Push-button switches 18 DPDT switches 9 Green User LEDs 18 Red User LEDs 16 x 2 LCD Module 50MHz Oscillator and 27MHz Oscillator for external clock sources 24-bit CD-Quality Audio CODEC with line-in, line-out, and microphone-in jacks VGA DAC (10-bit high-speed triple DACs) with VGA out connector TV Decoder (NTSC/PAL) and TV in connector 10/100 Ethernet Controller with socket. USB Host/Slave Controller with USB type A and type B connectors. RS-232 Transceiver and 9-pin connector PS/2 mouse/keyboard connector IrDA transceiver Two 40-pin Expansion Headers with diode protection DE2 Lab CD-ROM which contains many examples with source code to exercise the boards, including: SDRAM and Flash Controller, CD-Quality Music Player, VGA and TV Labs, SD Card reader, RS-232/PS-2 Communication Labs, NIOSII, and Control Panel API

Amrico lvarez Surci

37

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

Amrico lvarez Surci

38

Anda mungkin juga menyukai