Está en la página 1de 12

Planteamiento del problema.

En este trabajo se pretende diseñar la estructura electronica (digital) que se requiere para hacer
un reloj digital, el cual nos permitiera visualizar hora, minutos y segundos, todo esto en en 4 pantallas
sobre las cuales el tiempo se recorre, esto significa que primmero veremos la hora con los minutos,
despues los minutos con los segundos, seguido los segundos, y de nuevo la hora, despues se repite la
hora con los minutos, sin embargo los resultados hasta ahora sólo satisfacen la visualización de
segundos y minutos, de modo que este trabajo muestra una estructura que nos permite visualizar
minutos y segundos (los minutos en un par de displays de 7 segmentos y los segundos en leds).

Metodología.
Para armar este reloj necesitamos primero analizar los elementos que lo componen, para ello
nos basamos en que los relojs que cuentan los segundos de 00 a 59 al igual que los minutos (por lo que
necesitaremos contadores), que cambian cada segundo (esto representa que es necesario una frecuencia
de 1 Hz para hacerlo funcionar), tambien sabemos que las pantallas de 7 segmentos en las que se
plantea desplegar los minutos estan conectadas de la siguiente forma dentro de la placa:

Fig. 1 Ánodos comunes de los displays.

Como podemos observar para seleccionar el display que vamos a encender debemos enviar un cero,
esto se debe a que los transistores PNP están conectados como interruptores (conmutan) cuando se
envia un 1 lógico el “interruptor” se abre, pero cuando se envia un cero el interruptor se cierra.
Tambien notamos que sólo se posee una linea de transmisión de datos para desplegar un número en los
segmentos de los displays, por la forma en que están conectados los leds de los segmentos (ánodo
común) es necesario enviar un cero para encenderlos.

Fig. 2 estructura de cada


display de la Nexys2.
Los cátodos
Tambien haremos uso de los leds que tiene la tarjeta, estos encienden cuando se les envia un 1 lógico,
pues estan conectados de la siguiente forma al FPGA:

Fig. 3 Forma en que estan colocados los leds.


Ahora que conocemos estas partes de la tarjeta en la cual implementaremos nuestro reloj, diseñamos un
reloj el cual deberá ajustarse a los dispositivos que posee la tarjeta.
El diseño que vamos a implementar despliega segundos y minutos, como ya se mencionó antes los
relojs cuentan de 00 a 59 tanto minutos como segundos, esto significa que necesitamos 2 contadores,
uno que cuente de 0 a 9 (un contador de decadas) y uno que cuente de 0 a 5 (contador módulo 6),
tambien sabemos que el conteo aumenta con cada segundo por lo que se necesita una señal de 1Hz para
hacer funcionar a los contadores, se plantea desplegar dos digitos (los cuales pertenecen a los minutos)
en los displays de 7 segmentos, por lo que será necesario multiplexar como se realizo en una de las
prácticas del curso, esto implica el uso de un decodificador de 2 a 4 y un decodificador de binario a 7
segnmentos pues los contadores realizaran su cuenta en binario.
Comenzamos con los modulos más pequeños del reloj:
1°) Comenzamos con los contadores, cuyo modulo más pequeño es el flip flop, pues utilizando
varios de estos armamos los contadores. Para el diseño de nuestros contadores utilizaremos flip flops
JK, con entradas asincronas clear y preset; el flip flop JK tiene 4 entradas, 2 asincronas (CLR y PR),
una para señal de reloj y 2 sincronas (J y K), y tiene una salida (Q). La entrada CLR manda al flip flop
a un estado de RESET (Q = 0) mientras que PR lo manda a estado de PRESET (Q = 1), las entradas J
y K dependen de la señal de reloj (pues sólo cuando hay una transición de subida en la señal de reloj es
cuando pueden efectuar un cambio de estado en el flip flop), estas entradas sincronas
funcionan de la siguiente forma:
Entradas salida
J K CLK Q(+1)
0 0 ↑ Q (No hay cambio de estado)
0 1 ↑ 0
1 0 ↑ 1
1 1 ↑ Q' (Toggle)
*Nota: no importa los cambios en J y K mientras no se presente el pulso de subida en la señal de reloj. Fig.4 Entidad del
flip flop JK.
Contador de Decadas.
Ahora comenzamos por diseñar un contador de decadas (módulo 10), este contador debido que el
número más grande que alcanza es el 9 (1001 en binario) necesita 4 bits, entonces sabemos que nuestra
entidad tendrá 3 entradas, una para el Reset (que envia al contador a 0000), una entrada de reloj y un
habilitador, y tiene 1 salida de tamaño 4. Para ver la forma en la que opera el contador tenemos el
digrama de estados:
Fig. 5 diagrama
de estados.

