Taller 5

También podría gustarte

Está en la página 1de 5

Taller 5

Susana M. Gómez Coronel


Jeremy Rodríguez Quezada
Juan David Granados Pacheco
Ejercicio No. 1: Contador binario universal

Se utilizó el circuito “univ_bin_counter.vhd” visto en clase y se diseñó el siguiente testbench para


comprobar su funcionamiento:

Ilustración 1. Testbench del código univ_bin_counter.


Se simuló en Model Sim y se obtuvo:

• Contar en orden ascendente

Ilustración 2. Simulación de univ_bin_counter, ascendente.

Cómo se observa en la ilustración anterior, con cada pulso del reloj se aumenta la cuenta en
counter, es posible notar que esta va aumentando de 1 en 1, comienza siendo 0 y termina siendo
5. Tambien se observa que se active la señal min_tick al principio, ya que 0 es el minimo número.
• Contar en orden descendente

Ilustración 3. Simulación de univ_bin_counter, descendente.

Cómo se observa en la ilustración anterior, con cada pulso del reloj se decrementa la cuenta en
counter, es posible notar que esta va decrementando de 1 en 1, comienza siendo 6 y termina
siendo 0. Tambien se observa que cuando se counter llega al valor de 0, se pone en 1 la señal
min_tick, ya que se llegó al minimo número.
• Hacer pausa

Ilustración 4. Simulación de univ_bin_counter, pausa.

En la ilustración anterior es posible observar cuando el sistema entra en pausa, esto ocurre
cuando la señal enable esta en 0, que se observa en el Segundo pulso del reloj. Tambien se observa
que se pone en uno la señal min_tick ya que se llegó al final de la cuenta.
• Ser cargado con un valor específico inicial

Ilustración 5. Simulación de univ_bin_counter, cargar valor.

Cómo se observa en la ilustración anterior, la señal d no tiene ningun valor, pero en el momento
en que se le asigna un valor, este aparece y es de 1010 (10)
• Tener un reset sincrono distinto al rst usado para la inicialización.
Ilustración 6. Simulación de univ_bin_counter, reset sincrono.

Cómo se observa en la ilustración anterior, cuando la señal syn_clr se encuentra en 1, hace que
todas las variables sean 0, no se alcanza a notar en la imagen la subida de dicha señal ya que esta
se encuentra en un tiempo anterior al que fue tomada la foto.

Ejercicio Número 2: Cronómetro

Para realizar este ejercicio, se modificó el código “univ_bit_counter”, ya que no se necesitaba que contara
descendentemente ni se necesitaban tampoco las variables “load” y “up”. Al final se tiene que:

Ilustración 7. Código univ_bin_counter modificado.

Al ya tener el código anterior, se procedió a utilizar el código diseñado en el taller 3 “convertidor”, el cual
convierte el número del conteo a los leds que se prenderán en el 7 segmentos, así:
Ilustración 8. Convertir número binario a leds encendidos en el 7 segmentos.

Finalmente se tiene el código “timer” en donde se unen los códigos antes mencionados y se muestra en
los 7 segmentos:
Ilustración 9. Código “timer”.

En la ilustración anterior, se observa el código de unión dónde se tienen 4 contadores: al terminar el


primer contador (cuenta hasta 5 millones) una vez, se habilitará el conteo del segundo contador (cuenta
hasta 0.1s) una vez, esto ocurrirá hasta que el segundo contador llegue a 9; cada vez que el segundo
contador llegue a 9, se habilitará el tercer contador (cuenta hasta 1s), y así hasta que este también llegue
a 9; y finalmente, cada vez que el tercer contador llegue a 9, se habilitara el cuarto contador (cuenta hasta
10s), y así hasta que este también llegue a 9; obteniendo así el conteo hasta 99.9.

Se aclara que para el enable se utilizó el SW3, para la señal “Go” el SW2, para el reset el SW1 y para el
reset síncrono el Botón2.

En el siguiente link se puede comprobar el funcionamiento del proyecto:

https://drive.google.com/file/d/1Ucs4Tzso_jNukBgFn3VcJYNMLepR_vKP/view?usp=sharing

También podría gustarte