Proyecto, Sistemas Digitales 2

LEON [NOMBRE DE LA EMPRESA] RELOJ DIGITAL EN INTEGRANTES:  Tafur Gutiérrez Alvaro  León Rafael Fran  Pisfil Fuentes

Views 113 Downloads 5 File size 1MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

LEON [NOMBRE DE LA EMPRESA]

RELOJ DIGITAL EN

INTEGRANTES:  Tafur Gutiérrez Alvaro  León Rafael Fran  Pisfil Fuentes Jesús

INDICE: CAPITULO 1: ANTECEDENTES Y PROPÓSITOS

1.1. Introducción

1

1.2. Objetivos 1.2.1. Objetivo principal

2

1.2.2. Objetivos secundarios 1.3. Metodología

CAPITULO 2: DESARROLLO TEÓRICO 2.1. Elementos del reloj digital

2 2 2

3 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 2.3.1. VHDL

13 13

i) Elementos Básicos VHDL

14

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

16

CAPITULO 3: MECANISMO DE DISEÑO

1

1

21

3.1. SS: Segundos

21

3.2. MM: Minutos

22

3.3. HH: Horas 3.4. Ajuste de hora

23

3.5. Descripción VHDL

26

24

Capitulo 4: SIMULACIONES Y PRUEBAS

32 4.1. Simulación plano circuital usando Proteus 33 4.2 . Simulación VHDL usando Quatus2

Capitulo 5 : conclusiones y observaciones

2

34

37

CAPITULO 1: INTRODUCCION 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.

3

4

1.1.

OBJETIVOS 1.1.1.

OBJETIVO PRINCIPAL

 Diseño e implementación de un utilizando componentes digitales descripción de este, utilizando VHDL. 1.1.2.

Reloj digital básicos y

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.2.

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.

5

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

6

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.

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

7

habilitación y salidas activa en alta, su tabla de verdad y sus ecuaciones de cada salida se muestran a continuación:

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:

B 20

B 10

B 0 0

a

0

B 3 0

Display 7 segmentos b c d e f

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

Decim al

8

Binario 4bits

g

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

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.

9

Diagrama de Pines CI 7447

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 2 n-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.

1

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.

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

1

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.

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.

Secuencia de Cuenta de CI 7490 Note A: Salida QA tiene que estar conectada a la entrada B para la cuenta BCD.

1

Tabla de verdad de CI 7490

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.

1

Multivibrador astable con transistores

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

555 MODO ASTABLE:

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

1

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 t2  ln2 R2  C

t1  0.693 R1  R2  C t2  0.693 R2  C

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

1 f  0.693 C  R1  2R2 

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

1

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 variables ni funciones.  Evitar bucles condicionados.

combinacionales

y

en

relojes

 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.

i)

ELEMENTOS BÁSICOS VHDL

VHDL es un lenguaje y como tal, posee sus tipos de datos y operadores. Los datos se almacenan en objetos

1

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

1

CHARACTER {ascii} STRING {ascii} SEVERITY_LEVEL {WARNING, ERROR, FALURE} INTEGER range* 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 1

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.

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

1

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 variables.