Está en la página 1de 44

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
Decimal 4bits 7 segmentos
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 t 2  ln 2  R2  C
y
t1  0.693  R1  R2   C t 2  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  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 PROYECTO RELOJ DIGITAL

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 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.
<= asignación de valores a señales.

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


El archivo VHDL contiene la descripción del circuito que se quiere implementar.

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. La entidad únicamente describe la forma externa del circuito, aquí se enumeran las entradas y las salidas del diseño.

Américo Álvarez Surci 16


3 de diciembre de 2010 PROYECTO RELOJ DIGITAL

Una entidad es análoga a un símbolo esquemático de los diagramas electrónicos, el cual describe las conexiones del
dispositivo hacia el resto del diseño. Lo siguiente muestra un ejemplo de su contenido:

1. Define externamente al circuito o subcircuito.


2. Nombre y número de puertos, tipos de datos de entrada y salida.
3. Tienes toda la información 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 señales de entrada in, salida out, entrada-salida o un buffer; que utilizará el modo in/out.
Además, la entidad puede definir un valor genérico (GENERIC) que se utilizará para declarar las propiedades y constantes del
circuito, independientemente de cuál 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;

Américo Álvarez Surci 17


3 de diciembre de 2010 PROYECTO RELOJ DIGITAL

ARQUITECTURA (ARCHITECTURE).
Los pares de entidades y arquitecturas se utilizan para representar la descripción completa de un diseño. 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 conexión hacia el exterior, entonces la arquitectura representa la estructura interna de esa caja. Sus principales
funciones son:

1. Define internamente el circuito.


2. Señales internas, funciones, procedimientos, constantes …
3. La descripción 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
-- señales
-- componentes
begin
-- código de descripción
-- instrucciones concurrentes
-- ecuaciones booleanes
process
begin
-- código de descripción
end process;
end arch_name;

Una arquitectura se describe por comportamiento o por estructura. Una entidad puede tener más de una arquitectura, pero cuando
se compile se debe indicar cuál es la arquitectura que queremos utilizar.

PROCESS: Cuando en VHDL se escribe un process, dentro de él aparece la parte secuencial del circuito. 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
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 descripción
WAIT esta instrucción es utilizada en procesos que no tienen lista de sensibilidad:
wait on signal_list;
wait for time_expression;
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
... –instrucciones secuenciales
elsif otra_condición then
... –instrucciones secuenciales
else
... –instrucciones secuenciales
end if;

CASE – WHEN solo son aplicables dentro de un process


case expresión 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

Américo Á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 condición loop
... -- instrucciones secuenciales
end loop;

WHEN – ELSE
Signal_name <= valor_1 when condición1 else
valor_2 when condición2 else
...
valor_i when condicióni 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;

Américo Álvarez Surci 20


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. Ademas
mostraremos cada bloque controlador por separado, para que pueda observarse en plenitud el diseño 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, 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

Al primer contador se conecta el clock de 1Hz, diseñado 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 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, porque el punto común está conectado
a la alimentación o “1” lógico.

3.2. MM: Minutos

De igual manera que el segundero se diseña 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.

Américo Á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
dígitos 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 dígitos de este. 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 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 alimentación, 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 botón reseteara el modulo inmediatamente inferior, asi que se tendrá que modificar horas, luego
minutos en ese orden.

Américo Álvarez Surci 24


3 de diciembre de 2010 PROYECTO RELOJ DIGITAL

3.5. Descripción VHDL

Mediante el uso de lenguaje de descripción de hardware se procederá a describir el reloj digital, con todas las características del
diseño circuital anteriormente descrito:

1- Un bloque segundero contador modulo-60, utilizamos una señal de este para habilitar el bloque minutero cada 60 segundos.
2- Un bloque minutero contador modulo-60, utilizamos una señal de este para habilitar el bloque horero cada 60 minutos.
3- Un bloque de horas contador modulo-24.

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.

Ya que no tenemos limitaciones económicas, ni de CI al momento de realizar la descripción en vhdl, se añadirá un selector que
cuando este en “1” se pueda modificar la hora y cuando este en “0” no se pueda. Además de un Reset para reiniciar nuestro sistema.

