Reloj Digital

Universidad Mayor de San Andrés Facultad de Ingeniería Carrera Ingeniería Electrónica Proyecto de Final de Curso ETN 60

Views 257 Downloads 11 File size 4MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Universidad Mayor de San Andrés Facultad de Ingeniería Carrera Ingeniería Electrónica

Proyecto 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

IV

INDICE DE TABLAS

V

RESUMEN

VI

CAPITULO 1: ANTECEDENTES Y PROPÓSITOS

1

1.1. Introducción

1

1.2. Objetivos

2

1.2.1. Objetivo principal

2

1.2.2. Objetivos secundarios

2

1.3. Metodología

2

CAPITULO 2: DESARROLLO TEÓRICO

3

2.1. Elementos del reloj digital

5

2.1.1. Codificadores, decodificadores

5

2.1.2. Contadores

8

2.1.3. Generador de pulsos (multivibrador-astable)

11

2.3. Descripción de Hardware

13

2.3.1. VHDL

13

i) Elementos Básicos VHDL

14

ii) Estructura Básica de un archivo fuente en VHDL

16

CAPITULO 3: MECANISMO DE DISEÑO

21

3.1. SS: Segundos

21

3.2. MM: Minutos

22

3.3. HH: Horas

23

3.4. Ajuste de hora

24

3.5. Descripción VHDL

25 ii

CAPITULO 4: SIMULACIONES Y PRUEBAS EN LABORATORIO

30

4.1. Simulación plano circuital usando Proteus

30

4.2. Simulación VHDL usando Quatus2

32

CAPITULO 5: CONCLUSIONES Y MEJORAS

35

5.1. Conclusiones

35

5. 2. Mejoras

35

6. BIBLIOGRAFÍA

36

7. ANEXOS

36

7.1. Tarjeta Cyclone II- DE2 de Altera

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

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, del decodificador

v

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

vi

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, y ha sido utilizada incluso en dispositivos pequeños como un reloj, 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. El reloj digital es un proyecto ampliamente conocido y realizado en cursos básicos de sistemas digitales, con este proyecto se pretende demostrar todo lo aprendido en dicho curso. La bibliografía que se puede encontrar sobre este tema es extensa, el añadido de este trabajo es que aparte de diseñar el reloj con circuitos integrados comunes, se utiliza la descripción de hardware para describir nuestro reloj digital.

Figura 1: Reloj Digital

Américo Álvarez Surci

1

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

1.2. Objetivos 1.2.1. Objetivo principal 

Diseño e implementación de un Reloj digital utilizando componentes digitales básicos y descripción de este, utilizando VHDL.

1.2.2. Objetivos secundarios   

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

1.3. 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, conectados de tal forma que emulen el funcionamiento de un típico reloj digital. Y cuando nos referimos a software utilizaremos el paquete informático Quatus-2, para realizar la descripción de hardware utilizando el lenguaje vhdl, para describir nuestro circuito reloj digital. Además para correcciones si se lo amerita se empleara el software Proteus, para la simulación de nuestro circuito a montar en laboratorio.

Américo Álvarez Surci

2

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

CAPITULO 2: DESARROLLO TEÓRICO

Se denomina reloj a un instrumento que permite medir el tiempo. Existen diversos tipos, que se adecuan según el propósito:    

Conocer la hora actual (reloj de pulsera (automático o 'de cuerda'), reloj de bolsillo, reloj de salón o pared, cronómetro) Medir la duración de un suceso (cronógrafo, reloj de arena) Señalar las horas por sonidos parecidos a campanadas o pitidos (reloj de péndulo, 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, han ido apareciendo nuevos modelos con mayor precisión, mejor prestancia y menor costo de fabricación. 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. Mucha gente, además de la utilidad que los caracteriza, los ostenta como símbolo de distinción y estatus social. 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.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 años. A pesar de ello, los físicos continúan experimentando con nuevas variaciones, como los másers de hidrógeno (Townes), los de bombeo óptico de rubidio (Kasler) o los recientemente propuestos de mercurio, que permitirían alcanzar mayor precisión. En agosto de 2004 del NIST hicieron la primera demostración de un reloj atómico del tamaño de un circuito integrado. Esto representa un reloj cien veces menor que cualquier otro construido hasta la fecha y con un consumo de sólo 0,079 vatios. Un reloj digital es un tipo de reloj que basa su funcionamiento en la electrónica digital para marcar el tiempo. La invención, en 1956, 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.

Américo Álvarez Surci

3

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 números. Estos relojes también incluyen otros elementos, para indicar si la hora es por la mañana AM o por la tarde PM, así como si está activada la alarma y a qué hora está programada. Los relojes digitales son muy pequeños, útiles y baratos. Por estas razones se han incorporado a la mayoría de equipos electrónicos. 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. Debido a lo barato que son los relojes digitales ya se han impuestos en muchas aplicaciones, y así la mayoría de despertadores son ya digitales, los relojes que hay en electrodomésticos, ordenadores, teléfonos celulares, automóviles, 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 electrónicos analógicos de cuarzo.

Figura 2: Reloj Atómico NIST-F1, EE.UU. Américo Álvarez Surci

4

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

2.1. 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, también. 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 señal periódica. El divisor de frecuencia es un circuito digital formado por una sucesión de contadores hasta obtener una frecuencia de 1 Hz, que permite mostrar segundos. Si se quiere mostrar décimas, la división se detiene al llegar a los 10 Hz. Esta frecuencia pasa al módulo de presentación, que puede ser electrónico o mecánico, donde otros divisores van separando los segundos, minutos y horas para presentarlas mediante algún tipo de display.

2.1.1. Codificadores, 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, una y sólo una de las salidas se activa. Es decir, convierte un código binario de entrada en código "1-entre-n”. Su símbolo para el caso DEC 2:4 con habilitación y salidas activa en alta, 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, 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. Para mostrar números 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 común De la tabla, los elementos marcados con “X”, no serán utilizados por que tan solo necesitamos los números 0 al 9, el circuito integrado que realiza la decodificación de binario a display ánodo común es el 7447.

Américo Álvarez Surci

6

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

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 módulo-K cuenta K valores de forma cíclica, normalmente entre 0 y el K-1. Además, 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 tamaño del contador. El tamaño se especifica por el módulo (p.ej.: módulo 10) o por el número de bits en caso de módulos 2n. Por ejemplo, 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, carga, puesta a 0 e inhibición.

Figura 5: Contador Síncrono Modulo-3

En la siguiente figura aparece la secuencia de salidas de un contador módulo 8 ascendente. Como se observa, el periodo de las señales de salida va duplicándose, lo que motiva que a los contadores se les denomine, también, divisores de frecuencia.

Américo Álvarez Surci

8

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, además 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 asíncronos; y 2) los síncronos. En los contadores de rizado la salida de cada biestable se utiliza como señal de reloj del siguiente.

