Documentos de Académico
Documentos de Profesional
Documentos de Cultura
AUTÓNOMA DE PUEBLA
Diseño Digital
Equipo 1:
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
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.
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).
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
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.
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.
Como vemos el conteo sigue con un valor cero por lo que el programa está en paro.
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