1 -----------------------------------------------------------------
2 -- Reloj Digital
3 -- Autor: Américo Alvarez S.
4 -----------------------------------------------------------------
5 library ieee;
6 use ieee.std_logic_1164.all;
7
8 entity reloj_v3 is
9 port(clk_50Mhz:in std_logic;
10 reset,ajuste:in std_logic;
11 ajuste_hh,ajuste_mm:in std_logic;
12 hex0,hex1,hex2,hex3,hex4,hex5:out std_logic_vector(0 to 6)
13 );
14 end reloj_v3;
15
16 architecture rtl of reloj_v3 is
17 signal clk0,clk1,clk2,clk3,clk4,clk5: std_logic:='0';
18 signal clk_a1,clk_a2:std_logic:='0';
19 signal ajuste_sync:std_logic;
Américo Álvarez Surci 25
3 de diciembre de 2010 PROYECTO RELOJ DIGITAL

20 constant max: integer := 2;--50000000;


21 constant half: integer := max/2;
22 signal count: integer range 0 to max;
23 function numero(digito:integer) return std_logic_vector is
24 Variable hex:std_logic_vector(0 to 6);
25 begin
26 case digito is
27 when 0 => hex := "0000001";
28 when 1 => hex := "1001111";
29 when 2 => hex := "0010010";
30 when 3 => hex := "0000110";
31 when 4 => hex := "1001100";
32 when 5 => hex := "0100100";
33 when 6 => hex := "1100000";
34 when 7 => hex := "0001111";
35 when 8 => hex := "0000000";
36 when 9 => hex := "0000100";
37 when others => null;
38 end case;
39 return(hex);
40 end numero;
41 begin
42 -- definimos el clock de 1 hz
43 process (clk_50Mhz)
44 begin
45 if (clk_50Mhz'event and clk_50Mhz='1') then
46 if (count < max) then count <=count + 1;
47 else count <=0;
48 end if;
49 if (count <= half) then clk0 <='0';
50 else clk0 <='1';
51 end if;
52 end if;
53 end process;
54 -- definimos el reloj como tal
Américo Álvarez Surci 26
3 de diciembre de 2010 PROYECTO RELOJ DIGITAL

55 process (clk0,reset,ajuste,ajuste_hh,ajuste_mm)
56 variable uu_s: integer range 0 to 10;
57 variable dd_s: integer range 0 to 6;
58 variable uu_m: integer range 0 to 10;
59 variable dd_m: integer range 0 to 6;
60 variable uu_h: integer range 0 to 10;
61 variable dd_h: integer range 0 to 3;
62 begin
63 -- señal asincrona de reset
64 if (reset='1') then
65 uu_s:=0;
66 dd_s:=0;
67 uu_m:=0;
68 dd_m:=0;
69 uu_h:=0;
70 dd_h:=0;
71 else
72 -- definimos segundos contador mod 60
73 if (clk0'event and clk0='1') then
74 uu_s:= uu_s+1;
75 clk1 <= '0';
76 if (uu_s=10) then
77 uu_s := 0;
78 clk1 <= '1';
79 end if;
80 end if;
81 if (clk1'event and clk1='1') then
82 dd_s:= dd_s+1;
83 clk2 <= '0';
84 if (dd_s=6) then
85 dd_s := 0;
86 clk2 <= '1';
87 end if;
88 end if;
89 -- señal de ajuste minutos
Américo Álvarez Surci 27
3 de diciembre de 2010 PROYECTO RELOJ DIGITAL

90 -- sincronizamos a los segundos


91 if (clk0'event and clk0='0') then
92 ajuste_sync<=ajuste;
93 end if;
94 clk_a1<=(clk2 and not ajuste_sync) or (ajuste_mm and
95 ajuste_sync);
96 -- definimos minutos contador mod 60
97 if (clk_a1'event and clk_a1='1') then
98 uu_m:= uu_m+1;
99 clk3 <= '0';
100 if (uu_m=10) then
101 uu_m := 0;
102 clk3 <= '1';
103 end if;
104 end if;
105 if (clk3'event and clk3='1') then
106 dd_m:= dd_m+1;
107 clk4 <= '0';
108 if (dd_m=6) then
109 dd_m := 0;
110 clk4 <= '1';
111 end if;
112 end if;
113 -- señal de ajuste minutos
114 clk_a2<=(clk4 and not ajuste_sync) or (ajuste_hh and
115 ajuste_sync);
116 -- definimos horas contador mod 24
117 if (clk_a2'event and clk_a2='1') then
118 uu_h:= uu_h+1;
119 clk5 <= '0';
120 if (uu_h=10) then
121 uu_h := 0;
122 clk5 <= '1';
123 end if;
124 end if;
Américo Álvarez Surci 28
3 de diciembre de 2010 PROYECTO RELOJ DIGITAL

125 if (clk5'event and clk5='1') then


126 dd_h:= dd_h+1;
127 end if;
128 if (dd_h=2 and uu_h=4) then
129 uu_h:= 0;
130 dd_h:= 0;
131 end if;
132 end if;
133 -- definimos la alarma
134
135 -- mostramos en displays
136 hex0 <= numero(uu_s);
137 hex1 <= numero(dd_s);
138 hex2 <= numero(uu_m);
139 hex3 <= numero(dd_m);
140 hex4 <= numero(uu_h);
141 hex5 <= numero(dd_h);
end process;
end rtl;
Tabla 5: Código VHDL reloj digital

Américo Álvarez Surci 29


3 de diciembre de 2010 PROYECTO RELOJ DIGITAL

CAPITULO 4: SIMULACIONES Y PRUEBAS EN LABORATORIO


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

Análisis diagrama de tiempos de los clock del circuito

 U1 es la señal de clock de 1hz.


 U6 es la generación de impulsos por el reset del modulo del Segundero (cada 60 segundos). 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, se envía un Impulso (clock del minutero)

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

Américo Álvarez Surci 31


3 de diciembre de 2010 PROYECTO RELOJ DIGITAL

4.2. Simulación VHDL usando Quatus2

A continuación se presenta la simulación del diagrama de tiempos simulado en quartus2, cabe mencionar que se
establecieron señales de prueba de reset y modificar hora, en cualquier instante de cuenta de nuestro reloj digital.

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, según la siguiente tabla:

Display Numero decimal


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

El Análisis diagrama de tiempos en quatus2 se presenta a continuación:

 Clk0 representa la señal 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.

Américo Á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

Américo Álvarez Surci 33


3 de diciembre de 2010 PROYECTO RELOJ DIGITAL

Figura 19: Segmento, ajustando horas y minutos

Américo Álvarez Surci 34


3 de diciembre de 2010 PROYECTO RELOJ DIGITAL

CAPITULO 5: CONCLUSIONES Y MEJORAS


5.1. Conclusiones

 Se diseño e implemento satisfactoriamente el reloj digital utilizando componentes digitales básicos.


 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 más 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 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. La
descripción fue más rápida y es fácil detectar los errores en sintaxis del lenguaje de nuestra descripción, en futuras ocasiones
se debería de dar más manejo a este lenguaje, así no se tendrá falencias en componentes que hay pocos en nuestro mercado.

5. 2. Mejoras

 Implementar un reloj que además nos brinde un calendario, la fecha del día en que nos encontramos. Se puede utilizar el
impulso de reset del modulo de horas, para realizar la cuenta de días, y estos realizarían de meses. Se podría implementar un
calendario utilizando una memoria EEPROM ya que los meses varían en número de días.
 Añadir al reloj una alarma a manera de despertador u otra alarma según sea el agrado del diseñador. Se podría 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.
 Añadir a este mismo reloj un cronometro digital utilizando los displays empleados. El inconveniente estaría en el reloj de
10Hz.
 Implementarlo en pantalla LCD 16x2.

Américo Álvarez Surci 35


3 de diciembre de 2010 PROYECTO RELOJ DIGITAL

6. BIBLIOGRAFÍA
1. Problemas de circuitos y sistemas digitales Mc Graw Hill
2. Fundamentos de lógica digital con diseño VHDL Stephen Brown – Zvonko Vranesic
3. Circuit Desing with VHDL Volnei A. Pedroni
4. DE2_UserManual
5. http://www.iesleonardo.info/ele/pro/CURSO%202001-2002/p02-relojdigital/

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

Américo Á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

Américo Álvarez Surci 37


3 de diciembre de 2010 PROYECTO RELOJ DIGITAL

Américo Álvarez Surci 38

También podría gustarte