Informe Cronometro o´ metro Digital Edwin Alexander Ram´ Ram´ırez ırez Vargas
Camila Rodr´ Rodr´ıguez ıguez Ram´ Ram´ırez ırez
Email:
[email protected] Codigo: o´ digo: 2548920
Email:
[email protected] [email protected] Codigo: o´ digo: 25451386
Resumen—El siguiente trabajo consiste en la presentaci´ presentacion o´ n del analisis a´ lisis llevado a cabo para realizar el dise ˜ dise ˜ no de un cron´ cronometro o´ metro con conteo de d´ecimas e cimas de segundos y una capacidad o alcance maximo a´ ximo de 10 minu minuto tos, s, imple implemen menta tado do en HDL HDL a parti partirr del del lenguaj lenguajee Verilog. erilog. Para Para realiza realizarr el dise dise ˜ no del del cron cron´ometro o´ metro se utilizaron distintos m´ modulos, o´ dulos, correspondientes por ejemplo a la divisi´ division o´ n de frecuencia de la se ˜ se ˜ nal de reloj, as´ı como al manejo de las funciones del cronometro, o´ metro, dentro de ellas el almacenamiento de dos laps laps (”vuelt (”vueltas” as”). ). Todo ello se impleme implement nt´o´ a partir del conocimiento adquirido en la clase te´ teorica o´ rica de Electr´ Electronica o´ nica Digital I.
I.
´ I NTRODUCCION
La prop propie ieda dad d de memo memori riaa y sinc sincro roni nism smo o es una una de las las mas a´ s importantes en el mundo de la electr onica o´ nica digital, puesto que a partir de ella se pueden crear circuitos que contengan almacenam almacenamient iento, o, que funcionen funcionen secuencia secuencialmen lmente te y adem´as as que procesen informaci on, o´ n, lo cual es vital en las tecnolog´ tecnolog ´ıas ıas actuales. Debido a la gran importancia de los circuitos secuenciales en el desarrollo de la tecnolog´ tecnolog ´ıa, ıa, se realiza la implementaci on o´ n de un cronometro ´ digital con el objetivo de aplicar los conceptos te oricos o´ ricos y con ello evidenciar el funcionamiento de los circuitos secuenciales, tales como los contadores. As´ı mismo, con la finalidad de comprender el dise no n˜ o de circuitos de varios estados y el uso de los registros para el almacenamiento de la informaci´ informacion. o´ n. I I. I.
los flancos de subida, los flancos de bajada o cuando el reloj alcanza su m´ maximo a´ ximo voltaje, tal como se muestra en la Figura 2.
M AR AR CO CO T E ´ ORICO
Existe Existen n mucha muchass ocasio ocasiones nes en donde donde se requie requiere re que un circuito cambie bajo consideraciones de las entradas y de su estado, es all´ all´ı donde se implementan los circuitos secuenciales [1]. Estos circuitos tienen la propiedad de ” recordar” el estado en el que se encontraban en un momento previo y requieren de un medio medio por el cual cual los event eventos os puedan puedan secuen secuencia ciarse rse,, este medio es una se nal n˜ al de reloj, esto es, un circuito especial que genera genera pulsos pulsos el´ electric e´ ctricos os que se encar encargan gan de valid validar ar el funcionamiento del circuito digital. Las se nales n˜ ales de reloj tienen la forma mostrada en la Figura 1:
Figura Figura 1. Se˜nal nal de reloj.
Los cambios de estado en los circuitos secuenciales ocurren solo en los pulsos del reloj y pueden establecerse ya sea en
Figura Figura 2. Composici Composici´on o´ n del reloj.
A partir de esta definici on o´ n es posible determinar que existen circuito circuitoss secuencial secuenciales es activad activados os por flanco (de bajada bajada o de subida subida)) y activ activado adoss por nive nivel, l, es decir decir cambia cambian n su estado estado cuando la se˜nal nal de reloj alcanza su m´aximo aximo o m´ınimo ınimo valor de voltaje. La forma en que estos circuitos mantienen su estado es a ´ en los circuitos trav´ traves e´ s de la realimentaci on; o´ n; la realimentaci on digita digitales les se produc producee cuando cuando la salida salida del circuito circuito es una funci´on on del estado anterior y de las entradas presentes [1]. Dentro de los circuitos secuenciales existen varios subtipos, entre los cuales se pueden encontrar: los circuitos biestables, monoestables y aestables. II-A.
Circuitos biestables
Los circuitos biestables como su nombre lo indica, poseen dos estados: el SET (activaci on) o´ n) y el RESET (desactivacion), ´ en los cuales se pueden mantener indefinidamente, lo cual los hace especialmente adecuados para el almacenamiento [2]. Estos circuitos reciben su nombre, debido a que son capaces de almac almacen enar ar 1 bit bit (1 o´ 0). El principi principio o de funcionam funcionamient iento o de los biestables se basa en el hecho de que a partir de la ´ se puede mantener (almacenar) un valor estable realimentaci on hasta que las condiciones de entrada cambien [3]. II-A1. Latches: Un latch es un dispositivo de almacenamiento temporal de dos estados, que tiene una estructura de realimentaci´on on la cual consiste en conectar cada una de las salidas a la entrada opuesta. Su estructura es muy parecida a la de los flip-flops, pero se diferencian en la forma mediante la cual cambian de estado [2]. Los latch latch pueden pueden a su vez vez subdi subdivid vidir irse se en vario varioss tipos tipos,, algunos de los cuales son: el latch S-R y el latch tipo D. latch S-R con entrad entradaa activ activaa a nive nivell alto alto Latch S-R: Un latch se compone de dos compuertas NOR acopladas, tal como se muestra en la Figura 3:
Figura 3. Latch S-R.
Su tabla de verdad se obtiene asumiendo para cada comparaci´on un posible estado inicial en las salidas Q y Q. A partir de lo cual se obtienen condiciones de cambio, de no cambio y una condicio´ n a evitar en la que el par de salidas no son complemento. Esto se puede observar en la Figura 4:
Un flip-flop activado por flancos cambia de estado con los flancos positivos (de subida) o los flancos negativos (de bajada) de la senal ˜ de reloj. Dentro de ´estos se encuentran los flip-flops S-R, los D y los J-K. Flip-flop S-R: Sus entradas S y R se denominan entradas s´ıncronas. En este circuito cuando S est a´ a nivel ALTO y R est´a a nivel BAJO, la salida Q se pone a nivel ALTO con el flanco de disparo del impulso de reloj, pasando el flip-flop al estado SET. Cuando S est´a a nivel BAJO y R est´a a nivel ALTO, la salida Q se pone a nivel BAJO con el flanco de disparo del impulso de reloj, pasando el flip-flop al estado RESET. Cuando tanto S como R est´an a nivel BAJO, la salida no cambia de estado y cuando S y R est a´ n a nivel ALTO, se produce una condicio´ n no v´alida. El diagrama de bloque de un flip-flop S-R activado por flancos positivos se muestra en la Figura 6:
Figura 4. Tabla de verdad latch S-R.
Estos latches tambi´en pueden implementarse a partir del uso de dos compuertas NAND, con la diferencia de que el estado a evitar se presenta cuando el valor de S y de R es 0. Lacht tipo D: Este tipo de latch es conocido como DATA y tiene la caracter´ıstica de hacer que el S-R no entre en el estado a evitar. Se diferencia del S-R en que solo tiene una entrada, tal como se observa en la Figura 5:
Figura 6. Flip-flop S-R por activacio´ n en flanco de subida [2] p´agina 421.
´ til cuando Flip-flop D: El flip-flop tipo D resulta muy u se necesita almacenar un u´ nico bit de datos. El flip-flop D m´as sencillo se obtiene a n˜ adiendo un inversor al flip-flop S-R, obteniendo el diagrama de bloque que se muestra en la Figura 7:
Figura 5. Latch Data (D) [2] p´agina 412.
II-A2. FLIP-FLOPS: Los Flip-flops son dispositivos s´ıncronos de dos estados. El hecho de que sea s´ıncrono, significa que la salida cambia de estado u´ nicamente en un instante espec´ıfico. de una entrada de disparo denominada reloj (CLK), esto significa que los cambios en la salida se producen sincronizadamente con el reloj [3]. Los flip-flops son los bloques b´asicos de construcci´on de los contadores, registros y otros circuitos de control secuencial, y se emplean tambi e´ n en ciertos tipos de memorias [1].
Figura 7. Flip-flop D por activaci´on en flanco de subida [2] p´agina 425.
Para este caso en el estado SET el flip-flop almacena un 1 mientras que para el estado RESET almacena un 0. Flip-flop J-K disparado por flanco: Este tipo de flip-flop es uno de los m´as ampliamente utilizados. Este circuto tiene
condiciones id´enticas de SET, RESET y de no cambio a las del S-R, con la diferencia de que no posee condiciones no v´alidas o a evitar. En la Figura 8 se muestra la tabla de verdad para un flip-flop J-K activado por flanco de subida, cabe anotar que para el flipflop J-K por flanco de bajada el funcionamiento es id e´ ntico con la diferencia de que se activa en los flancos negativos.
El estado de pausa y start del cron o´ metro, manipulado a trav´es del contador principal, el cual fue el contador de d´ecimas de segundos. La implementaci´on del reset del cron´ometro y del reset de las laps. A partir de esta estructura se realizaron los m o´ dulos necesarios para implementar el circuito y adem a´ s se tuvieron en cuenta aspectos como la frecuencia otorgada por el reloj de la FPGA y la conexi´on y el tipo de 7 segmentos contenidos en ella. ˜ en HDL se procedi´o a probar Una vez realizado el dise no el circuito en la tarjeta de desarrollo y a verificar su correcto funcionamiento. IV.
Figura 8. Tabla de verdad Flip-flop J-K activado en flanco de subida [2] p´agina 427.
Los circuitos anteriores basan su funcionamiento en el uso del sincronismo, el cual es obtenido a partir de una se n˜ al de control (reloj) que efectu´ a las variaciones en la salida. No obstante, existen circuitos que son as´ıncronos y utilizan propiedades de inicializaci´on y de borrado. II-B.
Circuitos monoestables y aestables
Los circuitos monoestables son aquellos que tienen un ´unico estado estable. Normalmente, un monoestable se encuentra en ´ cuando su estado estable, cambiando a su estado inestable s olo se dispara. Una vez que se ha disparado, el monoestable permanece en su estado inestable durante un determinado intervalo de tiempo, volviendo a continuaci´o n a su estado estable [2]. Los circuitos secuenciales aestables no tienen ning´un estado estable y se emplean principalmente como osciladores, es decir, como generadores de se n˜ ales automantenido [3]. III.
PROCEDIMIENTO EXPERIMENTAL
Para llevar a cabo la realizaci o´ n del cronometro ´ digital, se tuvieron en cuenta los siguientes puntos: La realizaci´on de un contador de 0 a 9 as´ıncrono que tuviera como entrada una se˜nal de reloj y se encargara de realizar el conteo de las d e´ cimas de segundo. La creaci´on de un circuito contador de 0 a 6, que permitiera generar las decenas de los segundos. El agrupamiento de los contadores, esto es: la salida del contador de d e´ cimas de segundos se conect´o a l a entrada del contador de unidades de segundos y la salida de e´ ste a su vez al contador de decenas de segundos, para finalmente conectar la salida de este contador a la entrada del contador de minutos. El almacenamiento de los laps y su posterior visualizaci´on en los displays, teniendo en cuenta las indicaciones dadas.
A N ´ ALISIS Y RESULTADOS
La forma en que se organiz´o el dise˜no del cron´ometro fue a partir de la creaci o´ n de m´odulos con cierta jerarqu´ıa asociada. ´ En total se dise n˜ aron 8 modulos, en los cuales se distribuyeron cada una de las funcionalidades requeridas para el dise n˜ o ´ del cronometro, siendo el m o´ dulo principal el correspondiente al ”Main”, donde se llamaron finalmente todos los subm´odulos de manera tal que quedara definido el comportamiento del circuito. As´ı mismo, este mo´ dulo se realizo´ de forma tal que recibiera las entradas generales del circuito y generara las salidas corresponientes. Como entradas se definieron: Un interruptor de stop/start encargado de poner en marcha el cron o´ metro y as´ı mismo de pausarlo en un conteo espec´ıfico. Dos pulsadores de reset, uno correspondiente al reset del cronometro ´ que inicializaba el conteo en cero y otro correspondiente al reset de las vueltas (laps), de forma que la informaci o´ n almacenada fuera liberada. Dos pulsadores, correspondientes a las funcionalidades lap1 y lap2, los cuales mediante la primera pulsaci o´ n se encargaban de almacenar una vuelta espec´ıfica y mediante una segunda pulsaci´on de efectuar su visualizaci´on en los display’s siete segmentos. An´alogamente, como salidas del cron o´ metro se definieron: El dato hacia los siete segmentos, que ser´ıa el conteo del cron´ometro o bien alguna de las dos laps almacenadas. La asignacio´ n de a´ nodos, de forma tal que la visualizaci´on se presentara de manera adecuada. Cabe destacar, que para generar esta salida se tuvo en cuenta que los displays de la FPGA eran de tipo a´ nodo com´un, es decir, necesitaban un valor bajo para que sus segmentos se encendieran. A continuaci´on se realiza una descripci´o n de cada uno de los m´odulos implementados, as´ı como de su l o´ gica de funcionamiento: IV-1. M´ odulo divisor de frecuencia: La FPGA utilizada (Nexys 2) posee un oscilador capaz de generar un tren de impulsos o se n˜ al de reloj con una frecuencia de 50MHz. Dicha frecuencia fue demasiado alta para el dise n˜ o del circuito, por lo
cual se procedio´ inicialmente a realizar un m o´ dulo divisor de frecuencia que tuviera como entrada la se n˜ al de reloj generada por la tarjeta de desarrollo y cuya salida fuera una se nal ˜ de reloj con una frecuencia mucho m´as baja. Para este caso, la frecuencia a obtener se estableci o´ de 100Hz, de forma que dicho reloj alimentara el contador de d e´ cimas de segundos, el cual se encarg o´ de iniciar el conteo, as´ı como de llevar la sincronizaci´on adecuada del circuito. Este m´odulo se implement o´ utilizando un proceso always de forma que al invocar una variable de tipo entera llamada c¸ontador¨ınicializada en cero y al identificar cada flanco de subida de la se n˜ al de reloj de 50MHZ se realizara un aumento en la variable contador de forma que la articulaci o´ n de la nueva se˜nal de reloj generada se realizara cuando dicho contador llegara a 2500000, para que as´ı la frecuencia obtenida fuera de 10Hz, es decir una d´ecima de la duraci´on de un segundo. IV-2. M odulo ´ antirrebote: Debido a las caracter´ısticas mec´anicas de los pulsadores, se hizo necesaria la creaci´on de un m´odulo anti-rebote encargado de recibir como entrada cada uno de los pulsadores y de generar como salida un pulso de determinada duraci o´ n, independiente del tiempo de pulsaci o´ n. La l´ogica tenida en cuenta para el desarrollo de este m o´ dulo se baso´ en el hecho de que al realizar una pulsaci o´ n, e´ sta puede ser interpretada como un 1 l´ogico, de forma que si es posible almacenar dicho valor dentro de un arreglo de un tama n˜ o espec´ıfico, en nuestro caso de 3 bits, entonces puede realizarse un proceso que genere un pulso cuya duraci o´ n sea el tiempo que tarde en realizarse el desplazamiento de dicho valor en todo el arreglo. Esto es, hasta obtener un arreglo completamente de 1 l´ogicos. Esta l´ogica se implement´o a partir del uso de tres flipflops D conectados en cascada junto con una compuerta and encargada de validar la salida despu e´ s de ciertos retardos, este circuito se muestra en la Figura 9:
Para su realizaci o´ n se partio´ de un mo´ dulo denominado JK mediante el cual se describi o´ el funcionamiento de este flipflop con entradas J,K y clear y salida Q. Su funcionamiento como es conocido, se defini o´ mediante el uso de sentencias if, que permit´ıan identificar a partir de un proceso always, cada flanco de bajada de la se˜nal de reloj con el fin de decidir el cambio de estado, as´ı como de los estados clear y reset. La condici´on principal implementada en este m´odulo fue el hecho de que la basculaci o´ n o articulaci o´ n de la sen˜ al generada por el flip-flop se presentar´ıa si y so´ lo si J y K ten´ıan un valor de 1. Esta sentencia fue de gran importancia, ya que permiti o´ controlar el estado de pausa y activaci´on del cron´ometro, tal como se explicar a´ m´as adelante. Una vez generado el m´odulo del Flip-flop JK, se procedi´o a implementar un circuito contador as´ıncrono de 0 a 9 mediante la utilizaci o´ n de cuatro flip-flops de tipo JK, todos alimentados con una se n˜ al CLEAR, la cual se utiliz o´ de forma tal que cuando el contador llegara a 10 su cuenta se reiniciara inmediatamente. El circuito correspondiente a este contador se muestra en la Figura 10:
Figura 9. Circuito anti-rebote.
En el circuito anterior se utilizan 3 Flip-Flops D que se conectan en serie creando un registro de desplazamiento, por lo tanto cada vez que se activa la entrada ¨ınp”por lo menos durante 3 ciclos de reloj entonces la salida . outp”se activar a´ . Para este caso la se˜nal de reloj de entrada utilizada fue de 190Hz, la cual se obtuvo a partir de una divisi´on de frecuencia previa de la se n˜ al suministrada por la FPGA. IV-3. M´ odulo contador: Este m´odulo constituye una de las partes m´as importantes del cron o´ metro, puesto que es el encargado de realizar el conteo de tiempo.
Figura 10. Contador as´ıncrono de 0 a 9.
Este contador correspondi o´ al contador de d´ecimas de
segundo, cuyo primer flip-flop se alimento´ con la se˜n al de 10Hz, de forma que el conteo fuera sincronizado. Debido a que este contador se encargaba de validar los cambios en los otros contadores (de segundos y de minutos), entonces a su entrada K se conect o´ el cable proveniente del pulsador start/stop, de forma tal que cuando el valor de K no era uno, el flip-flop entraba en un bucle infinito, lo cual permiti´o que el conteo se pausara hasta el retorno de K a su valor correcto (de 1). Los contadores de unidades de segundo y de minutos fueron implementados con la misma l o´ gica del contador de d´ecimas de segundo, sin embargo, el contador de decenas de segundos requiri´o el dise˜no de un contador con 3 f.f. JK de 0 a 6, puesto que una vez transcurridos 60 segundos deber´ıa darse paso al conteo del minuto correspondiente. Este contador tambi´en fue implementado mediante un circuito as´ıncrono y su l´ogica se bas´o en la utilizaci´o n de una se˜nal clear activada por bajo, que mandara el conteo a cero una vez se llegara al valor de 7. Adem´as de realizar este contador, se tuvo que implementar un bloque de sincronizaci´on de forma que al llegar a los 60 segundos, tanto el contador de unidades de segundo como de decenas de segundo se volvieran a iniciar en cero, dando as ´ı paso al conteo de minutos. A partir de cada contador, en total 4, se obtuvieron las salias de cada uno de ellos y se establecieron como las se n˜ ales correspondientes a d e´ cimas de segundo, segundos y minutos, las cuales se almacenaron en arreglos de 4 bits para permitir su almacenamiento mediante las laps.
IV-6. Multiplexor de selecci´ on: Este modulo tiene como funci´on escoger lo que se visualizara en el display. Para su correcto funcionamiento fue necesario crearse un variable (val) de 2 bits, la cual cambiaba sus valores al accionar los pulsadores de lap 1 y lap 2. Si esta variable tenia los valores 11 o 00 el multiplexor seleccionaba el BCD y el ´anodo correspondiente a el cronometro, si esta val ´ıa 01 el multiplexor seleccionaba el BCD y el a´ nodo correspondiente a la lap 1 y por ultimo si esta era 10 el multiplexor seleccionaba el BCD y el a´ nodo correspondiente a la lap 2. IV-7. Decodificaci´ on a siete segmentos: Se cre´o un m´odulo con el objetivo de representar el c o ´ digo hexadecimal en un display de 7 segmentos de la FPGA. Se asignaron como ´nodo , y como variable variables de entrada los bcd y a de salida los segmentos del display nombrados sseg. Para ´ always@(∗) realizar decodificaci o´ n se utilizo la instrucci on que realiza el equivalente en otros lenguajes de programaci´on a una interrupcio´ n cada vez que alguna de las variables de entrada cambia.
Posteriormente se utilizo la estructura case(bcd) para realizar la decodificaci´on solo cuando haya una cambio en la variable de entrada bcd, se realizaron comparaciones hasta llegar al valor de la variable de entrada bcd y se asignaron los estados correspondientes en los segmentos del display para tal valor de entrada. El esquem´atico del circuito obtenido a partir del programa Xilinx es mostrado en las Figuras 11 y 12:
IV-4. M´ odulo Laps: Este modulo tiene como funci´on almacenar y visualizar las laps del cron o´ metro. Para ello se utiliz´o como entradas del m o´ dulo las salidas del cron o´ metro, las cuales asignaran su valor a unas nuevas salidas al presionarse por primera vez el pulsador correspondiente. Para hacer posible la visualizaci o´ n de las laps al igual que el retorno a la visualizacio´ n del cronometro, fue necesario introducir un contador el cual varia seg u´ n la cantidad de veces que se acciona el pulsador. Donde contador igual a cero equivale a la funci´on de guardar los datos, contador igual a uno corresponde a la visualizaci o´ n de el dato almacenado y por ultimo contador igual a dos regreso a la visualizaci o´ n del cronometro. Por ultimo se implemento la funci´on de reset lap la cual corresponde a un pulsador, el cual al ser accionado mandara a 0 todas las variables de lap incluyendo el contador. Se utilizaron dos de este tipo de modulo ya que era necesario el almacenamiento de 2 laps. IV-5. Multiplexor de visualizaci´ on: Debido a la cantidad de datos almacenados mas los datos de salida del contador, fueron necesarios 3 multiplexores de visualizaci o´ n para las salidas del contador, lap 1 y lap 2. La funci o´ n de estos multiplexor consiste en transformar los datos de salida de cada uno en asignaciones de 4 bits a bcd y anodo respectivamente. Figura 11. Diagrama de bloques.
Figura 12. Composici o´ n modular.
V.
CONCLUSIONES
Se logr´o implementar adecuadamente el circuito del cron´ometro, almacenando de manera correcta dos valores de vueltas (laps) as´ı como la generaci o´ n de un estado de pausa del crono´ metro. R EFERENCIAS [1] http://www.ie.itcr.ac.cr/jdiaz/licenciatura/DISENO LOGICO/MATERIALES/ PRESENTACIONES/SECUENCIALES 1.pdf Visitado: 18 de octubre de 2014. [2] Fundamentos de sistemas digitales, Thomas L. Floyd, 9 edici´on. [3] http://dac.escet.urjc.es/docencia/ETC-ITIG LADE/teoriacuat1/tema7 circuitos secuenciales.pdf Visitado: 18 de octubre de 2014. [4] Harris D. y Harris S. , Digital Design and Computer Architecture.