Figura 7: Contador Asíncrono El circuito integrado 7490 nos brinda un contador BCD de modulo-10. Con la interconexión de varios podemos realizar contadores de módulos mayores (p.ej.: modulo-60).

Américo Álvarez Surci

9

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

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

2.1.3. Generador de pulsos (multivibrador-astable) Los contadores digitales anteriormente vistos, utilizar una señal de clock que no es otra cosa más que un tren de pulsos con una frecuencia dada. La precisión del reloj depende de esta frecuencia de clock. En electrónica, un astable es un multivibrador que no tiene ningún 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 conmutación depende, en general, de la carga y descarga de condensadores.

Figura 8: Multivibrador astable con transistores

También podemos obtener un multivibrador utilizando el CI 555, que un circuito integrado ampliamente conocido con mucha información.

Américo Álvarez Surci

11

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

555 modo astable:

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 señal de salida tiene un nivel alto por un tiempo t1 y un nivel bajo por un tiempo t2. La duración de estos tiempos depende de los valores de R1, R2 y C, según las fórmulas siguientes:

t1  ln 2   R1  R2   C

y

t1  0.693  R1  R2   C

t 2  ln 2  R2  C t 2  0.693  R2  C

La frecuencia con que la señal de salida oscila está dada por la fórmula:

f 

1 0.693  C  R1  2 R2 

Américo Álvarez Surci

12

3 de diciembre de 2010

PROYECTO RELOJ DIGITAL

2.3. 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. Un lenguaje de programación ofrece la posibilidad de un alto nivel de abstracción y es la solución adecuada para dicha tarea. Los lenguajes de descripción hardware son lenguajes de alto nivel con una sintaxis similar a los de programación (C, ADA, Pascal, Modula, etc.) y una semántica que permite el modelado y simulación de los dispositivos hardware a diferentes niveles de abstracción. Los primeros lenguajes de este tipo sólo pretendían servir de vehículo de comunicación del diseño. Los actuales lenguajes han adquirido un alto grado de estandarización y han adoptado los nuevos conceptos de la ingeniería de software, permitiendo la verificación de la especificación del diseño mediante simulación.

2.3.1. VHDL VHDL es un lenguaje de descripción de circuitos electrónicos digitales que utiliza distintos niveles de abstracción. 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 diseño. VHDL no es un lenguaje de programación, por ello conocer su sintaxis no implica necesariamente saber diseñar con él. VHDL es un lenguaje de descripción de hardware genérico, que permite describir circuitos síncronos y asíncronos. 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 cuál secuencial. Los circuitos descritos en VHDL pueden ser simulados utilizando herramientas de simulación para reproducir el funcionamiento del circuito. Además utilizando herramientas de síntesis se puede implementar dicho circuito en un dispositivo lógico programable o en un circuito integrado.

Américo Álvarez Surci

13

3 de diciembre de 2010

i)

PROYECTO RELOJ DIGITAL

Elementos básicos 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 simulación 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 simulación con una sentencia de asignación. 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 señales representan elementos de memoria o conexiones y si pueden ser sintetizadas. Los puertos de una entidad son implícitamente declarados como señales en el momento de la declaración, ya que estos representan conexiones. También pueden ser declaradas en la arquitectura antes del BEGIN, lo cual nos permite realizar conexiones entre diferentes módulos. 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* Américo Á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 estándar IEEE 1164. Este tipo representa una lógica multivaluada de 9 valores. Además del ‘0’ lógico y el ‘1’ lógico, 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 añadir la librería que lo soporta. Para poder utilizar el tipo: use ieee.std_logic_1164.all. Para poder utilizar las funciones aritmeticológicas definidas (suma, resta multiplicación) use ieee.std_logic_arith.all. Si los vectores están en representación binaria pura use ieee.std_logic_unsigned.all. Los vectores están 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 diseño de máquinas de estados type nombre is (valor1, valor2, …); Los tipos enumerados se ordenan de acuerdo a sus valores. Los programas de síntesis automáticamente 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 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. También es posible asignar el tipo de codificación mediante directivas propias de la herramienta de síntesis. 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. Américo Álvarez Surci

15

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. type nombre is array (rango) of tipo; UN RECORD es un objeto de datos que consiste en una “colección” 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 asignación con lo que se transfieren valores de un objeto de datos a otro, y operadores de asociación que relacionan un objeto de datos con otro, lo cual no existe en ningún lenguaje de programación de alto nivel. abs *, /, mod, rem + (sig.), - (sig) +, -, & and, or, nand, nor, xor := asignación de valores a constantes y variables.