esto significa que cuando llegamos a 9, la salida Tc se vuelve uno, para indicar que ha llegado a hecho
un ciclo.
A partir de este diagrama obtenemos la siguiente tabla:
Estado actual. Estado siguiente.
Q3 Q2 Q1 Q0 Q3 Q2 Q1 Q0 Tc
0 0 0 0 0 0 0 1 0
0 0 0 1 0 0 1 0 0
0 0 1 0 0 0 1 1 0
0 0 1 1 0 1 0 0 0
0 1 0 0 0 1 0 1 0
0 1 0 1 0 1 1 0 0
0 1 1 0 0 1 1 1 0
0 1 1 1 1 0 0 0 0
1 0 0 0 1 0 0 1 1
1 0 0 1 0 0 0 0 0

Es notabe que Q0 cambia en cada estado por lo que el flipflop cero está en toggle, Q1 cambia cada que
Q0 = 1 excepto cuando el contador está en 9 (1001), Q2 cambia cuaando cuando Q1 = 1 y Q0 = 1, Q3
cambia cuando Q2=Q1=Q0 = 1 y cuando el contador está en estado 9. Por lo tanto tenemos que:
J0=K0=1; J1=K1=Q'3 Q0; J2=K2=Q1 Q0; J3=K3=(Q2 Q1 Q0)+(Q3 Q0). Sabemos que este contador
debera de contar en sólo algunos casos, por ejemplo, el digito menos significativo de los minutos sólo
cambia cuando el digito menos significativo del segundero y el más significativo tienen su cuenta
terminal activa por lo que necesita de un habilitador, y necesita de Tc que marca que el contador ha
reaizado un ciclo. Por lo que nuestro contador queda:
Fig. 6. Contador de Decadas. Nota: Este diagrama ya contiene las señales con sus respectivos nombres de las señales dentro de la
entidad, por ejemplo HCLK que es la and de las entradas de reloj y Enable, tambien tenemos la
señal T2, Sq1,Sq4, etc. Tambien observamos que si se activa Reset el contador se va al estado 0 (0000).

Para comprobar el funcionamiento del contador de decadas lo simulamos.

Fig. 7 como puede observarse el contador sólo cambia en el flano de subidade la señal de reloj (clk), siempre y cuando enable
se encuentre activo, para esta imagen el contador llega al estado 2 (0010).

fig.8 En esta imagen el enable se mantine activo, por lo que con cada flanco de subida del reloj (clk) el contador aumenta en uno.
En esta imagen llega hasta el el estado 6 (0110).

fig.9 En esta imagen se vuelve a apreciar el efecto que tiene desactivar el enable, para el caso de esta imagen el contador llega hasta 8
(1000).
fig.10 En esta image podemos ver que alcanza el estado 9 (1001) y despues vuelve a comenzar desde el estado cero (0000).

Contador módulo 6.
Este contador se le llama moduo 6 pues es u contador el cual sólo tiene 6 estados, en este caso
cuenta de 0 a 5, como 5 (101) es el número más grande que necesitamos contar nuestro contador tendrá
sólo 3 flip flops, entonces nuestra entidad tendrá 3 entradas, una para señal de reloj (clk), otra para
habilitar el contador (enable) y una de reset que envia al contador al estado cero (000). Tenemos
entonces el siguiente diagrama de estados:

fig.11 diagrama de
estados del contador
modulo6.

Apartir de dicho diagrama obtenemos la siguiente tabla de estados:


Estado actual. Estado siguiente.
Q2 Q1 Q0 Q2 Q1 Q0 Tc
0 0 0 0 0 1 0
0 0 1 0 1 0 0
0 1 0 0 1 1 0
0 1 1 1 0 0 0
1 0 0 1 0 1 1
1 0 1 0 0 0 0

Con esta tabla notamos que Q0 siempre cambia (por lo que el flip flop 0 está en toggle), Q1
cambia cada que Q0 = 1 excepto cuando el contador está en el estado cinco (101), Q2 cambia cuando
Q0=Q1=1 y cuando el contador está en estado 5 (101). Por lo quetendremos J0=K0=1, J1=K1= Q'2 Q0
y J2=K2=(Q2 + Q1)Q0. Al igual que el otro contador no siempre estará en uso (esto significa que se
puede deshabilitar este dispositivo), y tiene una entrada de Reset que lo manda al estado cero (000),
además de las salidas donde se muestra la cuenta Qout, tenemos otra salida, Tc que nos indica que el
contador ha terminado un ciclo. Por lo tanto nuestro contador queda:
fig.12 contador Nota: Este diagrama al igual que el del contdor de decadas contiene las señales las cuales son la parte
módulo 6. combinacional del contador, vemos que en cuanto las entradas Enable habilita la señal de reloj y Reset envia
al contador al estado cero (000).
Paracomprobar el funcionamiento de dicho contador lo simulamos:

fig. 13 diagrama de tiempo. Nota: aquí podemos observar que mientras está en el estado cinco (101) Tc es igual a 1, pues recordemos
que Tc se activa cada que se encuentra en el estado 5.
Divisor de frecuencia.
Debido a que el reloj necesita contar segundos, necesitamos una señal de reloj la cual tenga una
frecuencia de 1Hz, pero la tarjeta nos proporciona una señal de reloj de 50 Mhz, esto significa que la
frecuencia de es 50 millones de ciclos por segundo, por lo que hacemos un divisor de frecuencia el cual
cuente 50 millones, esto significa que la salida cambie cada 50 millones de pulsos de esta forma
dividimos la frecuencia a un Hz. La entidad de dicho divisor solo posee una entrada (CLK) y una salida
(SELECTOR), por lo que nuestra entidad queda:

fig.13 Divisor de frecuencia.

