You are on page 1of 6

Informe Cronometro Digital

Edwin Alexander Ramrez Vargas

Camila Rodrguez Ramrez

Email: earamirezv@unal.edu.co
Codigo: 2548920

Email: camrodriguezram@unal.edu.co
Codigo: 25451386

ResumenEl siguiente trabajo consiste en la presentacion del


de un cronometro
analisis llevado a cabo para realizar el diseno
con conteo de decimas de segundos y una capacidad o alcance
maximo de 10 minutos, implementado en HDL a partir del
del cronometro se
lenguaje Verilog. Para realizar el diseno
utilizaron distintos modulos, correspondientes por ejemplo a la
de reloj, as como al manejo de
division de frecuencia de la senal
las funciones del cronometro, dentro de ellas el almacenamiento
de dos laps (vueltas). Todo ello se implemento a partir del
conocimiento adquirido en la clase teorica de Electronica Digital
I.

I. I NTRODUCCI ON
La propiedad de memoria y sincronismo es una de las
mas importantes en el mundo de la electronica digital, puesto
que a partir de ella se pueden crear circuitos que contengan
almacenamiento, que funcionen secuencialmente y ademas
que procesen informacion, lo cual es vital en las tecnologas
actuales.
Debido a la gran importancia de los circuitos secuenciales
en el desarrollo de la tecnologa, se realiza la implementacion
de un cronometro digital con el objetivo de aplicar los conceptos teoricos y con ello evidenciar el funcionamiento de los
circuitos secuenciales, tales como los contadores. As mismo,
con la finalidad de comprender el diseno de circuitos de varios
estados y el uso de los registros para el almacenamiento de la
informacion.

II. MARCO TE ORICO


Existen muchas ocasiones en donde se requiere que un
circuito cambie bajo consideraciones de las entradas y de su
estado, es 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 por el cual los eventos puedan secuenciarse,
este medio es una senal de reloj, esto es, un circuito especial
que genera pulsos electricos que se encargan de validar el
funcionamiento del circuito digital. Las senales de reloj tienen
la forma mostrada en la Figura 1:

Figura 1. Senal de reloj.

Los cambios de estado en los circuitos secuenciales ocurren


solo en los pulsos del reloj y pueden establecerse ya sea en

los flancos de subida, los flancos de bajada o cuando el reloj


alcanza su maximo voltaje, tal como se muestra en la Figura
2.

Figura 2. Composicion del reloj.

A partir de esta definicion es posible determinar que existen


circuitos secuenciales activados por flanco (de bajada o de
subida) y activados por nivel, es decir cambian su estado
cuando la senal de reloj alcanza su maximo o mnimo valor
de voltaje.
La forma en que estos circuitos mantienen su estado es a
traves de la realimentacion; la realimentacion en los circuitos
digitales se produce cuando la salida del circuito es una
funcion 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 (activacion) 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 almacenar 1 bit (1 o 0). El principio de funcionamiento
de los biestables se basa en el hecho de que a partir de la
realimentacion se puede mantener (almacenar) un valor estable
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
realimentacion 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 pueden a su vez subdividirse en varios tipos,
algunos de los cuales son: el latch S-R y el latch tipo D.
Latch S-R: Un latch S-R con entrada activa a nivel alto
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 comparacion 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 condicion 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 e stos 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
sncronas. En este circuito cuando S esta a nivel ALTO y R
esta 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 esta a nivel BAJO y R esta 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 estan a nivel BAJO, la salida
no cambia de estado y cuando S y R estan a nivel ALTO, se
produce una condicion no valida. 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 tambien 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 caracterstica 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 activacion en flanco de subida [2] pagina 421.

Flip-flop D: El flip-flop tipo D resulta muy u til cuando


se necesita almacenar un u nico bit de datos. El flip-flop D
mas sencillo se obtiene anadiendo 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] pagina 412.

II-A2. FLIP-FLOPS: Los Flip-flops son dispositivos


sncronos de dos estados. El hecho de que sea sncrono,
significa que la salida cambia de estado u nicamente en un
instante especfico. 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 basicos de construccion de los
contadores, registros y otros circuitos de control secuencial, y
se emplean tambien en ciertos tipos de memorias [1].

Figura 7. Flip-flop D por activacion en flanco de subida [2] pagina 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 mas ampliamente utilizados. Este circuto tiene

condiciones identicas de SET, RESET y de no cambio a las


del S-R, con la diferencia de que no posee condiciones no
validas 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 identico
con la diferencia de que se activa en los flancos negativos.

El estado de pausa y start del cronometro, manipulado a


