Universidad Mayor de San Andrés Facultad de Ingeniería Carrera Ingeniería ElectrónicaProyecto de Final de Curso ETN 601 - Sistemas Digitales I “DISEÑO E IMPLEMENTACIÓN DE UN RELOJ DIGITAL” Por: Américo Álvarez Surci Docente: Roberto Oropeza Crespo La Paz – Bolivia Diciembre 2010 i INDICE GENERAL INDICE DE FIGURAS INDICE DE TABLAS RESUMEN CAPITULO 1: ANTECEDENTES Y PROPÓSITOS 1.1. Introducción 1.2. Objetivos 1.2.1. Objetivo principal 1.2.2. Objetivos secundarios 1.3. Metodología IV V VI 1 1 2 2 2 2 CAPITULO 2: DESARROLLO TEÓRICO 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. Descripción de Hardware 2.3.1. VHDL i) Elementos Básicos VHDL ii) Estructura Básica de un archivo fuente en VHDL 3 5 5 8 11 13 13 14 16 CAPITULO 3: MECANISMO DE DISEÑO 3.1. SS: Segundos 3.2. MM: Minutos 3.3. HH: Horas 3.4. Ajuste de hora 3.5. Descripción VHDL ii 21 21 22 23 24 25 CAPITULO 4: SIMULACIONES Y PRUEBAS EN LABORATORIO 4.1. Simulación plano circuital usando Proteus 4.2. Simulación VHDL usando Quatus2 30 30 32 CAPITULO 5: CONCLUSIONES Y MEJORAS 5.1. Conclusiones 5. 2. Mejoras 35 35 35 6. BIBLIOGRAFÍA 7. ANEXOS 7.1. Tarjeta Cyclone II- DE2 de Altera 36 36 36 iii INDICE DE FIGURAS Figura 1: Reloj Digital Figura 2: Reloj Atómico NIST-F1, EE.UU. Figura 3: Decodificador Básico Figura 4: Diagrama de Pines CI 7447 Figura 5: Contador Síncrono Modulo-3 Figura 6: Diagrama de Tiempos Contador Flanco descendente Figura 7: Contador Asíncrono 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 envía un Impulso (clock del minutero) Figura 17: cada 60 impulsos del minutero, se envía un Impulso (clock del horero) Figura 18: Segmento de cuenta segundero y reset Figura 19: Segmento, ajustando horas y minutos iv del decodificador v .INDICE DE TABLAS Tabla 1: Decodificador binario a display 7 segmentos ánodo común 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. contara con la funcionalidad de modificar la hora. además que contara con un clock de 1 segundo. además se implementara este mismo en una tarjeta de estudio DE2. minutos segundos. Se visualizara el reloj en displays de 7 segmentos. utilizando lenguaje de descripción de hardware VHDL.Resumen Con la utilización de contadores. decodificadores y varios otros componentes digitales se implementara en laboratorio un reloj que nos mostrara horas. vi . el añadido de este trabajo es que aparte de diseñar el reloj con circuitos integrados comunes. Figura 1: Reloj Digital Américo Álvarez Surci 1 . La bibliografía que se puede encontrar sobre este tema es extensa. se utiliza la descripción de hardware para describir nuestro reloj digital. con este proyecto se pretende demostrar todo lo aprendido en dicho curso.3 de diciembre de 2010 PROYECTO RELOJ DIGITAL CAPITULO 1: ANTECEDENTES Y PROPÓSITOS 1.1. Introducción En los tiempos actuales es masiva la utilización de Sistemas Digitales ya que proporcionan una serie de ventajas con respecto a la electrónica analógica. el cual ha pasado del uso de las manecillas para la indicación de la hora a proporcionar una visualización numérica de la misma gracias a la electrónica digital. y ha sido utilizada incluso en dispositivos pequeños como un reloj. El reloj digital es un proyecto ampliamente conocido y realizado en cursos básicos de sistemas digitales. Metodología La elaboración de este proyecto tiene dos etapas importantes: hardware y el software En la parte de hardware nos enfocaremos en el diseño utilizando diferentes circuitos integrados básicos. 1. para representar el reloj. para la simulación de nuestro circuito a montar en laboratorio. minutero y horas.1.2.3 de diciembre de 2010 PROYECTO RELOJ DIGITAL 1. Objetivos secundarios Descripción de diferentes contadores digitales para la utilización en segundero. para describir nuestro circuito reloj digital.3. Objetivo principal Diseño e implementación de un Reloj digital utilizando componentes digitales básicos y descripción de este.2. para realizar la descripción de hardware utilizando el lenguaje vhdl. utilizando VHDL. Objetivos 1. Y cuando nos referimos a software utilizaremos el paquete informático Quatus-2. Además para correcciones si se lo amerita se empleara el software Proteus. Américo Álvarez Surci 2 . Manejo de decodificadores de binario a 7 segmentos (display).2. conectados de tal forma que emulen el funcionamiento de un típico reloj digital.2. 1. Descripción en un solo modulo. es tan exacto que tiene un margen de error de solo un segundo cada 20 millones de años. reloj de salón o pared. Mucha gente. A pesar de ello.. La mayor precisión conseguida hasta ahora es la del último reloj atómico desarrollado por la Oficina Nacional de Normalización (NIST) de los EE. el NIST-F1. Esto representa un reloj cien veces menor que cualquier otro construido hasta la fecha y con un consumo de sólo 0.3 de diciembre de 2010 PROYECTO RELOJ DIGITAL CAPITULO 2: DESARROLLO TEÓRICO Se denomina reloj a un instrumento que permite medir el tiempo. cronómetro) Medir la duración de un suceso (cronógrafo. además de la utilidad que los caracteriza. que se adecuan según el propósito: Conocer la hora actual (reloj de pulsera (automático o 'de cuerda'). los de bombeo óptico de rubidio (Kasler) o los recientemente propuestos de mercurio. reloj de arena) Señalar las horas por sonidos parecidos a campanadas o pitidos (reloj de péndulo. En agosto de 2004 del NIST hicieron la primera demostración de un reloj atómico del tamaño de un circuito integrado. Existen diversos tipos. los físicos continúan experimentando con nuevas variaciones. mejor prestancia y menor costo de fabricación. puesto en marcha en 1999. han ido apareciendo nuevos modelos con mayor precisión. reloj de bolsillo. Américo Álvarez Surci 3 . La invención. reloj de pulso con bip a cada hora) Activar una alarma en cierta hora específica (reloj despertador) Los relojes se utilizan desde la antigüedad. A medida que ha ido evolucionando la ciencia y la tecnología de su fabricación. como los másers de hidrógeno (Townes).079 vatios. Es quizá uno de los instrumentos más populares que existen actualmente y casi todas las personas disponen de uno o varios relojes personales de pulsera. que permitirían alcanzar mayor precisión.UU. los ostenta como símbolo de distinción y estatus social. del reloj digital supuso una gran revolución en el campo de la relojería porque se consiguió fabricar relojes mucho más baratos y precisos que los de funcionamiento mecánico. Un reloj digital es un tipo de reloj que basa su funcionamiento en la electrónica digital para marcar el tiempo. en 1956. 3 de diciembre de 2010 PROYECTO RELOJ DIGITAL Para representar la hora. teléfonos celulares. Estos relojes también incluyen otros elementos. Américo Álvarez Surci 4 . ordenadores. para formar cada uno de los números. para indicar si la hora es por la mañana AM o por la tarde PM. 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 electrónicos analógicos de cuarzo. muchos relojes digitales usan los siete segmentos LED (los que se usan en el proyecto). Debido a lo barato que son los relojes digitales ya se han impuestos en muchas aplicaciones.UU. La ruptura principal con el reloj mecánico es que se eliminaron todos los mecanismos que había en el interior de la caja de los relojes y fueron sustituidos por unos circuitos electrónicos alimentados por una pequeña batería y que facilitaba la lectura directa del tiempo. Los relojes digitales son muy pequeños. Figura 2: Reloj Atómico NIST-F1. útiles y baratos. y así la mayoría de despertadores son ya digitales. automóviles. los relojes que hay en electrodomésticos. EE. Asimismo. etc. Por estas razones se han incorporado a la mayoría de equipos electrónicos. VFD o LCD. así como si está activada la alarma y a qué hora está programada. Codificadores. que permite mostrar segundos. a partir de una referencia. Elementos del reloj digital Un reloj electrónico es un reloj en el que la base de tiempos es electrónica o electromecánica y la división de frecuencia. que puede consistir en un oscilador o en un adaptador que. La exactitud del reloj depende de la base de tiempos.1. El divisor de frecuencia es un circuito digital formado por una sucesión de contadores hasta obtener una frecuencia de 1 Hz.3 de diciembre de 2010 PROYECTO RELOJ DIGITAL 2.1. decodificadores Decodificador: Se trata de un dispositivo con n entradas y 2n salidas donde en función de la combinación binaria de sus entradas. Esta frecuencia pasa al módulo de presentación. una y sólo una de las salidas se activa. genera una señal periódica. que puede ser electrónico o mecánico. Su símbolo para el caso DEC 2:4 con habilitación y salidas activa en alta. Si se quiere mostrar décimas. convierte un código binario de entrada en código "1-entre-n”. Es decir. 2. minutos y horas para presentarlas mediante algún tipo de display. también.1. la división se detiene al llegar a los 10 Hz. donde otros divisores van separando los segundos. su tabla de verdad y sus ecuaciones de cada salida se muestran a continuación: Figura 3: Decodificador Básico Américo Álvarez Surci 5 . 3 de diciembre de 2010 PROYECTO RELOJ DIGITAL Decodificador binario 4bits a display 7 segmentos ánodo común: La cuenta de números se lo realizara en binario 4 bits. 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 común De la tabla. Américo Álvarez Surci 6 . Para mostrar números decimales en los displays. el circuito integrado que realiza la decodificación de binario a display ánodo común es el 7447. no serán utilizados por que tan solo necesitamos los números 0 al 9. no obstante este número de base 2 no representa los números decimales 0 a 9 mostrados por un típico reloj. por tal motivo se utilizara decodificadores de 4 bits a 7 segmentos. Los displays de ánodo común son activos en nivel bajo y tienen un punto común que es la alimentación de este. los elementos marcados con “X”. 3 de diciembre de 2010 PROYECTO RELOJ DIGITAL Tabla 2: Tabla de verdad de CI 7447 Figura 4: Diagrama de Pines CI 7447 Américo Álvarez Surci 7 . Existe gran diversidad de contadores dependiendo del tipo de operaciones que realizan y del tamaño del contador. el periodo de las señales de salida va duplicándose. Un contador módulo-K cuenta K valores de forma cíclica. Américo Álvarez Surci 8 . Contadores Los contadores son circuitos que tienen la propiedad de incrementar su contenido (ascendentes). lo que motiva que a los contadores se les denomine. (carga o load) y restablecer el estado inicial de cuenta.3 de diciembre de 2010 PROYECTO RELOJ DIGITAL 2. Además. estos dispositivos pueden tener operaciones que permitan cargar un estado inicial de cuenta. divisores de frecuencia. Figura 5: Contador Síncrono Modulo-3 En la siguiente figura aparece la secuencia de salidas de un contador módulo 8 ascendente.2. en la siguiente figura se muestra el esquema de un contador síncrono ascendente de módulo 8 (3 bits) con las operaciones de cuenta arriba. ya sea el cero para contadores ascendentes (clear) o todos los bits a 1 (estado 2n-1) para los descendentes (preset).: módulo 10) o por el número de bits en caso de módulos 2n. carga. decrementarlo (descendentes) o ambas (reversibles). también.ej. Por ejemplo. El tamaño se especifica por el módulo (p. Como se observa. puesta a 0 e inhibición. normalmente entre 0 y el K-1.1. En los contadores de rizado la salida de cada biestable se utiliza como señal de reloj del siguiente.: modulo-60). Con la interconexión de varios podemos realizar contadores de módulos mayores (p. y 2) los síncronos. además de un contador modulo-24 para las horas si nuestras horas son en ese sistema. Américo Álvarez Surci 9 . Figura 7: Contador Asíncrono El circuito integrado 7490 nos brinda un contador BCD de modulo-10.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. Hay dos formas de realizar contadores: 1) los de rizado (ripple-counter) o contadores asíncronos.ej. 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 Américo Álvarez Surci 10 . En electrónica. La precisión del reloj depende de esta frecuencia de clock. Américo Álvarez Surci 11 . que un circuito integrado ampliamente conocido con mucha información.1. en general. La frecuencia de conmutación depende.3. Figura 8: Multivibrador astable con transistores También podemos obtener un multivibrador utilizando el CI 555. de la carga y descarga de condensadores. utilizar una señal de clock que no es otra cosa más que un tren de pulsos con una frecuencia dada. permaneciendo en cada uno de ellos un tiempo determinado. un astable es un multivibrador que no tiene ningún estado estable. Generador de pulsos (multivibrador-astable) Los contadores digitales anteriormente vistos.3 de diciembre de 2010 PROYECTO RELOJ DIGITAL 2. lo que significa que posee dos estados "cuasi-estables" entre los que conmuta. 693 C R1 2 R2 Américo Álvarez Surci 12 . según las fórmulas siguientes: t1 ln 2 R1 R2 C t1 0.693 R2 C f 1 0.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 diseñador del circuito. El esquema de conexión es el que se muestra. La duración de estos tiempos depende de los valores de R1. La señal de salida tiene un nivel alto por un tiempo t1 y un nivel bajo por un tiempo t2.693 R1 R2 C La frecuencia con que la señal de salida oscila está dada por la fórmula: y t 2 ln 2 R2 C t 2 0. R2 y C. que permite describir circuitos síncronos y asíncronos. permitiendo la verificación de la especificación del diseño mediante simulación. .Saber qué parte del circuito es combinacional y cuál secuencial. Los circuitos descritos en VHDL pueden ser simulados utilizando herramientas de simulación para reproducir el funcionamiento del circuito. Américo Álvarez Surci 13 . Esto significa que VHDL permite acelerar el proceso de diseño. El significado por sus siglas VHDL es VHSIC (Very High Speed Integrated Circuits) Hardware Description Language. . Un lenguaje de programación ofrece la posibilidad de un alto nivel de abstracción y es la solución adecuada para dicha tarea. no en variables ni funciones.3.Pensar en puertas y biestables. ADA. Para realizar esto debemos: . Modula. VHDL VHDL es un lenguaje de descripción de circuitos electrónicos digitales que utiliza distintos niveles de abstracción. Los actuales lenguajes han adquirido un alto grado de estandarización y han adoptado los nuevos conceptos de la ingeniería de software. Además utilizando herramientas de síntesis se puede implementar dicho circuito en un dispositivo lógico programable o en un circuito integrado. VHDL es un lenguaje de descripción de hardware genérico.) y una semántica que permite el modelado y simulación de los dispositivos hardware a diferentes niveles de abstracción.1. Los primeros lenguajes de este tipo sólo pretendían servir de vehículo de comunicación del diseño. VHDL no es un lenguaje de programación.3 de diciembre de 2010 PROYECTO RELOJ DIGITAL 2. Descripción de Hardware Con la creciente complejidad de los diseños digitales ha aparecido una necesidad de describir un circuito de la forma más eficiente y práctica posible.Evitar bucles combinacionales y relojes condicionados.3. por ello conocer su sintaxis no implica necesariamente saber diseñar con él. Pascal. Los lenguajes de descripción hardware son lenguajes de alto nivel con una sintaxis similar a los de programación (C. 2. etc. Los objetos de esta clase tienen un valor inicial que es asignado de forma previa a la simulación y que no puede ser modificado durante ésta. Las variables generalmente se utilizan como índices.SIGNAL. .CONSTANT. o constant identificador: tipo:= valor. posee sus tipos de datos y operadores. Los puertos de una entidad son implícitamente declarados como señales en el momento de la declaración. Las variables NO representan conexiones o estados de memoria. Los datos se almacenan en objetos que contienen valores de un tipo dado. . IDENTIFICADORES. o signal identificador: tipo. BIT 0. También pueden ser declaradas en la arquitectura antes del BEGIN. principalmente en instrucciones de bucle. ERROR. VHDL permite utilizar tipos predefinidos. lo cual nos permite realizar conexiones entre diferentes módulos. . 1 BIT_VECTOR (range*) BOOLEAN TRUE. FALSE CHARACTER {ascii} STRING {ascii} SEVERITY_LEVEL {WARNING.3 de diciembre de 2010 PROYECTO RELOJ DIGITAL i) Elementos básicos VHDL VHDL es un lenguaje y como tal. Las señales representan elementos de memoria o conexiones y si pueden ser sintetizadas. Los objetos de esta clase contienen un único valor que puede ser cambiado durante la simulación con una sentencia de asignación. así como otros definidos por el usuario. Los objetos de esta clase contienen una lista de valores que incluye el valor actual y un conjunto de valores futuros.VARIABLE. ya que estos representan conexiones. o para tomar valores que permitan modelar componentes. o variable identificador: tipo [:= valor]. FALURE} INTEGER range* Américo Álvarez Surci 14 . Los programas de síntesis automáticamente codifican binariamente los valores del tipo enumerado para que estos puedan ser sintetizados. posee alta impedancia ‘Z’. TIPO ENUMERADO es un tipo de dato con un grupo de posibles valores asignados por el usuario.std_logic_1164. existen dos formas de tipos compuestos.all.std_logic_arith. …). valor2.all. arrays y records.all. Los tipos enumerados se ordenan de acuerdo a sus valores. Igual que se permite crear un vector de bits se puede crear un vector de std_logic. desconocido ‘X’ ó sin inicializar ‘U’ entre otros. Los vectores están en C2 use ieee. Además del ‘0’ lógico y el ‘1’ lógico.std_logic_unsigned. Para poder utilizar las funciones aritmeticológicas definidas (suma. Algunos programas lo hacen mediante una secuencia binaria ascendente.3 de diciembre de 2010 PROYECTO RELOJ DIGITAL NATURAL range* POSITIVE range* REAL range* TIME *(range: n_min TO n_max. otros buscan cual es la codificación que mejor conviene para tratar de minimizar el circuito o para incrementar la velocidad del mismo una vez que la descripción ha sido sintetizada. STD_LOGIC_VECTOR. Tipo predefinido en el estándar IEEE 1164. Américo Álvarez Surci 15 .all. resta multiplicación) use ieee. Este tipo representa una lógica multivaluada de 9 valores.std_logic_unsigned. Si los vectores están en representación binaria pura use ieee. n_max DOWNTO n_min) STD_LOGIC. TIPOS COMPUESTOS un tipo compuesto es un tipo de dato formado con elementos de otros tipos. Para poder utilizar el tipo: use ieee. Los tipos enumerados se utilizan principalmente en el diseño de máquinas de estados type nombre is (valor1. Para poder utilizar el tipo std_logic hay que añadir la librería que lo soporta. También es posible asignar el tipo de codificación mediante directivas propias de la herramienta de síntesis. <= asignación de valores a señales. 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.(sig) +. abs *. UN RECORD es un objeto de datos que consiste en una “colección” de elementos de distintos tipos. -. & and.). mod. y operadores de asociación que relacionan un objeto de datos con otro. /. nor. aquí se enumeran las entradas y las salidas del diseño. ENTIDADES (ENTITY) Una entidad es la abstracción de un circuito. ya sea desde un complejo sistema electrónico hasta una simple compuerta lógica. rem + (sig. nand. ii) Estructura Básica de un archivo fuente en VHDL El archivo VHDL contiene la descripción del circuito que se quiere implementar. lo cual no existe en ningún lenguaje de programación de alto nivel. La entidad únicamente describe la forma externa del circuito. xor := asignación de valores a constantes y variables. OPERADORES.3 de diciembre de 2010 PROYECTO RELOJ DIGITAL UN ARRAY es un objeto de datos que consiste en una “colección” de elementos del mismo tipo. Américo Álvarez Surci 16 . end record. or. . type nombre is record elemento1: tipo_de_dato1. type nombre is array (rango) of tipo. elemento2: tipo_de_dato2. En VHDL existen distintos operadores de asignación con lo que se transfieren valores de un objeto de datos a otro. Define externamente al circuito o subcircuito. Figura 10: Ejemplo de “Entity” entity F is port (A. Y out bit). salida out. cte2: tipo:= valor 2. … : in tipo. end F. independientemente de cuál sea la arquitectura. 2. port (entrada1. 3. B: in bit. Tienes toda la información necesaria para conectar tu circuito a otros circuitos. Nombre y número de puertos. Además. entity nombre is generic (cte1: tipo := valor1. puertoi : modo tipo). Lo siguiente muestra un ejemplo de su contenido: 1. tipos de datos de entrada y salida.3 de diciembre de 2010 PROYECTO RELOJ DIGITAL Una entidad es análoga a un símbolo esquemático de los diagramas electrónicos. salida2. Los puertos pueden ser para señales de entrada in. el cual describe las conexiones del dispositivo hacia el resto del diseño. Américo Álvarez Surci 17 . que utilizará el modo in/out. salida1. entrada-salida o un buffer. entrada2. la entidad puede definir un valor genérico (GENERIC) que se utilizará para declarar las propiedades y constantes del circuito. …). …: out tipo. end nombre. ecuaciones booleanes process begin -. entonces la arquitectura representa la estructura interna de esa caja. dentro de él aparece la parte secuencial del circuito.declaraciones de la arquitectura -.instrucciones concurrentes -.señales -.código de descripción -. Una arquitectura se describe por comportamiento o por estructura. Los pares de entidades y arquitecturas se utilizan para representar la descripción completa de un diseño. La simulación no entra en el process hasta que no haya variado alguna de las señales o variables de su lista de sensibilidad independientemente de lo Américo Álvarez Surci 18 . constantes … 3. Una entidad puede tener más de una arquitectura. procedimientos. Si una entidad la asociamos con una “caja” en la que se enumeran las interfaces de conexión hacia el exterior. Señales internas. Lo siguiente muestra un ejemplo de su contenido: architecture arch_name of entity_name is -. Sus principales funciones son: 1. pero cuando se compile se debe indicar cuál es la arquitectura que queremos utilizar.componentes begin -. La descripción de la arquitectura puede ser estructural o por comportamiento. Una arquitectura describe el funcionamiento de la entidad a la que hace referencia. PROCESS: Cuando en VHDL se escribe un process. funciones. Define internamente el circuito.tipos -. 2.3 de diciembre de 2010 PROYECTO RELOJ DIGITAL ARQUITECTURA (ARCHITECTURE).código de descripción end process. end arch_name. 3 de diciembre de 2010 PROYECTO RELOJ DIGITAL que este contenido dentro del process. –instrucciones secuenciales when alternativa_n => . -. wait until condition.. Eventos sobre las señales (‘EVENT) nos indican cuando ocurre un cambio en la señal signal'event signal'last_event signal'last_value IF – THEN – ELSE solo son aplicables dentro de un process if condición then .. 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.instrucciones secuenciales when others => ..instrucciones secuenciales end case... CASE – WHEN solo son aplicables dentro de un process case expresión is when alternativa_l => . -.. wait for time_expression... Sentencias de descripción WAIT esta instrucción es utilizada en procesos que no tienen lista de sensibilidad: wait on signal_list.. –instrucciones secuenciales end if. –instrucciones secuenciales else .. –instrucciones secuenciales elsif otra_condición then .. FOR – LOOP solo son aplicables dentro de un process Américo Álvarez Surci 19 .. .. otro_valor when others. valor_i when valor_identificadori. WITH – SELECT – WHEN with identificador select Signal_name <= valor_1 when valor_identificador1.. valor_i when condicióni else otro_valor.3 de diciembre de 2010 PROYECTO RELOJ DIGITAL for loop_var in range loop .. Américo Álvarez Surci 20 .. valor_2 when valor_identificador2.instrucciones secuenciales end loop. WHEN – ELSE Signal_name <= valor_1 when condición1 else valor_2 when condición2 else ... .. -. WHILE – LOOP solo son aplicables dentro de un process while condición loop .instrucciones secuenciales end loop. -. 1. 3. SS: Segundos El bloque del segundero se lo implemento con un contador modulo-60 utilizando 2 circuitos integrados 7490 que son contadores BCD. para que pueda observarse en plenitud el diseño utilizado para el reloj digital. Ademas mostraremos cada bloque controlador por separado. según el siguiente diagrama de bloques: Figura 11: Diagrama de bloques del Segundero Américo Álvarez Surci 21 .3 de diciembre de 2010 PROYECTO RELOJ DIGITAL CAPITULO 3: MECANISMO DE DISEÑO Describiremos el proyecto a implementarse en laboratorio mediante componentes básicos ya vistos en el anterior capitulo. MM: Minutos De igual manera que el segundero se diseña un contador modulo 60 para el minutero. porque el punto común está conectado a la alimentación o “1” lógico.3 de diciembre de 2010 PROYECTO RELOJ DIGITAL Al primer contador se conecta el clock de 1Hz. que cuando cambie de “1” a “0” (flanco de bajada) hará como un pulso de clock. diseñado previamente con un multivibrador astable. Américo Álvarez Surci 22 . este código binario será decodificado a 7 segmentos para un display anodo común Figura 12: Diagrama de bloques del decodificador Cuando se menciona ánodo común es que el segmento se enciende con un “0” lógico. 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.2. El clock del segundo contador será el bit de mayor peso posicional de del primer contador.1001) del 0 al 9. 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. La cuenta realizada por los contadores BCD es de binario (0000 . 3. como es un contador BCD este cuenta de 0 al 9 una vez concluida esta cuenta vuelve a comenzar en 0. HH: Horas De igual manera que los anteriores elementos descritos. Cada contador a la salid se conectara un decodificador de 4 bits a 7 segmentos para observar los 2 dígitos de este. las horas será un contador mudulo-24 que contara las horas. 3. El reset será utilizando ambos contadores según el diagrama siguiente Américo Álvarez Surci 23 .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.3. el clock el primer contador será el impulso reset del minutero que se realiza cada que se cumple los 60 minutos. para mostrar los 2 dígitos del minutero. Cuando se presione un botón reseteara el modulo inmediatamente inferior. Américo Álvarez Surci 24 . para modificar minutos y horas respectivamente. Se pondrá 2 botones conectados a la alimentación. Ajuste de hora Para el ajuste de hora se aprovechara los impulsos realizados por el bloque del segundero y del minutero.3 de diciembre de 2010 PROYECTO RELOJ DIGITAL Figura 14: Diagrama de bloques del Horero 3. 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. luego minutos en ese orden. asi que se tendrá que modificar horas. ya que estos son los clock de entrada de los bloques de minutero y horero.4. clk1.clk5: std_logic:='0'.3 de diciembre de 2010 PROYECTO RELOJ DIGITAL 3. utilizamos una señal de este para habilitar el bloque minutero cada 60 segundos.std_logic_1164.clk2. 3.clk3.Reloj Digital -. con todas las características del diseño circuital anteriormente descrito: 1. Ya que no tenemos limitaciones económicas. se añadirá un selector que cuando este en “1” se pueda modificar la hora y cuando este en “0” no se pueda.ajuste:in std_logic. Américo Álvarez Surci 25 .hex1. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 -----------------------------------------------------------------.hex4. 2. signal clk_a1. ni de CI al momento de realizar la descripción en vhdl.Un bloque minutero contador modulo-60. reset.hex5:out std_logic_vector(0 to 6) ).Un bloque de horas contador modulo-24.clk4.5.clk_a2:std_logic:='0'. ----------------------------------------------------------------library ieee. use ieee. Además de un Reset para reiniciar nuestro sistema.Autor: Américo Alvarez S.hex3. end reloj_v3. architecture rtl of reloj_v3 is signal clk0. utilizamos una señal de este para habilitar el bloque horero cada 60 minutos.ajuste_mm:in std_logic. entity reloj_v3 is port(clk_50Mhz:in std_logic. signal ajuste_sync:std_logic. Además de mostrar la hora esta se debe modificar en cualquier momento que el usuario requiera mediante 2 botones para modificar horas y minutos.Un bloque segundero contador modulo-60.hex2. Descripción VHDL Mediante el uso de lenguaje de descripción de hardware se procederá a describir el reloj digital.all. hex0. ajuste_hh. end if.--50000000. end if. -. when 4 => hex := "1001100". else count <=0. end if. end case. when others => null. end process. when 2 => hex := "0010010". begin case digito is when 0 => hex := "0000001".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. function numero(digito:integer) return std_logic_vector is Variable hex:std_logic_vector(0 to 6). if (count <= half) then clk0 <='0'. when 6 => hex := "1100000". constant half: integer := max/2. signal count: integer range 0 to max. when 7 => hex := "0001111". when 9 => hex := "0000100". begin -. when 8 => hex := "0000000". when 1 => hex := "1001111".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. end numero.definimos el reloj como tal Américo Álvarez Surci 26 . when 3 => hex := "0000110". return(hex). when 5 => hex := "0100100". else clk0 <='1'. variable dd_m: integer range 0 to 6.ajuste. clk1 <= '1'. end if. -. end if.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.ajuste_hh.señal asincrona de reset if (reset='1') then uu_s:=0. else -. end if. variable uu_h: integer range 0 to 10. variable uu_m: integer range 0 to 10. dd_s:=0.señal de ajuste minutos Américo Álvarez Surci 27 . if (clk1'event and clk1='1') then dd_s:= dd_s+1. clk1 <= '0'. end if.definimos segundos contador mod 60 if (clk0'event and clk0='1') then uu_s:= uu_s+1. variable dd_s: integer range 0 to 6.ajuste_mm) variable uu_s: integer range 0 to 10. clk2 <= '0'. dd_m:=0.reset. uu_m:=0. dd_h:=0. clk2 <= '1'. uu_h:=0. if (dd_s=6) then dd_s := 0. if (uu_s=10) then uu_s := 0. variable dd_h: integer range 0 to 3. begin -. 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 -. clk_a1<=(clk2 and not ajuste_sync) or (ajuste_mm and ajuste_sync).definimos horas contador mod 24 if (clk_a2'event and clk_a2='1') then uu_h:= uu_h+1. clk5 <= '1'. if (clk3'event and clk3='1') then dd_m:= dd_m+1. if (uu_m=10) then uu_m := 0. if (uu_h=10) then uu_h := 0. end if. end if. clk5 <= '0'.definimos minutos contador mod 60 if (clk_a1'event and clk_a1='1') then uu_m:= uu_m+1. -. clk4 <= '1'. -. clk4 <= '0'. end if.sincronizamos a los segundos if (clk0'event and clk0='0') then ajuste_sync<=ajuste. clk3 <= '1'. end if. end if. Américo Álvarez Surci 28 . clk3 <= '0'. end if. end if.señal de ajuste minutos clk_a2<=(clk4 and not ajuste_sync) or (ajuste_hh and ajuste_sync). -. if (dd_m=6) then dd_m := 0. mostramos en displays hex0 <= numero(uu_s). end if. end rtl.definimos la alarma -.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. hex1 <= numero(dd_s). if (dd_h=2 and uu_h=4) then uu_h:= 0. Tabla 5: Código VHDL reloj digital Américo Álvarez Surci 29 . hex4 <= numero(uu_h). hex3 <= numero(dd_m). end if. hex5 <= numero(dd_h). -. end if. dd_h:= 0. hex2 <= numero(uu_m). end process. 1. Simulación plano circuital usando Proteus Figura 15: Plano Circuital completo del Reloj digital Américo Álvarez Surci 30 .3 de diciembre de 2010 PROYECTO RELOJ DIGITAL CAPITULO 4: SIMULACIONES Y PRUEBAS EN LABORATORIO 4. se envía un Impulso (clock del horero) Américo Álvarez Surci 31 . se envía un Impulso (clock del minutero) Figura 17: cada 60 impulsos del minutero. Que sirve como clock para el bloque del minutero U3 es la generación 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. U6 es la generación de impulsos por el reset del modulo del Segundero (cada 60 segundos).3 de diciembre de 2010 PROYECTO RELOJ DIGITAL Análisis diagrama de tiempos de los clock del circuito U1 es la señal de clock de 1hz. unidades segundero. caso contrario no. Reset representa la entrada de reset que pulsaremos en cualquier momento. se podrá ajustar la hora (ajuste_hh) y minutos(ajuste_mm). cabe mencionar que se establecieron señales de prueba de reset y modificar hora. del decodificador Decimal El Análisis diagrama de tiempos en quatus2 se presenta a continuación: Clk0 representa la señal de 1Hz. Las señales de salida de los displays de 7 segmentos se los muestra en su equivalente decimal del numero de 7 bits que representa.3 de diciembre de 2010 PROYECTO RELOJ DIGITAL 4. decenas segundero. en cualquier instante de cuenta de nuestro reloj digital. Simulación VHDL usando Quatus2 A continuación se presenta la simulación del diagrama de tiempos simulado en quartus2.2. Ajuste: cuando este en 1 logico. Américo Álvarez Surci 32 . Hex0: primer digito segundero. Hex1: segundo digito segundero. según la siguiente tabla: Display Numero decimal 7 segmentos mostrado en a b c d e f g la simulación 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. Hex5: segundo digito horero.3 de diciembre de 2010 PROYECTO RELOJ DIGITAL Hex2: primer digito minutero. Figura 18: Segmento de cuenta segundero y reset Américo Álvarez Surci 33 . decenas horero. decenas minutero. unidades horero. Hex3: segundo digito minutero. Hex4: primer digito horero. unidades minutero. 3 de diciembre de 2010 PROYECTO RELOJ DIGITAL Figura 19: Segmento. ajustando horas y minutos Américo Álvarez Surci 34 . Añadir a este mismo reloj un cronometro digital utilizando los displays empleados. 5. La descripción fue más rápida y es fácil detectar los errores en sintaxis del lenguaje de nuestra descripción. así no se tendrá falencias en componentes que hay pocos en nuestro mercado. 2. Se podría implementar esto con comparadores. se encienda la alarma. para realizar la cuenta de días. Mejoras Implementar un reloj que además nos brinde un calendario. Conclusiones Se diseño e implemento satisfactoriamente el reloj digital utilizando componentes digitales básicos. Se puede utilizar el impulso de reset del modulo de horas. y estos realizarían de meses. 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. en futuras ocasiones se debería de dar más manejo a este lenguaje. fue más preciso que el ensamblado.1. Se podría implementar un calendario utilizando una memoria EEPROM ya que los meses varían en número de días. 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. Américo Álvarez Surci 35 . que se introdusca la hora de alarma a un registro y que cuando la hora sea igual que el dato guardado en el registro. la fecha del día en que nos encontramos. y cuando se apage de igual manera con otro registro para apagar la alarma a los “X” segundos. Añadir al reloj una alarma a manera de despertador u otra alarma según sea el agrado del diseñador. Implementarlo en pantalla LCD 16x2.3 de diciembre de 2010 PROYECTO RELOJ DIGITAL CAPITULO 5: CONCLUSIONES Y MEJORAS 5. El inconveniente estaría en el reloj de 10Hz. La descripción en vhdl nos ahorro mucho tiempo y se le dio el añadido del activar el ajuste de hora y un reset del sistema. 1. Tarjeta Cyclone II.DE2 de Altera Américo Álvarez Surci 36 .iesleonardo.3 de diciembre de 2010 PROYECTO RELOJ DIGITAL 6. 2. Problemas de circuitos y sistemas digitales Mc Graw Hill Fundamentos de lógica digital con diseño VHDL Stephen Brown – Zvonko Vranesic Circuit Desing with VHDL Volnei A. 3. 5. Pedroni DE2_UserManual http://www. ANEXOS 7. BIBLIOGRAFÍA 1. 4.info/ele/pro/CURSO%202001-2002/p02-relojdigital/ 7. and MP3 players. The DE2 platform allows users to quickly understand all the insight tricks to design real multimedia projects for industry. VGA and TV Labs. 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. NIOSII. and Control Panel API Américo Álvarez Surci 37 . SD Card reader. line-out.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. RS-232/PS-2 Communication Labs. USB Host/Slave Controller with USB type A and type B connectors. 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. CD-Quality Music Player. VCD. 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. 3 de diciembre de 2010 PROYECTO RELOJ DIGITAL Américo Álvarez Surci 38 .