Contador de tiempo.
Ahora necesitamos un contador que nos permita contar los segundos de 0 a 59 y los minutos de
0 a 59, comenzamos con los segundos, para ser más especificos comenzamos con la parte menos
significativa de los segundos, esta se cuenta de 0 a 9 por lo que utilizaremos un contador de decadas el
cual debe estar conectado a la señal de reloj de 1 Hz, por lo tanto este contador siempre debe de estar
habilitado, la entrada de reset será para que el usuario cuando así lodesee pueda mandar el reloj a un
estado inicial, de modo que las entradas de Reset de todo contador dentro del contador de tiempo sera
conectada a Rst quien será una de las entradas del contador de tiempo, el bus de tamaño 4 de salida
(Qs) del contador de decadas se conectará a un bus de salida (cntSS10) del contador de tiempo, la otra
salida del contador de decadas, Tc, se conectará a un inversor (s1 = Tc'), para contar el digito más
significativo de los segundos usamos un contador módulo 6, el cual conectaremos de ls siguiente
forma: a la entrada de reloj le conectamos la señal s1, en el caso del habilitador (Enbl) lo mantenemos
siempre activo pues lo que hará que cuente es la señal de reloj que tendremos en s1, el bus de salida
(Qout) será una salida (cntSS6) del contador de tiempo, la salida Tc se envia por medio de una señal
Tc2. Ahora analizamos la conexión para el digito menos significativo de los minutos, ocuparemos para
ello un contador de decadas, conectado de la siguiente forma: está siempre habilitado (Enbl = 1), la
entrada de reloj recibe una señal CuT1, dónde CuT1 es la NAND de las señales Tc1 y Tc2 (CuT1 = Tc1
nand Tc2), el bus de salida (Qs) será una salida (cntMM10) del contador de tiempo, la otra salida Tc se
conecta a una señal Tc3, para el digito más significativo de los segundos utilizamos otro contador
módulo 6 conectado de la siguiente forma: siempre está habilitado (Enable = 1), la entrada de reloj
recibe la señal CuT2 la cual es la negación de S2, quien sa su vez es la AND de las señales Tc1,Tc2 y
Tc3, el bus de salida (Qout) será otra salida (cntMM6) del contador de tiempo, la otra salida Tc se
conecta a una señal Tc4, Tc4 será otra salida del contador de tiempo. De modo que tenemos el
siguiente diagrama:

fig.14 estructura de bloques del contador de tiempo.


Como podemos observar las entradas de nuestro contador de tiempo son: un entrada para señal de reloj
(clk50) y la entrada asíncrona de reset (Rst), y las salidas son: cntSS10 (el cual es un bus de tamaño 4),
cntSS6 (el cual es un bus de tamaño 3), cntMM10 (el cual es un bus de tamaño 4), cntMM6 (el cual es
un bus de tamaño 3) y cuTer. Por lo que tenemos:

Nota: La entidad recibe


el nombre de
ProbMMSS pues es
para probar el funciona-
miento de los segundos
y minutos.

fig.15 entidad del contador de tiempo.

Multiplexor.
Como se mencionó anteriormente para mandar a los displays los minutos (2 digitos) es
necesario multiplexar, lo realizamos de la misma forma que en una de las prácticas del curso, para esto
necesitamos primero hacer un multiplexor de 2 a 1, el cual tiene 3 entradas, una entrada de selección
(s), 2 de datos (A,B) y una salida x, donde x = s'A + sB. Esto implica que nuestra entidad sea la
siguiente:

fig.16 Multiplexor 2 a 1.
Multiplexor cuadruple de 2 a 1.
El multiplexor descrito anteriormente es el módulo más pequeño del Multiplexor cuadruple,
pues este se compone de 4 MUX de 2 a 1, donde todos los MUX 2 a 1 comparten la misma linea de
selección. Se necesitan 4 MUX pues se pretende que la salida sea un bus de tamaño 4, entonces
tenemos 2 buses de tamaño 4 (A,B) a la entrada de este MUX cuadruple, una entrada para el selector
(s) y un bus de tamaño 4 de salida (Y), el primer MUX 2 a 1 recibe el bit más significativo de los buses
A y B (A(4) y B(4)) en sus entradas, y a su salida se conecta con el bit más significativo del bus de
salida (Y(4)), el segundo MUX 2 a 1 se conecta al bit que sigue en “peso” al bit más significativo de
cada Bus de entrada (A(3) y B(3)) y a su salida conectamos Y(3), para el tercer MUX conectamos A(2)
y B(2) en las entradas, a su salida Y(2) y por último, para el último MUX conectamos el bit menos
significativo de cada bus, A(1) y B(1), y a su salida el bit menos significativo del bus de salida y(1)
como se muestra en la figura 14.

fig.17 entidad del MUX


completo.
Decodificador de Binario a 7 segmentos.
Para poder desplegar en los displays de 7 segmentos un múmero primero tenemos que
decodificarlo, esto ya lo hemos hecho antes en una práctica del curso, por lo que reutilizamos el
codificador, recordemos que con el decodificador decimos que segmentos de las pantallas se
encenderan (colocando un cero lógico para encenderlos y un uno lógico para apagarlos), entonces
tenemos que con los 4 bits de entrada que posee este decodificador podemos tener 16 combinaciones,
las cuales son:

Binario Hexadecimal
a b c d Representación
0 0 0 0 0
0 0 0 1 1
0 0 1 0 2
0 0 1 1 3
0 1 0 0 4
0 1 0 1 5
0 1 1 0 6
0 1 1 1 7
1 0 0 0 8
1 0 0 1 9
1 0 1 0 a
1 0 1 1 b
1 1 0 0 c
1 1 0 1 d
1 1 1 0 e
1 1 1 1 f

Entonces necesitamos conocer que segmentos hay que encender para cada combinación y cuales
mantener apagados, basandonos en la figura 2 obtenemos la siguiente tabla:

Número hexadecimal. Leds activos


0 a,b,c,d,e,f
1 b,c
2 a, b, d, e, g
3 a, b, c, d, g
4 b, c, f, g
5 a, c, d, f, g
6 a, c, d, e, f, g
7 a, b, c
8 a, b, c, d, e, f, g
9 a, b, c, d, f, g
a a, b, c, e, f, g
b c, d, e, f, g
c d,e,g
d b, c, d, e, g
e a, d, e, f, g
f a, e, f, g

Ahora sabemos que segmentos enciende para cada combinación, por lo que tenemos por último la tabla
donde asignamos 0 para encender los segmentos necesarios y 1 para apagarlos.

Entradas. Salidas.
a b c d FA FB FC FD FE FF FG
0 0 0 0 0 0 0 0 0 0 1
0 0 0 1 1 0 0 1 1 1 1
0 0 1 0 0 0 1 0 0 1 0
0 0 1 1 0 0 0 0 1 1 0
0 1 0 0 1 0 0 1 1 0 0
0 1 0 1 0 1 0 0 1 0 0
0 1 1 0 0 1 0 0 0 0 0
0 1 1 1 0 0 0 1 1 1 1
1 0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 0 0 1 1 0 0
1 0 1 0 0 0 0 1 0 0 0
1 0 1 1 1 1 0 0 0 0 0
1 1 0 0 1 1 1 0 0 1 0
1 1 0 1 1 0 0 0 0 1 0
1 1 1 0 0 1 1 0 0 0 0
1 1 1 1 0 1 1 1 0 0 0

Por lo que la entidad del codificador tiene una bus de entradas de tamaño 4 (Entradas) y un bus de
salida de tamaño 7 (Salidas).

Fig. 18 Entidad del decodificador


binario a 7 segmentos.
Decodificador de 2 a 4.
Este decodificador nos es útil para poder hacer que se desplieguen dos digitos diferentes en los
displays (cada digito) en una pantalla, lo que hace es que para cada combinación activa sólo una de sus
salidas, al igual que en la práctica el se encarga de decir que pantalla se enciende, por lo que controla
las 4 pantallas, por lo tanto debe tener 2 entradas, de modo que su comportamiento es el siguiente:
Entradas. Salidas.
A B Displays(1) Displays(2) Displays(3) Displays(4)
0 0 0 1 1 1
0 1 1 0 1 1
1 0 1 1 0 1
1 1 1 1 1 0

Por lo que vemos, la entidad del decodificador de 2 a 4 tiene dos entradas (A y B) y un bus de tamaño 4
de salida (Displays).

Fig. 19 Entidad del decodificador


de 2 a 4.
Divisor de fracuencia con frecuencia de salida de 100 hz.
Debido a que 2 displays no deben encenderse al mismo tiempo, necesitamos una frecuencia alta
para que el ojo humano no persiba que estas se encienden y se apagan para poder desplegar ambos
números. Este divisor debe tener a su entrada una señal de reloj de 50 Mhz para tener a la salida 100Hz,
pues realiza el conteo de quinientos mil flancos de subida. Su entidad solo tiene una entrada (CLK) de
reloj y una salida (SELECTOR).

Fig. 20 Entidad del divisor


de frecuencia con salida de
100Hz.
Multiplexación de las pantallas.
La multiplexación de los displays es igual que como se hizo en una de las prácticas, creamos
entonces una entidad (llamada MuxDisplay) con 3 entradas, 2 son buses de tamaño 4 (A y B) y la otra
entrada es una entrada de reloj, tiene 2 buses de salida, uno de tamaño 7 (Seg) y otro de tamaño 4
(Display), la estructura interna de esta entidad está compuesta por el multiplexor cuadruple, el
decodificador de binario a 7 segmentos, el decodificador de 2 a 4, y el divisor de frecuencia (relojp)
con salida de 480Hz, estos se conectan de la siguiente forma:
El divisor de frecuencia se conecta su entrada de reloj a una señal de reloj de 50MHz y su salida a una
señal s, el multiplexor cuadruple se conecta a un par de buses de entrada de la entidad (A y B) ambos
de tamaño 4, en el selector se le conecta la señal s, y el bus de salida del Mux cuadruple se conecta a un
bus de tamño 4 (Y), el decodificador de binario a 7 segmentos tiene en su entrada conectado un bus de
tamaño 4 (Y) y a su salida un bus de tamaño 7 (seg) el cual es una de las salidas del sistema, por último
conectamos el decodificador de 2 a 4, en su entrada A lo conectamos a cero, y en su entrada B lo
conectamos a s, y su salida la conectamos a un bus de tamaño 4 (Display) el cual es un bus de salida de
la entidad, la conexión de las entradas del decodificador ayudan a que cuando tengamos s = 0,
Display(1) sea cero, mientras el resto de bits del bus sean uno (esto implica que se enciende una
pantalla) y cuando s=1, Display(2) = 0 y los de demás bits del bus Display son 1, de la misma forma en
el multiplexor cuadruple tendremos como salida a al bus A cuando s=0, y B cuando S=1, de esta forma
A se verá en el display 1 y B en el display 2.
De modo que la estructura de la entidad y la entidad como bloque son:
Reloj que muestra minutos y segundos.
Para armar el reloj, necesitamos de una entidad que este construida con dos bloques solamente,
el contador de tiempo y el módulo encargado de la multiplexación de las pantallas (MUXDisplay), para
armarlo comenzamos con el contador de tiempo,lo conectamos a una señal de reloj de 50 Mhz,
sabemos que los segundos se desplegaran en los leds así que los conectamos de la siguiente forma, en
un bus de tamaño 4 (QLSS) conectamos cntSS10 que pertenece a la parte menos significativa de los
segundos (respetando la ponderación de los bits, esto significa QLSS(4) se conecta con cntSS10(4),
QLSS(3) con cntSS10(3) y así sucesivamente), en un bus de tamaño 3 (MSS) conectamos cntSS6 (al
igual que con cntss10 respetamos la ponderación de cada bit), para el caso de cntMM10 (del cual sale
el bus de tamaño 4 QLSM) y cntMM6 (del cual sale el bus de tamaño 3 QMSM)los tendremos que
enviar al multiplexor cuadruple, en el caso de cntMM6 es un bus de tamaño 3 por lo que lo conectamos
a un bus de tamaño 4 (MaxMin), sólo que el bit más significativo de este bus se conecta a tierra
(MaxMin(4) = 0) los demás bits se conectan respetando la ponderación ( MaxMin(3) con QMSM(3),
MaxMin(2) con QMSM(2) y MaxMin(1) con QMSM(1)) y Tc del contador de tiempo lo coenctamos a
la salida Tcout. Ahora conectamos el módulo MUXDisplay, conectamos su entrada de reloj con una
señal de reloj de 50 Mhz, a su entrada donde se encuentra el bus A conectamos el bus QLSM y en el
bus de entrada B conectamos el bus MaxMin, al bus de salida (seg del componente MUXDisplay) de
tamaño 7 conectamos un bus de salida tamaño 7 de la entidad (seg) y al bus de salida (Display del
componente MUXDisplay) tamaño 4 conectamos un bus de salida de tamaño 4 de la entidad (Disp).
Los buses QLSS y QMSS se conectan a los buses de salida de la entidad LSS y MSS. Por lo que la
entidad y la estructura quedan de la siguiente forma:

También podría gustarte