Está en la página 1de 21

​BENEMÉRITA UNIVERSIDAD

AUTÓNOMA DE PUEBLA

Facultad de Ciencias de la Computación


Ingeniería en Ciencias de la Computación

Diseño Digital

Proyecto : Contador de décadas con 2 cifras

Equipo 1:

● ​González Torres Deisy Daniela - 201738039


● ​Ortega Zitle Ariel - 201719454
● ​Quechol Zarate Gerardo Miguel - 201768662
● ​Gallegos Melchor Angelica -201738012

Profesor: Gabriel Juárez Díaz

Entregado: 04 de Diciembre del 2020


INTRODUCCIÓN

Para esta práctica se desarrollará el código en VHDL para la programación de un reloj contador de
decadas de 2 cifras, donde se pondrá en práctica los conocimientos obtenidos durante el curso para
la creación de los diagramas, lógica y código del proyecto.
Se demostrará el uso de las tablas de verdad reflejadas en la lógica programable de un lenguaje de
especificación utilizado para describir circuitos digitales y para la automatización de diseño
electrónico y la identificación de los componentes de un encapsulado para distinguir los diferentes
usos de los pines para entrada y salida.

OBJETIVO

El proyecto deberá basarse a partir de las siguientes características:


● El conteo debe ser ascendente/descendente de 0 al 9.
● Debe tener una frecuencia de 1 segundo por conteo (1Hz)
● Realizar cambio de ascendente a descendente activando una entrada (UP/DOWN)
● Activar el conteo y paro en algún valor de conteo con otra entrada (INICIO/PARO)
● Reiniciar el contador en el valor 00 (RESET)
Se usará el programa Xilinx ISE.
MARCO TEÓRICO

VHDL
VHDL es un lenguaje de especificación definido por el IEEE (​Institute of Electrical and
Electronics Engineers)​ (ANSI/IEEE 1076-1993) utilizado para describir circuitos digitales y para
la automatización de diseño electrónico . VHDL es acrónimo proveniente de la combinación de
dos acrónimos: VHSIC (​Very High Speed Integrated Circuit​) y HDL (​Hardware Description
Language)​ . Aunque puede ser usado de forma general para describir cualquier circuito digital se
usa principalmente para programar PLD (​Programmable Logic Device - Dispositivo Lógico
Programable), FPGA (​Field Programmable Gate Array)​ , ASIC y similares.

Xilinx ISE
Xilinx ISE (Integrated Synthesis Environment) es una herramienta de software descontinuada de
Xilinx para síntesis y análisis de diseños HDL, que se enfoca principalmente en el desarrollo de
firmware integrado para familias de productos Xilinx FPGA y CPLD de circuitos integrados (IC).
ISE permite al desarrollador sintetizar ("compilar") sus diseños, realizar análisis de tiempo,
examinar diagramas RTL, simular la reacción de un diseño a diferentes estímulos y configurar el
dispositivo de destino con el programador.

CPLD Cool Runner2 XC2C64A VQ44


El dispositivo CoolRunner-II de 64 macroceldas está diseñado para aplicaciones de alto
rendimiento y baja potencia. Esto brinda ahorros de energía a los equipos de comunicación de alta
gama y alta velocidad a los dispositivos que funcionan con baterías. Debido al funcionamiento
dinámico y en espera de baja potencia, se mejora la confiabilidad general del sistema. Este
dispositivo consta de cuatro bloques de función interconectados por una matriz de interconexión
avanzada (AIM) de baja potencia. TheAIM alimenta 40 entradas verdaderas y complementarias a
cada FunctionBlock. Los Bloques de Función consisten en un PLA P-term de 40 por 56 y 16
microcélulas que contienen numerosos bits de configuración que permiten modos de operación
combinatorios o registrados.

Tabla de Visualizador de siete segmentos


DESARROLLO

Característica: Conteo ascendente/descendente del 0 al 09.

Lo que se realizó para realizar esta característica en el programa fue primero crear en el archivo
“contador.vhd” la variable llamada updown de tipo entero la cual al tener un valor de “0 “en
entrada el programa realizará el conteo de forma ascendente y si la variable toma un valor de “1”
este realizara un conteo de forma descendente.
Característica: Frecuencia de 1 segundo por conteo(1Hz).

Para realizar esta característica se procedió a crear la variable clk:


Como podemos observar se crea un condicional para que cada que se cumplan esas condiciones se
le sume o reste a las variables definidas.

Característica: Activar el conteo y paro en algún valor de conteo con otra entrada
(INICIO/PARO).