traves del contador principal, el cual fue el contador de
decimas de segundos.
La implementacion del reset del cronometro y del reset
de las laps.
A partir de esta estructura se realizaron los modulos necesarios para implementar el circuito y ademas se tuvieron en
cuenta aspectos como la frecuencia otorgada por el reloj de la
FPGA y la conexion y el tipo de 7 segmentos contenidos en
ella.
Una vez realizado el diseno en HDL se procedio a probar
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]


pagina 427.

Los circuitos anteriores basan su funcionamiento en el uso


del sincronismo, el cual es obtenido a partir de una senal
de control (reloj) que efectua las variaciones en la salida.
No obstante, existen circuitos que son asncronos y utilizan
propiedades de inicializacion y de borrado.
II-B.

Circuitos monoestables y aestables

Los circuitos monoestables son aquellos que tienen un u nico


estado estable. Normalmente, un monoestable se encuentra en
su estado estable, cambiando a su estado inestable solo cuando
se dispara. Una vez que se ha disparado, el monoestable
permanece en su estado inestable durante un determinado
intervalo de tiempo, volviendo a continuacion a su estado
estable [2].
Los circuitos secuenciales aestables no tienen ningun estado
estable y se emplean principalmente como osciladores, es
decir, como generadores de senales automantenido [3].
III.

PROCEDIMIENTO EXPERIMENTAL

Para llevar a cabo la realizacion del cronometro digital, se


tuvieron en cuenta los siguientes puntos:
La realizacion de un contador de 0 a 9 asncrono que
tuviera como entrada una senal de reloj y se encargara
de realizar el conteo de las decimas de segundo.
La creacion 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 decimas de segundos se conecto a la
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 visualizacion en los displays, teniendo en cuenta las indicaciones
dadas.

AN ALISIS
Y RESULTADOS

La forma en que se organizo el diseno del cronometro fue a


partir de la creacion de modulos con cierta jerarqua asociada.
En total se disenaron 8 modulos, en los cuales se distribuyeron cada una de las funcionalidades requeridas para el diseno
del cronometro, siendo el modulo principal el correspondiente
al Main, donde se llamaron finalmente todos los submodulos
de manera tal que quedara definido el comportamiento del
circuito. As mismo, este modulo 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 cronometro y as mismo de pausarlo en un conteo
especfico.
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 informacion almacenada fuera liberada.
Dos pulsadores, correspondientes a las funcionalidades
lap1 y lap2, los cuales mediante la primera pulsacion se
encargaban de almacenar una vuelta especfica y mediante una segunda pulsacion de efectuar su visualizacion en
los displays siete segmentos.
Analogamente, como salidas del cronometro se definieron:
El dato hacia los siete segmentos, que sera el conteo del
cronometro o bien alguna de las dos laps almacenadas.
La asignacion de a nodos, de forma tal que la visualizacion 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 comun, es decir,
necesitaban un valor bajo para que sus segmentos se
encendieran.
A continuacion se realiza una descripcion de cada uno
de los modulos implementados, as como de su logica de
funcionamiento:
IV-1. Modulo divisor de frecuencia: La FPGA utilizada
(Nexys 2) posee un oscilador capaz de generar un tren de
impulsos o senal de reloj con una frecuencia de 50MHz. Dicha
frecuencia fue demasiado alta para el diseno del circuito, por lo

cual se procedio inicialmente a realizar un modulo divisor de


frecuencia que tuviera como entrada la senal de reloj generada
por la tarjeta de desarrollo y cuya salida fuera una senal de
reloj con una frecuencia mucho mas baja. Para este caso, la
frecuencia a obtener se establecio de 100Hz, de forma que
dicho reloj alimentara el contador de decimas de segundos,
el cual se encargo de iniciar el conteo, as como de llevar la
sincronizacion adecuada del circuito.
Este modulo se implemento utilizando un proceso always
de forma que al invocar una variable de tipo entera llamada
contadornicializada en cero y al identificar cada flanco de
subida de la senal de reloj de 50MHZ se realizara un aumento
en la variable contador de forma que la articulacion de la nueva
senal de reloj generada se realizara cuando dicho contador
llegara a 2500000, para que as la frecuencia obtenida fuera
de 10Hz, es decir una decima de la duracion de un segundo.
IV-2. Modulo antirrebote: Debido a las caractersticas
mecanicas de los pulsadores, se hizo necesaria la creacion de
un modulo anti-rebote encargado de recibir como entrada cada
uno de los pulsadores y de generar como salida un pulso de
determinada duracion, independiente del tiempo de pulsacion.
La logica tenida en cuenta para el desarrollo de este modulo
se baso en el hecho de que al realizar una pulsacion, e sta
puede ser interpretada como un 1 logico, de forma que si
es posible almacenar dicho valor dentro de un arreglo de un
tamano especfico, en nuestro caso de 3 bits, entonces puede
realizarse un proceso que genere un pulso cuya duracion 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 logicos.
Esta logica se implemento a partir del uso de tres flipflops D conectados en cascada junto con una compuerta and
encargada de validar la salida despues de ciertos retardos, este
circuito se muestra en la Figura 9:

Para su realizacion se partio de un modulo denominado JK


mediante el cual se describio el funcionamiento de este flipflop con entradas J,K y clear y salida Q.
Su funcionamiento como es conocido, se definio mediante
el uso de sentencias if, que permitan identificar a partir de un
proceso always, cada flanco de bajada de la senal de reloj con
el fin de decidir el cambio de estado, as como de los estados
clear y reset.
La condicion principal implementada en este modulo fue el
hecho de que la basculacion o articulacion de la senal generada
por el flip-flop se presentara si y solo si J y K tenan un valor
de 1. Esta sentencia fue de gran importancia, ya que permitio
controlar el estado de pausa y activacion del cronometro, tal
como se explicara mas adelante.
Una vez generado el modulo del Flip-flop JK, se procedio a
implementar un circuito contador asncrono de 0 a 9 mediante
la utilizacion de cuatro flip-flops de tipo JK, todos alimentados con una senal CLEAR, la cual se utilizo 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 nppor lo menos
durante 3 ciclos de reloj entonces la salida .outpse activara.
Para este caso la senal de reloj de entrada utilizada fue de
190Hz, la cual se obtuvo a partir de una division de frecuencia
previa de la senal suministrada por la FPGA.
IV-3. Modulo contador: Este modulo constituye una de
las partes mas importantes del cronometro, puesto que es el
encargado de realizar el conteo de tiempo.

Figura 10. Contador asncrono de 0 a 9.

Este contador correspondio al contador de decimas de

segundo, cuyo primer flip-flop se alimento con la senal 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 conecto 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
permitio 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 logica del contador de decimas
de segundo, sin embargo, el contador de decenas de segundos
requirio el diseno de un contador con 3 f.f. JK de 0 a 6, puesto
que una vez transcurridos 60 segundos debera darse paso al
conteo del minuto correspondiente.
Este contador tambien fue implementado mediante un circuito asncrono y su logica se baso en la utilizacion de una
senal clear activada por bajo, que mandara el conteo a cero
una vez se llegara al valor de 7.
Ademas de realizar este contador, se tuvo que implementar
un bloque de sincronizacion 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 senales
correspondientes a decimas 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 seleccion: Este modulo tiene como


funcion 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 a nodo
correspondiente a el cronometro, si esta vala 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. Decodificacion a siete segmentos: Se creo un modulo con el objetivo de representar el codigo hexadecimal en
un display de 7 segmentos de la FPGA. Se asignaron como
variables de entrada los bcd y a
nodo , y como variable
de salida los segmentos del display nombrados sseg. Para
realizar decodificacion se utilizo la instruccion always@()
que realiza el equivalente en otros lenguajes de programacion
a una interrupcion cada vez que alguna de las variables de
entrada cambia.
Posteriormente se utilizo la estructura case(bcd) para realizar la decodificacion 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 esquematico del circuito obtenido a partir del programa
Xilinx es mostrado en las Figuras 11 y 12:

IV-4. Modulo Laps: Este modulo tiene como funcion


almacenar y visualizar las laps del cronometro. Para ello se
utilizo como entradas del modulo las salidas del cronometro,
las cuales asignaran su valor a unas nuevas salidas al presionarse por primera vez el pulsador correspondiente.
Para hacer posible la visualizacion de las laps al igual que
el retorno a la visualizacion del cronometro, fue necesario
introducir un contador el cual varia segun la cantidad de
veces que se acciona el pulsador. Donde contador igual a cero
equivale a la funcion de guardar los datos, contador igual a
uno corresponde a la visualizacion de el dato almacenado y
por ultimo contador igual a dos regreso a la visualizacion del
cronometro.
Por ultimo se implemento la funcion 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 visualizacion: Debido a la cantidad
de datos almacenados mas los datos de salida del contador,
fueron necesarios 3 multiplexores de visualizacion para las
salidas del contador, lap 1 y lap 2. La funcion 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. Composicion modular.

V.

CONCLUSIONES

Se logro implementar adecuadamente el circuito del


cronometro, almacenando de manera correcta dos valores
de vueltas (laps) as como la generacion de un estado de
pausa del cronometro.
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 edicion.
[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.

You might also like