Universidad Mayor de San Andrés Facult cultaad de Inge In geni nieer ía Carrera Ingeniería Electrónica
Pr oyecto de de Fi nal de Cur Cursso ETN 601 - Si stemas Digi Digitt ales I
“DISEÑO E IMPLEMENTACIÓN DE UN RELOJ DIGITAL”
Por: Amér Amér i co Álvare Álvar ez Sur Surci ci
I NDI NDIC CE GENER GENERAL AL INDI NDIC CE DE FIG FIGUR URAS AS
IV
INDI NDIC CE DE TABLAS TABLAS
V
RESUMEN
VI
CAPIT API TULO ULO 1: AN ANT TEC ECEDENT EDENTES ESY PROPÓ PROPÓS SITOS
1
1.1. 1.1. Int r oducc oducción
1
1.2. Objeti bj eti vos
2
1.2.1. 1.2.1. Objeti bj etivo vo pr i ncipa ncip al
2
1.2.2. Objeti bj eti vos secundar secundarii os
2
1.3. Metodología Metod ología
CAPITUL APITULO O 2: DESARRO DESARROLL LLO O TEÓRI TEÓRICO 2.1. 2.1. El ement ementos os del r eloj digit di git al
2
3 5
2.1.1. Codi fi cador cador es, es, decodifi decodif i cador cador es
5
2.1.2. Cont ador es
8
2.1.3. 2.1.3. Gener ener ador de pulso pul sos s ( mult mul t i vibr vi brador-as ador-astt able)
11
I NDI NDIC CE GENER GENERAL AL INDI NDIC CE DE FIG FIGUR URAS AS
IV
INDI NDIC CE DE TABLAS TABLAS
V
RESUMEN
VI
CAPIT API TULO ULO 1: AN ANT TEC ECEDENT EDENTES ESY PROPÓ PROPÓS SITOS
1
1.1. 1.1. Int r oducc oducción
1
1.2. Objeti bj eti vos
2
1.2.1. 1.2.1. Objeti bj etivo vo pr i ncipa ncip al
2
1.2.2. Objeti bj eti vos secundar secundarii os
2
1.3. Metodología Metod ología
CAPITUL APITULO O 2: DESARRO DESARROLL LLO O TEÓRI TEÓRICO 2.1. 2.1. El ement ementos os del r eloj digit di git al
2
3 5
2.1.1. Codi fi cador cador es, es, decodifi decodif i cador cador es
5
2.1.2. Cont ador es
8
2.1.3. 2.1.3. Gener ener ador de pulso pul sos s ( mult mul t i vibr vi brador-as ador-astt able)
11
CAPITUL APITULO O 4: SI MULAC MULACII ONESY PR PRUEBAS UEBAS EN LABOR LABORAT ATOR ORIIO
30
4.1. 4.1. Si mulación plano pl ano cir cuital cuit al usando usando Pr oteus
30
4.2. Si mulac mul acii ón VHDL VHDL usand usando o Quatus2
32
CAPIT API TULO ULO 5: CONCL ONCLUS USIIONESY MEJOR MEJORAS AS
35
5.1. Conclusi oncl usiones ones
35
5. 2. Mejor as
35
6. BIBLI BI BLIO OGRAFÍA
36
7. ANEXOS
36
7.1. Tarj eta Cyclone yclon e II - DE2 DE2 de Alt era
36
INDICE DE FIGURAS Figura 1: Reloj Reloj Digit Digi t al Figura 2: Reloj Atómico NIST-F1, EE.UU. Figura 3: Decodificador Básico Figura Figur a 4: Diagrama de Pi Pi nes CI CI 7447 744 7 Figura 5: Cont Contador ador Síncrono íncr ono Modulo-3 Figura Figur a 6: Di Di agr agr ama de Tiempos Cont Contador ador Flanco desc descendent endentee Figura 7: Cont Contador ador Asíncr Asíncr ono Figura igur a 8: Mult Multivi ivi bra br ador Ast Ast able con con tr t r ansistores Figura 9: Multi Mult i vibr vi brador ador ast ast able con con CI CI 555 Figura 10: Ej Ej emplo de “Entit “Enti t y” Figura Figur a 11: Di Di agr agr ama de bloques bloq ues del Seg Segund undero ero Figura 12: Diagr Diagr ama de bloques del decodi decodififica cador dor Figura 13: Diagr Diagr ama de bloques del Minut Mi nutero ero
INDICE DE TABLAS Tabla 1: Decodificador binari o 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 mostr ado en quartus2 que representa los 7 bit s, del decodificador
Resumen Con la utili zación de contadores, decodificadores y varios otros componentes digit ales 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 r eloj en displays de 7 segmentos, contara con la funcionalidad de modificar la hora, además que contara con un clock de 1 segundo.
3 de diciembre de 2010
PROYECTO RELOJ DIGITAL
CAPITULO 1: ANTECEDENTES Y PROPÓSITOS 1.1. Int roducción En los tiempos actuales es masiva l a uti li zación de Sistemas Digi tales ya que propor cionan una serie de vent ajas 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 manecill as para la in dicación de la hora a propor cionar un a visuali zación numéri ca de la misma gracias a la electr ónica digital. El r eloj digi tal es un proyecto ampli amente conocido y r eali zado en cursos básicos de sistemas digit ales, con este pr oyecto se pretende demostrar todo lo aprendido en dicho curso. La bibliografía que se puede encontr ar sobre este tema es extensa, el añadido de este trabajo es que aparte de di señar el reloj con circuitos integrados comunes, se utiliza la descripción de hardware para describir nuestro reloj digital.
Figura 1: Reloj Digit al
Américo Álvarez Surci
1
3 de diciembre de 2010
PROYECTO RELOJ DIGITAL
1.2. Objetivos 1.2.1. Objeti vo pr incipal
Diseño e impl ementación de un Reloj digital uti li zando componentes digitales básicos y descripción de este, utili zando VHDL.
1.2.2. Objetivos secundarios
Descripción de dif erentes contadores digitales para la utili zación en segundero, minut ero y horas. Manejo de decodificadores de binar io a 7 segmentos (di splay). Descripción en un solo modulo, para repr esentar el r eloj.
1.3. Metodología La elaboración de este proyecto ti ene dos etapas import antes: hardware y el softw are En la parte de hardware nos enfocaremos en el diseño util izando diferentes circuitos integrados básicos, conectados de tal forma que emulen el funcionamiento de un t ípico reloj d igit al. Y cuando nos referi mos a software util izaremos el paquete infor máticoQuatus-2 , para r eali zar la descripción de hardw are uti li zando el lenguaje vhdl, para describir nuestr o cir cuito reloj d igit al. Además para corr ecciones si se lo amerit a se empleara el software Proteus , para la simul ación de nuestro circuit o a montar en laborator io.
Américo Álvarez Surci
2
3 de diciembre de 2010
PROYECTO RELOJ DIGITAL
CAPITULO 2: DESARROLLO TEÓRICO
Se denomina reloj a un i nstr umento que permi te medir el ti empo. Existen diversos ti pos, que se adecuan según el pr opósito:
Conocer l a hora actual (reloj de pulsera (automático o 'de cuerda') , reloj de bolsillo, reloj d e salón o pared, cronómetr o) Medir la duración de un suceso (cronógrafo, reloj de arena) Señalar las horas por sonidos parecidos a campanadas o piti dos (r eloj de péndul o, reloj de pulso con bip a cada hora) Activar una alarm a en cierta hora específica (r eloj despertador)
Los relojes se uti li zan desde la antigüedad. A medida que ha ido evolucionando la ciencia y la tecnología de su fabri cación, han ido apareciendo nuevos modelos con mayor precisión, mejor pr estancia y menor costo de fabri cación. Es quizá uno de los instrumentos más populares que existen actualmente y casi t odas las personas disponen de uno o varios r elojes personales de pulsera. Mucha gente, además de la uti li dad que los caracteriza, los ostenta como símbolo de distinción y estatus social. La mayor precisión conseguid a hasta ahora es la del úl ti mo reloj atómico desarr oll ado 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 pr ecisión. En agosto de 2004 del NIST hicier on la pr imera demostración de un reloj atómico del tamaño de un cir cuito int egrado. Esto representa un reloj cien veces menor que cualquier otro constr uido hasta la fecha y con un consumo de sólo 0,079 vati os. Un reloj di gital es un tipo de reloj que basa su funcionamiento en la electr ónica digit al para marcar el t iempo. La invención, en 1956, del reloj di gital supuso una gran revolución en el campo de la relojería porque se consigui ó fabri car relojes mucho más baratos y pr ecisos 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 ot ros elementos, para indi car 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 digit ales son muy pequeños, úti les y barat os. Por estas razones se han incorporado a la mayoría de equipos electr ónicos. La rupt ura pri ncipal con el reloj mecánico es que se eli minaron todos los mecanismos que había en el interior de la caja de los reloj es y fueron sustit uid os por unos cir cuitos electr ónicos ali mentados por una pequeña batería y que facili taba la lectur a directa del tiempo. Debid o a lo barato q ue son l os reloj es digit ales ya se han i mpuestos en muchas apli caciones, y así la mayoría de despertadores son ya digitales, los reloj es que hay en electr odomésti cos, ordenadores, teléfonos celul ares, automóvil es, etc. Asimismo, muchos de los relojes de pulsera que se utili zan son digitales si bi en en el campo de los relojes de pulsera se han impuesto los reloj es electr ónicos analógicos de cuarzo.
Figur a 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 r eloj digital Un reloj electr ónico es un r eloj en el que la base de ti empos es electr ónica o electr omecánica y la divi sión de frecuencia, también. La exacti tud del reloj depende de la base de ti empos, que puede consisti r en un oscil ador o en un adaptador que, a part ir de una referencia, genera una señal per iódi ca. El divi sor de fr ecuencia es un cir cuito digit al formado por una sucesión de contadores hasta obtener una frecuencia de 1 Hz, que permit e mostr ar segundos. Si se quiere mostrar décimas, la di visión se deti ene al ll egar a los 10 Hz. Esta frecuencia pasa al módulo de pr esentación, que puede ser electr ónico o mecánico, donde otr os divi sores van separando los segundos, minut os y horas para presentarl as mediante algún t ipo de display.
2.1.1. Codificadores, decodif icadores
Decodificador: Se tr ata de un di sposit ivo con n entr adas 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 habili tación y sali das activa en alta, su tabla de ver dad y sus ecuaciones de cada sali da se muestran a conti nuación:
Figura 3: Decodifi cador Básico
Américo Álvarez Surci
5
3 de diciembre de 2010
PROYECTO RELOJ DIGITAL
Decodifi cador bi nari o 4bit s a display 7 segmentos ánodo común: La cuenta de números se lo reali zara en binario 4 bits, no obstante este número de base 2 no r epresenta los números decimales 0 a 9 mostrados por un típico reloj, por t al moti vo se uti li zara decodifi cadores de 4 bit s a 7 segmentos. Los displays de ánodo común son acti vos en ni vel bajo y ti enen un punt o común que es la alimentación de este. Para mostrar números decimales en los displays, los 7 bit s deben de obedecer l a siguiente t abla: Binario Display 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: Decodifi cador binario a display 7 segmentos ánodo común Decimal
De la tabla, los elementos marcados con “X”, no serán util izados por que t an solo necesit amos los números 0 al 9, el cir cuito integrado que reali za la decodificación de binar io a di splay á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
Figur a 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 cir cuitos que ti enen la pr opiedad de incrementar su contenido ( ascendentes), decrementarlo (descendentes) o ambas (reversibles). Un contador módulo-K cuenta K valores de forma cíclica, normalmente entr e 0 y el K-1. Además, estos di sposit ivos pueden tener operaciones que permitan cargar un estado i nicial de cuenta, (carga o load) y restablecer el estado i nicial de cuenta, ya sea el cero para cont adores ascendentes (clear) o todos los bit s a 1 (estado 2 n-1) para los descendentes (preset). Existe gran diversidad de contador es dependiendo del ti po de operaciones que realizan y del tamaño del contador. El t amaño se especifica por el módulo ( p.ej.: módulo 10) o por el número de bit s en caso de módulos 2n. Por ejemplo, en la sigui ente figura se muestr a el esquema de un contador síncrono ascendente de módulo 8 ( 3 bi ts) con las operaciones de cuenta arriba, carga, puesta a 0 e inhibición.
Figura 5: Contador Síncrono Modul o-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 defini r nuestr o reloj requerir emos de dos contadores modulo-60 para el segundero y el mi nutero, además de un contador modulo-24 para las horas si nuestr as horas son en ese sistema. Hay dos formas de realizar contador es: 1) los de rizado (ripple-counter) o contadores asíncronos; y 2) l os síncronos. En los contadores de ri zado la salida de cada biestable se utili za como señal de r eloj del siguiente.
Figura 7: Contador Asíncrono El cir cuito int egrado 7490 nos brinda un contador BCD de modulo-10. Con la int erconexión de varios podemos reali zar 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 (multivi brador-astable) Los contadores digi tales anteriorment e vistos, util izar una señal de clock que no es otr a cosa más que un tr en de pulsos con una fr ecuencia dada. La precisión del reloj depende de esta fr ecuencia de clock. En electr ónica, un astable es un multivibr ador que no t iene ni ngún estado estable, lo que signi fica que posee dos estados "cuasi-estables" entr e los que conmuta, permaneciendo en cada uno de ell os un tiempo determi nado. La frecuencia de conmutación depende, en general, de l a carga y descarga de condensadores.
Figura 8: Mult ivi brador astable con t ransistores
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: Multi vibrador Astable con CI 555 Este tipo de funcionamiento se caracteriza por una sali da con for ma de onda cuadrada (o r ectangular ) continua de ancho pr edefinid o por el di señador del circuito. El esquema de conexión es el que se muestra. La señal de sali da ti ene un ni vel alto por un ti empo t1 y un ni vel bajo por un t iempo t 2. La duración de estos tiempos depende de los valores de R1, R2 y C, según las fórmulas siguientes:
R R C t 0.693 R R C t 1 1
ln 2
1
2
1
y
2
R
t 2
ln 2
t 2
0.693 R2
2
C
C
La frecuencia con que la señal de sali da oscila está dada por l a fórmula: f
1
0.693 C
R
1
2 R2
Américo Álvarez Surci
12
3 de diciembre de 2010
PROYECTO RELOJ DIGITAL
2.3. Descripción de Hardware Con la creciente complejid ad de los diseños digit ales ha aparecido una necesidad de describir un cir cuito de la forma más eficient e y prácti ca posible. Un lenguaje de programación ofr ece la posibil idad de un alto ni vel de abstr acción y es la solución adecuada para dicha tarea. Los lenguajes de descripción hardware son lenguajes de alt o nivel con una sint axis simil ar a los de pr ogramación (C, ADA, Pascal, Modula, etc.) y una semánti ca que permite el modelado y simulación de los disposit ivos hardware a di ferentes niveles de abstr acción. Los pri meros lenguajes de este ti po sólo pr etendían servir de vehículo de comunicación del diseño. Los actuales lenguajes han adquir ido un alt o grado de estandari zación y han adoptado los nuevos conceptos de la ingeniería de software, permi ti endo la verificación de la especifi cación del diseño mediante simulación. 2.3.1. VHDL VHDL es un lenguaje de descri pción de cir cuitos electrónicos digit ales que uti li za distintos ni veles de abstracción. El significado por sus siglas VHDL es VHSIC (Very High Speed I ntegrated Cir cuits) Hardwar e Descripti on Language. Esto signi fica que VHDL permit e acelerar el pr oceso de diseño. VHDL no es un lenguaje de pr ogramación, por ello conocer su sin taxis no impli ca necesariamente saber diseñar con él. VHDL es un lenguaje de descripción de hardware genérico, que permi te describi r circuitos síncronos y asíncronos. Para reali zar esto debemos: - Pensar en puert as y biestables, no en vari ables ni fun ciones. - Evit ar bucles combin acionales y r elojes condicionados. - Saber qué part e del cir cuito 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
Element os básicos VHDL
VHDL es un lenguaje y como tal, posee sus ti pos de datos y operadores. Los datos se almacenan en obj etos que conti enen valor es de un ti po dado. IDENTIFICADORES. - CONSTANT.Los objetos de esta clase ti enen un valor inicial que es asignado de forma pr evia a la simulación y que no puede ser modificado durant e ésta. o constant identi ficador: ti po:= valor; - VARIABLE. Los objetos de esta clase contienen un úni co valor que puede ser cambiado dur ante la simulación con una sentencia de asignación. Las variables generalment e se util izan como índi ces, principalmente en i nstr ucciones de bucle, o para tomar valores que permit an modelar componentes. Las variables NO representan conexiones o estados de memori a. o vari able identi ficador: ti po [:= 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 memori a o conexiones y si p ueden ser sintetizadas. Los puertos de una entidad son i mplícit amente declarados como señales en el momento de la declaración, ya que estos representan conexiones. También pueden ser declaradas en la arqui tectur a antes del BEGIN, lo cual nos permi te r eali zar conexiones entre diferentes módulos. o signal identifi cador: ti po; 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 {WARNI NG, 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 ti po representa una lógica mult ivaluada de 9 valores. Además del ‘0’ l ógico y el ‘1’ lógico, posee alt a impedancia ‘Z’, desconocido ‘X’ ó sin inicializar ‘U’ entr e otros. Igual que se permi te crear un vector de bits se puede crear un vector de std_logic, STD_LOGIC_VECTOR. Para poder utili zar el t ipo std_logi c hay que añadir la li brería que lo soport a. Para poder uti li zar el t ipo: use i eee.std_logi c_1164.all . Para poder utilizar las funciones aritmeticológicas definidas (suma, resta multiplicación) use ieee.std_logic_arith.all. Si l os vectores están en r epresentación binaria pura use i eee.std_logi c_unsigned.all . Los vector es están en C2 use i eee.std_logi c_unsigned.all . TIPO ENUMERADO es un t ipo de dato con un gr upo de posibles valores asignados por el usuari o. Los ti pos enumerados se uti li zan pr incipalmente en el di seño de máquinas de estados type nombre is (valor 1, valor 2, …); Los tipos enumerados se ordenan de acuerdo a sus valores. Los programas de síntesis automáticamente codifican bin ariamente los valores del tipo enumerado para que estos puedan ser sint eti zados. Algunos progr amas lo hacen mediante una secuencia binaria ascendente, otr os buscan cual es la codifi cación que mejor conviene para tr atar de mi nimizar el circuito o para incrementar la velocidad del mi smo una vez que la descripción ha sido sint etizada. También es posibl e asignar el t ipo de codificación mediante directi vas pr opias de la herr amienta de síntesis. TI POSCOMPUESTOS un tipo compuesto es un ti po de dato for mado con elementos de otr os tipos, existen dos formas de ti pos compuestos, arrays y r ecords.
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 mi smo tipo. type nombre is array (r ango) of ti po; UN RECORD es un objeto de datos que consiste en una “colección” de elementos de disti ntos tipos. type nombre is r ecord elemento1: tipo_de_dato1; elemento2: tipo_de_dato2; end record;
OPERADORES. Un operador nos permit e constr uir dif erentes tip os de expresiones mediante los cuales podemos calcular datos uti li zando diferentes objetos de datos con el t ipo de dato que maneja di cho objeto. En VHDL existen di stint os operador es de asignación con lo que se transfieren valor es de un objeto de datos a otr o, y operadores de asociación que r elacionan un objeto de datos con otr o, lo cual no existe en ni ngún lenguaje de pr ogramación de alto nivel. abs *, / , mod, rem + (sig.), - (sig) + , -, & and, or, nand, nor, xor := asignación de valor es a constantes y vari ables. < = asignación de valor es a señales. ii ) Estructur a Básica de un archivo fuente en VHDL El archivo VHDL contiene la descripción del cir cuito que se quiere impl ementar. ENTIDADES(ENTITY) Una entidad es la abstr acció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 l as entr adas y las sali das 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 disposit ivo hacia el r esto del di seño. Lo sigui ente muestr a un ejemplo de su conteni do: 1. Define externamente al cir cuito o subcir cuito. 2. Nombre y número de puert os, ti pos de datos de entrada y salida. 3. Tienes toda la inf ormación necesaria para conectar t u circuito a otr os circuitos.
Figura 10: Ejemplo de “Entity” enti ty F is port ( A, B: in bit ; Y out bit) ; end F; Los puertos pueden ser para señales de entr ada in, sali da out, entrada-sali da o un buffer; que util izará el modo in / out. Además, la enti dad puede defini r un valor genéri co (GENERIC) que se uti li zará para declarar l as pr opiedades y constantes del circuito, independientemente de cuál sea la arqui tectur a. enti ty nombre is generic (cte1: ti po := valor1; cte2: tipo:= valor 2; …); port (entr ada1, entr ada2, …: in tipo; salid a1, sali da2, …: out t ipo; puert oi : modo tipo); end nombre;
Américo Álvarez Surci
17
3 de diciembre de 2010
PROYECTO RELOJ DIGITAL
ARQUITECTURA (ARCHITECTURE). Los pares de entidades y arqui tectur as se uti li zan para repr esentar la descripción completa de un diseño. Una arquitectur a describe el funcionamiento d e la enti dad a la que hace referencia. Si una enti dad la asociamos con una “caja” en l a que se enumeran las int erfaces de conexión hacia el exter ior , entonces la arquit ectur a repr esenta la estr uctur a interna de esa caja. Sus pri ncipales funciones son: 1. Define int ernamente el cir cuit o. 2. Señales internas, funciones, procedimientos, constantes … 3. La descri pción de la arquit ectur a puede ser estructural o por comport amiento. Lo siguiente muestra un ejemplo de su contenido: archit ectur e arch_name of ent it y_name is -- declaraciones de la arqui tectur a -- 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 arquitectur a se describe por comportamiento o por estr uctur a. Una entidad puede tener más de una arquit ectur a, pero cuando se compile se debe indicar cuál es la arqui tectur a que queremos uti li zar. PROCESS: Cuando en VHDL se escribe un process, dentro de él aparece la parte secuencial del circuito. La simulación no entr a en el process hasta que no haya vari ado alguna de las señales o variables de su li sta de sensibi lidad independientemente de lo
Américo Álvarez Surci
18
3 de diciembre de 2010
PROYECTO RELOJ DIGITAL
que este conteni do dentr o del pr ocess. Por otr o lado úni camente dentr o de un pr ocess pueden aparecer las sentencias de tipo if y else y nunca puede aparecer una sentencia del ti po wait. Sentencias de descripción WAIT esta instrucción es uti li zada en pr ocesos que no ti enen lista de sensibi lidad: 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 apl icables dent ro de un process if condición t hen ... –instrucciones secuenciales elsif otr a_condición t hen ... –instrucciones secuenciales else ... –instrucciones secuenciales end if; CASE – WHEN solo son apl icables dentr o de un p rocess case expresión is when alt ernati va_l = > ... –instr ucciones secuenciales when alt ernati va_n = > ... -- instr ucciones secuenciales when others = > ... -- instr ucciones secuenciales end case; FOR – LOOP solo son apl icables dentr o de un pr ocess
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 pr ocess whi le condición loop ... -- instrucciones secuenciales end loop; WHEN – ELSE Signal_name <= valor_1 when condi ción1 else valor_2 when condi ción2 else ... valor_i when condi cióni else otro_valor; WITH – SELECT – WHEN wi th i dentifi cador select Signal_name < = valor_1 when valor_identificador1, valor_2 when valor_identificador2, ... valor_i when valor_identi ficadori , otro_valor when others;
Américo Álvarez Surci
20
3 de diciembre de 2010
PROYECTO RELOJ DIGITAL
CAPITULO 3: MECANISMO DE DISEÑO Describi remos el proyecto a implementar se en laboratori o mediante componentes básicos ya vistos en el anteri or capitulo. Ademas mostraremos cada bloque controlador por separado, para que pueda observarse en plenit ud el diseño uti li zado para el reloj di git al.
3.1. SS: Segundos El bloque del segundero se lo i mplemento con un contador modulo-60 ut il izando 2 circui tos int egrados 7490 que son contadores BCD, según el siguient e diagrama de bloques:
Figura 11: Diagrama de bloques del Segundero
Américo Álvarez Surci
21
3 de diciembre de 2010
PROYECTO RELOJ DIGITAL
Al pr imer contador se conecta el clock de 1Hz, diseñado previamente con un mul ti vibr ador astable, como es un contador BCD este cuenta de 0 al 9 una vez conclui da esta cuenta vuelve a comenzar en 0. El segundo cont ador cuent a del 0 hasta el 5 y cuando es 6 esta habil it a mediante el and los resets de ambos contadores comenzando la cuenta en 0 otr a vez. El clock del segundo contador será el bi t 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 reali zada 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 ali mentación o “1” l ógico.
3.2. MM: Minutos De igual manera que el segundero se diseña un contador modul o 60 para el mi nutero, con la difer encia que el clock del pr imer contador ya no es 1Hz sino que es un impulso dado por el reset del bl oque del segundero.
Américo Álvarez Surci
22
3 de diciembre de 2010
PROYECTO RELOJ DIGITAL
Figura 13: Diagrama de bloques del Min utero Y simi lar al segundero cada salida del contador se conecta a un decodificador de 4bit s a 7 segmentos, para mostr ar l os 2 dígitos del min utero.
3.3. HH: Horas De igual manera que l os anteriores elementos descrit os, las horas será un contador mudulo-24 que contara las horas, el clock el pr imer contador será el impulso reset del mi nutero que se reali za cada que se cumple los 60 min utos. Cada contador a la salid se conectara un decodificador de 4 bits a 7 segmentos para observar los 2 dígitos de este. El r eset será uti li zando ambos contadores según el di agrama 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 bl oque del segundero y del minutero, para modificar min utos y horas respecti vamente, 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 min utero y horero) en cualquier momento que el usuario requiera modif icar la hora a una cualqui era. Cuando se presione un botón r eseteara el modulo i nmediatamente infer ior , asi que se tendr á que modificar hor as, luego min utos 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 hardw are se procederá a describi r el r eloj di git al, con todas las característi cas del diseño cir cuital anteri ormente descri to: 1- Un bloque segundero contador modul o-60, uti li zamos una señal de este para habil it ar el bl oque minut ero cada 60 segundos. 2- Un bloque minutero contador modulo-60, uti li zamos una señal de este para habil it ar el bloque horer o cada 60 minut os. 3- Un bloque de horas contador modul o-24. Además de mostrar la hora esta se debe modificar en cualqui er momento que el usuario r equiera mediant e 2 botones para modifi car horas y minutos. Ya que no tenemos limi taciones económicas, ni de CI al momento de r eali zar la descripción en vhdl , se añadirá un selector que cuando este en “1” se pueda modificar l a hora y cuando este en “0” no se pueda. Además de un Reset para reini ciar nuestr o sistema. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
------------------------------------------------------------------ Reloj Digital -- Autor: Américo Alvarez S. ----------------------------------------------------------------library ieee; use ieee.std_logic_1164.all; entity reloj_v3 is port(clk_50Mhz:in std_logic; reset,ajuste:in std_logic; ajuste_hh,ajuste_mm:in std_logic; hex0,hex1,hex2,hex3,hex4,hex5:out std_logic_vector(0 to 6) ); end reloj_v3; architecture rtl of reloj_v3 is signal clk0,clk1,clk2,clk3,clk4,clk5: std_logic:='0'; signal clk_a1,clk_a2:std_logic:='0'; signal ajuste_sync:std_logic;
Américo Álvarez Surci
25
3 de diciembre de 2010 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
PROYECTO RELOJ DIGITAL
constant max: integer := 2;--50000000; constant half: integer := max/2; signal count: integer range 0 to max; function numero(digito:integer) return std_logic_vector is Variable hex:std_logic_vector(0 to 6); begin case digito is when 0 => hex := "0000001"; when 1 => hex := "1001111"; when 2 => hex := "0010010"; when 3 => hex := "0000110"; when 4 => hex := "1001100"; when 5 => hex := "0100100"; when 6 => hex := "1100000"; when 7 => hex := "0001111"; when 8 => hex := "0000000"; when 9 => hex := "0000100"; when others => null; end case; return(hex); end numero; begin -- definimos el clock de 1 hz process (clk_50Mhz) begin if (clk_50Mhz'event and clk_50Mhz='1') then if (count < max) then count <=count + 1; else count <=0; end if; if (count <= half) then clk0 <='0'; else clk0 <='1'; end if; end if; end process; -- definimos el reloj como tal
Américo Álvarez Surci
26
3 de diciembre de 2010 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
PROYECTO RELOJ DIGITAL
process (clk0,reset,ajuste,ajuste_hh,ajuste_mm) variable uu_s: integer range 0 to 10; variable dd_s: integer range 0 to 6; variable uu_m: integer range 0 to 10; variable dd_m: integer range 0 to 6; variable uu_h: integer range 0 to 10; variable dd_h: integer range 0 to 3; begin -- señal asincrona de reset if (reset='1') then uu_s:=0; dd_s:=0; uu_m:=0; dd_m:=0; uu_h:=0; dd_h:=0; else -- definimos segundos contador mod 60 if (clk0'event and clk0='1') then uu_s:= uu_s+1; clk1 <= '0'; if (uu_s=10) then uu_s := 0; clk1 <= '1'; end if; end if; if (clk1'event and clk1='1') then dd_s:= dd_s+1; clk2 <= '0'; if (dd_s=6) then dd_s := 0; clk2 <= '1'; end if; end if; -- señal de ajuste minutos
Américo Álvarez Surci
27
3 de diciembre de 2010 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
PROYECTO RELOJ DIGITAL
-- sincronizamos a los segundos if (clk0'event and clk0='0') then ajuste_sync<=ajuste; end if; clk_a1<=(clk2 and not ajuste_sync) or (ajuste_mm and ajuste_sync); -- definimos minutos contador mod 60 if (clk_a1'event and clk_a1='1') then uu_m:= uu_m+1; clk3 <= '0'; if (uu_m=10) then uu_m := 0; clk3 <= '1'; end if; end if; if (clk3'event and clk3='1') then dd_m:= dd_m+1; clk4 <= '0'; if (dd_m=6) then dd_m := 0; clk4 <= '1'; end if; end if; -- señal de ajuste minutos clk_a2<=(clk4 and not ajuste_sync) or (ajuste_hh and ajuste_sync); -- definimos horas contador mod 24 if (clk_a2'event and clk_a2='1') then uu_h:= uu_h+1; clk5 <= '0'; if (uu_h=10) then uu_h := 0; clk5 <= '1'; end if; end if;
Américo Álvarez Surci
28
3 de diciembre de 2010 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
PROYECTO RELOJ DIGITAL
if (clk5'event and clk5='1') then dd_h:= dd_h+1; end if; if (dd_h=2 and uu_h=4) then uu_h:= 0; dd_h:= 0; end if; end if; -- definimos la alarma -- mostramos en displays hex0 <= numero(uu_s); hex1 <= numero(dd_s); hex2 <= numero(uu_m); hex3 <= numero(dd_m); hex4 <= numero(uu_h); hex5 <= numero(dd_h); end process; end rtl;
Tabla 5: Código VHDL reloj di gital
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 cir cuit al usando Proteus
Figura 15: Plano Cir cuital completo del Reloj di gital
Américo Álvarez Surci
30
3 de diciembre de 2010
PROYECTO RELOJ DIGITAL
Análisis diagrama de tiempos de los clock del cir cuito
U1 es la señal de clock de 1hz. U6 es la generación de impulsos por el r eset del modulo del Segundero ( cada 60 segundos). Que sirve como clock para el bloque del mi nutero U3 es la generación de impulsos por el r eset del modulo del Mi nutero (cada 60 min utos). Que sir ve como clock para el bloque del Horero
Figura 16: cada 60 Pulsos de 1Hz, se envía un I mpulso (clock del mi nutero)
Figura 17: cada 60 impul sos del minutero, se envía un Impulso (clock del hor ero)
Américo Álvarez Surci
31
3 de diciembre de 2010
PROYECTO RELOJ DIGITAL
4.2. Simulación VHDL usando Quatus2 A conti nuación se presenta la simulación del di agrama de ti empos simul ado en quartus2, cabe mencionar que se establecieron señales de prueba de reset y modif icar hora, en cualquier instante de cuenta de nuestr o reloj digi tal. Las señales de salida de los di splays de 7 segmentos se los muestr a en su equivalente decimal del numero de 7 bits que representa, según la siguiente t abla: Display Numero decimal 7 segmentos mostrado en la simulación de quatus2 a b c d e f g 1 0 0 0 0 0 0 0 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 76 4 1 0 0 1 1 0 0 5 0 1 0 0 1 0 0 36 96 6 1 1 0 0 0 0 0 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 mostr ado en quart us2 que representa los 7 bit s, del decodifi cador Decimal
El Análisis di agrama de ti empos en quatus2 se pr esenta a continuación:
Clk0 representa la señal de 1Hz. Reset representa la entr ada de reset que pulsaremos en cualqui er moment o. Ajuste: cuando este en 1 l ogico, se podr á ajustar la hor a (ajuste_hh) y minutos(ajuste_mm), caso contr ario no. Hex0: pr imer digito segundero, unidades segundero. Hex1: segundo digito segundero, decenas segundero.
Américo Álvarez Surci
32
3 de diciembre de 2010
PROYECTO RELOJ DIGITAL
Hex2: pri mer digit o minutero, unidades minutero. Hex3: segundo digito minutero, decenas minut ero. Hex4: pri mer digit o horero, unidades horero. Hex5: segundo digito horer o, decenas horero.
Figur a 18: Segmento de cuenta segunder o y reset
Américo Álvarez Surci
33
3 de diciembre de 2010
PROYECTO RELOJ DIGITAL
Figura 19: Segmento, ajustando horas y mi nutos
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 sati sfactoriamente el reloj digital uti li zando componentes digi tales básicos. Se describi ó en lenguaje VHDL el comport amiento de nuestr o circui to pudiendo comprobar sati sfactor iamente que reali za lo mismo que nuestro circuito armado El reloj i mplementado en VHDL util izando la tarjeta DE2, fue más preciso que el ensamblado, esto se debe a que nuestr o clock de 1 hz tubo errores de exactitud al momento de calcular el 1Hz por el err or que lleva cada resistencia y capacit or utilizado para realizar el oscilador astable. La descripción en vhdl nos ahorr o mucho tiempo y se le dio el añadido del acti var el ajuste de hora y un reset del sistema. La descripción fue más rápid a y es fácil detectar los errores en sint axis del l enguaje de nuestr a descripción, en fut uras 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. Mejor as
Impl ementar un reloj que además nos bri nde un calendari o, la fecha del día en que nos encontr amos. Se puede utili zar el imp ulso de reset del modul o de horas, para reali zar la cuenta de días, y estos r eali zarían de meses. Se podría impl ementar 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 otr a alarma según sea el agrado del diseñador. Se podría i mplementar esto con comparadores, que se intr odusca la hora de alarma a un registro y que cuando l a hora sea igual que el d ato 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 cronometr o digital ut il izando los displays empleados. El inconvenient e estaría en el reloj de 10Hz. Impl ementarlo en pantalla LCD 16x2.
Américo Álvarez Surci
35
3 de diciembre de 2010
PROYECTO RELOJ DIGITAL
6. BIBLIOGRAFÍA 1. 2. 3. 4. 5.
Problemas de circuitos y sistemas digi tales Mc Graw Hil l Fundamentos de lógica digit al con diseño VHDL Stephen Brown – Zvonko Vranesic Cir cuit Desing with VHDL Volnei A. Pedroni DE2_UserManual htt p:/ / www .iesleonardo.info/ ele/ pro/ CURSO%202001-2002/ p02-relojdi gital/
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 p rovides users many featur es to enable vari ous multi media project development. Component selection was made accordi ng to the most popular design i n volume production multi media pr oducts such as DVD, VCD, and MP3 players. The DE2 platfor m allows users to quickly understand all t he insight t ri cks to design real mult imedia projects for i ndustr y.
Altera Cyclone II 2C35 FPGA with 35000 LEs Alt era Serial Configurati on devices (EPCS16) for Cyclone II 2C35 USB Blaster buil t in on board for programming and user API contr olli ng JTAG Mode and AS Mode are suppor ted 8Mbyte (1M x 4 x 16) SDRAM 512K byt e(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 Modul e 50MHz Oscil lator and 27MHz Oscil lator for external clock sources 24-bit CD-Qualit y Audio CODEC wi th l ine-in, line-out, and mi crophone-in jacks VGA DAC(10-bit high-speed t riple DACs) wit h VGA out connector TV Decoder (NTSC/ PAL) and TV in conn ector 10/ 100 Ethernet Contr oller wi th socket. USB Host/ Slave Contr oller w it h USB type A and t ype B connector s. RS-232 Tr ansceiver and 9-pi n connector PS/ 2 mouse/ keyboard connector IrDA transceiver Two 40-pin Expansion Headers wit h diode protecti on DE2 Lab CD-ROM which cont ains many examples wit h source code to exerci se the boards, including: SDRAM and Flash Controll er, CD-Quali ty Music Player, VGA and TV Labs, SD Card reader, RS-232/ PS-2 Communi cation Labs, NIOSII , and Control Panel API
Américo Álvarez Surci
37