Para la realización de esta característica se creó una variable llamada conteo de tipo entero que
tiene el valor “0”, al iniciar el programa si la variable no es cambiada y sigue con un valor cero
entonces el programa estará en paro pero si quisiéramos que el programa inicie tendríamos que
cambiar el valor de la variable conteo a “1” este cambio haría que el programa inicie sus
funciones.

Aquí se aprecia la condicional que tiene esta variable, como vemos si la variable conteo es “1” se
continuará con el conteo ya sea ascendente o descendente.
Característica: Realizar cambio de ascendente a descendente activando una entrada
(UP/DOWN).

Para cumplir con esta característica se hace el uso de la variable updown que ya se definió con
anterioridad

Si antes de iniciar el programa a la variable updown se le pone el valor de 1 el conteo es de forma


descendente (9 a 0), pero si se le pone el valor 0 o no se le coloca valor antes de iniciar entonces el
programa hace el conteo de 0 a 9 (ascendente).

Característica: Reiniciar el contador en el valor 00 (RESET).

Para esta característica es necesario considerar los posibles escenarios donde se necesite reiniciar
el display, como lo son la sucesión ascendente o descendente del segmento o el reset de forma
manual al reloj, por lo que considerando eso tenemos las siguientes secciones controladas.
En caso de que el reset sea manual se restauran los valores originales de los números contadores
del código poniendo sus valores binarios en ceros, se considerará de acuerdo a si la opción de reset
tiene una entrada alta (1), significando que el número ha sido introducido manualmente.

Por otro lado tenemos los casos donde sea necesario resetear la cuenta si es que supera el límite del
conteo.

Caso descendente, en caso de que el orden del reloj sea descendente y al llegar al número 0, este
deberá regresar a ser 9, por lo tanto se le asigna de regreso en 9 en números binarios.

Caso ascendente, en caso de que el orden del reloj sea ascendente y al llegar al número 9, este
deberá regresar a ser 0, por lo tanto se le asigna de regreso en 0 en números binarios.
RESULTADOS

Código Obtenido:
Diagrama a bloques obtenido:
Característica: Conteo ascendente/descendente del 0 al 09.

Observamos como la función conteo ascendente funciona correctamente y de igual forma llega la
asignación correcta al display 1 y 2.

Y cuándo debe reiniciarse lo hace de forma correcta.

Ahora si procedemos a cambiar el valor de updown a 1 se observa el conteo descendente y su


reinicio en 9.
Característica: Frecuencia de 1 segundo por conteo(1Hz).

Definimos un intervalo de 0 a 1 y el periodo de un segundo para que cada que se corra el programa
se observe el comportamiento de la variable clk en un segundo.

Característica: Realizar cambio de ascendente a descendente activando una entrada


(UP/DOWN)

Como muestra en la siguiente imagen, no se cambió el valor inicial de la variable updown,


entonces el conteo es ascendente.
Si se quiere que el conteo vaya para atrás (descendente) se debe poner como valor 1 en la variable
updown.

Después de colocar el valor 1, el programa realiza el conteo de forma descendente, como se


muestra a continuación.
Característica: Activar el conteo y paro en algún valor de conteo con otra entrada
(INICIO/PARO).

Como vemos el conteo sigue con un valor cero por lo que el programa está en paro.

Aquí se cambia el valor de la variable conteo


La variable conteo ya a sido cambiado por lo que ya se pudo iniciar el conteo

Característica: Reiniciar el contador en el valor 00 (RESET).


Regresa a valor de 0
CONCLUSIONES

Con esta práctica podemos demostrar los conocimientos adquiridos para el manejo de circuitos
digitales con la implementación de códigos en VHDL basándonos en los conocimientos sobre la
lógica que debe de llevar los circuitos lógicos programables, el manejo de los datos representados
a partir de la lógica que deben de llevar para obtener los resultados deseables y basar los resultados
en las comparaciones entre los diagramas y la lógica matemática que llevan.

Debido a los resultados obtenidos podemos observar el correcto funcionamiento de nuestro código
y de nuestra implementación por el cual podemos decir que se logra el objetivo de construir un
contador de segundos con todas las restricciones que se solicitaron, uno de los puntos más
importantes que se observaron en la construcción del proyecto fue la declaración de las variables,
ya que si no defines correctamente desde un inicio todas las que se van a ocupar y su tipo va a ser
mucho más tardado el proceso.

REFERENCIAS

Floyd, T. L., Caño, J. G. (1997). Fundamentos de sistemas digitales. Prentice Hall.

Xilinx Documentation - XC2C64A CoolRunner-II CPLD

También podría gustarte