COntador Binario

BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA INGENIERÍA EN CIENCIAS DE LA COMPUTACIÓN SISTEMAS DIGITALES PRÁCTICA 2 ALU (Un

Views 204 Downloads 27 File size 2MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA INGENIERÍA EN CIENCIAS DE LA COMPUTACIÓN SISTEMAS DIGITALES PRÁCTICA 2 ALU (Unidad Lógica Aritmética) EN VHDL IMPLEMENTACION EN SPARTAN 6 PROFESOR: BUSTILLO DÍAZ MARIO ALUMNOS: ÁLVAREZ PÉREZ YOLANDA ANDREA HERNÁNDEZ MORALES JORGE ANTONIO MARTÍNEZ ESCOBAR ENRIQUE MARTÍNEZ GUTIÉRREZ IRMA CAROLINA PRIMAVERA 2013 CALIFICACIÓN:_____

I.- INTRODUCCIÓN Actualmente, los sistemas digitales son muy utilizados y variados para diferentes tipos de aplicaciones, tales como en la industria y en los equipos electrónicos.

Debido

a

esto,

es

sumamente

importante

conocer

el

funcionamiento y las aplicaciones de los diferentes tipos de sistemas digitales que existen hoy en día. De esta forma, nosotros, como estudiantes, podremos desarrollar la habilidad y capacidad de aplicar dichos conocimientos y trabajar con ellos sin dificultad alguna.

Básicamente, un circuito secuencial con reloj consiste en un grupo de flip-flops y compuertas combinacionales conectados para formar un camino de retroalimentación. Los flip-flops son indispensables porque, sin ellos, el circuito se reduce a un circuito puramente combinacional (suponiendo que no haya retroalimentación entre las compuertas). Un circuito con flip-flops se considera secuencial aunque no tenga compuertas combinacionales. Los circuitos que incluyen flip-flops, por lo regular se clasifican según la función que desempeñan, más que por el nombre del circuito secuencial. Dos de esos circuitos son los registros y los contadores.

Un registro es un grupo de flip-flops. Cada flip-flop puede almacenar un bit de información. Un registro de n bits consiste en un grupo de n flip-flops capaces de almacenar n bits de información binaria. Además de los flip-flops, un registro puede tener compuertas combinacionales que realizan ciertas tareas de procesamiento de datos. En su definición más amplia, un registro consiste en un grupo de flip-flops y compuertas que efectúan su transición. Los flip-flops contienen la información binaria y las compuertas determinan cómo esa información se transfiere al registro.

Un contador es básicamente un registro que pasa por una sucesión predeterminada de estados. Las compuertas del contador están conectadas de tal manera que producen la sucesión prescrita de estados binarios. Aunque los contadores son un tipo especial de registros, es común distinguirlos dándoles otro nombre.

Uso de los contadores Es importante conocer las aplicaciones de los contadores, ya que de esta manera, se puede hacer uso de los conocimientos adquiridos acerca de los contadores:  Generadores de secuencias. En muchas ocasiones se utilizan un oscilador junto con un contador para generar todas las señales de control que gobiernan un sistema digital.  Divisores de frecuencia. La capacidad de división es igual al módulo del contador.  Conversión de datos formato paralelo a serie. Para esta aplicación se utiliza el contador junto con un multiplexor. Las salidas del contador se conectan a las entradas de selección de canal del multiplexor, y en cada ciclo de reloj aparecerá en la salida del multiplexor uno de sus canales de entrada.  Implementación de sistemas secuenciales síncronos. Mediante un contador podemos generar los estados internos necesarios para implementar cualquier sistema asíncrono.

En la sección II. Marco teórico se presenta más información acerca de los contadores, especialmente de los contadores sincrónicos (Contador binario y contador binario ascendente y descendente), ya que son estos los conocimientos básicos que se requieren para la realización y comprensión de la práctica.

II.- MARCO TEÓRICO Los contadores sincrónicos difieren de los de rizo en que se aplican pulsos de reloj a las entradas de todos los flip-flops. Un mismo reloj dispara todos los flipflops simultáneamente en vez de hacerlo uno por uno sucesivamente como en los contadores de rizo. La decisión de su un flip-flop debe complementarse o no depende de los valores de las entradas de datos, como T o J y K, en el momento en que llega el borde de reloj. Si T=0 o J=K=0, el flip-flop no cambia de estado. Si T=1 o J=K=1, el flip-flop se complementa.

Contador Binario. En un contador binario sincrónico, el flip-flop de la posición menos significativa se complementa con cada pulso. Un flip-flop en cualquier otra posición se complementa cuando todos los bits de las posiciones significativas inferiores son 1. Ejemplo: Si el estado actual de un contador de cuatro bits es A 3A2A1A0 = 0011, el siguiente conteo será 0100. A0 siempre se complementa. A1 se complementa porque el estado actual de A0=1. A2 se complementa porque el estado actual de A1A0= 11. En cambio, A3 no se complementa porque el estado actual de A2A1A0 = 011, y no cumple la condición de “todos unos”. Los contadores binarios sincrónicos tienen un patrón regular y se pueden construir con flip-flops complementadores y compuertas. El patrón regular se distingue en el contador que se presenta en la Figura 2.1. Las entradas CLK de todos los flip-flops se conectan a un reloj común. El contador se habilita con la entrada de “Habilitar conteo”. Si esa entrada es 0, todas las entradas J y K son 0 y el reloj no cambia el estado del contador. La primera etapa de A 0 tiene 1 en su J y en su K si el contador está habilitado. Las otras entradas J y K tienen 1 si todas las etapas anteriores, menos significativas, producen 1 y el conteo está habilitado. La cadena de compuertas AND genera la lógica requerida para las entradas J y K de cada etapa. El contador puede extenderse a cualquier cantidad de etapas, cada una de las cuales tiene un flip-flop adicional y una compuerta AND que produce una salida de 1 si las salidas de todos los flipflops anteriores son 1.

Figura 2.1 Contador binario sincrónico de 4 bits

Contador Binario ascendente-descendente Un contador binario sincrónico de cuenta regresiva pasa por los estados binarios en el orden inverso, de 1111 hasta 0000, pasando después a 1111 para repetir el conteo. El bit de la posición menos significativa se complementa con cada pulso. Un bit en cualquier otra posición se complementa si todos los bits menos significativos son cero. Ejemplo:

 El estado que sigue al estado actual 0100 es 0011. El bit menos significativo siempre se complementa. El segundo bit hacia la izquierda se complementa porque el primero es 0. El tercero se complementa

porque los dos primeros son 0. El cuarto bit, en contraste, no cambia porque no todos los bits menos significativos son 0.

En la Figura 2.2 se puede observar el circuito de un contador binario ascendente-descendente que utiliza flip-flops T. Tiene una entrada de control para conteo ascendente y una entrada de control para conteo descendente. Cuando la entrada arriba es 1, el circuito cuenta hacia arriba, porque las entradas T reciben sus señales de las salidas normales de los flip-flops anteriores. Cuando la entrada abajo es 1 y la entrada arriba es 0, el circuito cuenta hacia abajo, porque se aplican a las entradas T las salidas complementadas de los flip-flops anteriores. Si ambas entradas, arriba y abajo, son 0, el circuito no cambia de estado y permanece en la misma cuenta. Si ambas entradas son 1, el circuito cuenta hacia arriba. Lo anterior garantiza que sólo una operación se efectúe en todo momento.

Figura 2.2 Contador binario ascendente-descendente de 4 bits

III.- OBJETIVOS 

Crear un diseño en ISE y realizar la simulación en ISE Simulator.



Aprender a utilizar los procesos en VHDL



Uso del reloj en el sistema secuencial.



Recordar los conocimientos adquiridos en cursos anteriores sobre contadores y aplicarlos en la práctica.



Aprender a determinar cuándo se ejecuta un proceso por medio de la lista de sensibilidad.



Aprender a implementar un diseño de VHDL en la tarjeta FPGA.

IV.- DESARROLLO DE LA PRÁCTICA Se desea realizar contador binario que tendrá tres entradas: un reloj, un reset y una entrada que indique si el conteo es ascendente o descendente; además tendrá una salida binaria de 4 bits en donde se muestra el conteo. Además, el pulso del reloj será dado por el usuario mediante un push-button. El diagrama del contador binario en VHDL se muestra en la Figura 4.1.

Figura 4.1 Diagrama completo del contador binario VHDL

Para implementar el contador binario es necesario llevar a cabo los siguientes pasos. 1. 2. 3. 4. 5.

Crear un proyecto en ISE. Capturar el código VHDL en ISE. Síntesis del Proyecto Simular el diseño usando ISE Simulator. Asignar Pines de salida y de entrada de la tarjeta SPARTAN 6 XC6SLX16. 6. Programar tarjeta SPARTAN 6 XC6SLX16.

1. Crear un proyecto en ISE Una vez abierto el programa ISE, creamos un nuevo proyecto en donde vamos a dar un nombre al proyecto y en la siguiente ventana vamos a dar las características de nuestra FPGA.

Figura 4.2 Especificaciones y propiedades del proyecto.

En la Figura 4.2 podemos observar los diferentes campos que se deben de configurar para la FPGA, entre estas opciones tenemos el tipo de tarjeta a ser utilizada. Después de haber especificado las características de la tarjeta, en la siguiente ventana se nos muestra todas las especificaciones ya establecidas, en la Figura 4.3 podemos observar los datos.

Figura 4.3 Especificaciones establecidas del proyecto.

2. Capturar código en el programa ISE

Una vez creado el proyecto, el siguiente paso es la captura del código. En la Figura 4.4 podemos observar como quedo la estructura de nuestro nuevo proyecto. Como se puede observar en la figura 4.4, en esta parte es donde observamos los archivos que se van generando durante el desarrollo del proyecto.

Figura 4.4 Estructura del nuevo proyecto.

A continuación se mostrará cómo se capturará el código para realizar el contador binario. 

Para empezar con la captura del código, es necesario crear un archivo VHDL, para esto seleccionamos el archivo que se nos creó en la carpeta, y damos clic izquierdo en donde se nos desplegará opciones, seleccionamos New Source (Figura 4.5).

Figura 4.5 Agregar un nuevo archivo al proyecto.



Después de haber seleccionado New Source, se nos muestra otra ventana en la cual seleccionamos VHDL module como podemos observar en la Figura 4.6.

Figura 4.6 Seleccionamos el tipo de archivo, en este caso VHDL Module.



A continuación se especifican los puertos de entrada y salida como se muestra en la Figura 4.7 que serán utilizadas en la FPGA.

Figura 4.7 Configuración de entradas y salidas.



Después de haber configurado las entradas y salidas, se muestra una ventana en la cual encontramos todas las especificaciones del archivo VHDL. Al haber terminado de crear el archivo lo seleccionamos e insertamos el código del comparador. En la Figura 4.8 muestra el código que se insertará.

Figura 4.8 Código del contador binario.

3. Síntesis del Proyecto Después de haber copiado el código al archivo VHDL, lo siguiente es realizar una síntesis del código, para ver las características, errores y recursos que tendrá el contador una vez en puesto en la tarjeta Spartar 6. Para llevar a cabo la síntesis, lo primero que debemos de hacer es seleccionar la opción Synthesize- XST, damos clic derecho y seleccionamos “View Text Report”. (Figura 4.9)

Figura 4.9 Opción para ver Reporte de Síntesis.

Para poder visualizar el reporte, tenemos que dar clic derecho en Synthetize – XST, y seleccionar la opción View Text Report como se observa en la Figura 4.10.

Figura 4.10. Cómo abrir reporte de síntesis.

En el reporte que se nos generó de haber realizado la síntesis, vamos a obtener los recursos que necesita nuestro diseño que utilizará en la tarjeta Spartan 6. Slices: 4 LUTs: 16 luts I/Os: 7  

3 de entrada. 4 de salida.

Flip-Flops: 32 4. Simular el diseño usando ISE Simulator.

Después de haber realizado la síntesis, se realiza la simulación, para poder observar si el código que se ha programado realmente realiza lo que se desea. Para poder llevar a cabo esto, se siguen los siguientes pasos: 

En la ventana de sources localizar seleccionar el dispositivo, dar clic derecho, seleccionando la opción New Source (Figura 4.11).

Figura 4.11 Seleccionar dispositivo y New Source.



Después de esto aparece una ventana con todas las opciones de fuente que pueden crearse. Se selecciona el módulo VHDL Test Bench, que sirve para realizar la simulación, y se le da el nombre de ContadorBinario_test. (Figura 4.12).

Figura 4.12 Seleccionar VHDL Test Bench para la simulación.



En la ventana siguiente se pueden observar todos los archivos que pueden asociarse al Test_Bench, y seleccionamos contador. Y se da NEXT.(Figura 4.13)

Figura 4.13 Seleccionar archivo VHDL al Test_Bench para la simulación



Se genera un archivo para realizar el diseño, y se busca la instancia uut: comparador PORT MAP y al final de la instancia borrar todo lo demás y capturar el código que dará los valores a las entradas clk, rst, dir. El código de la simulación, puede verse en la Figura 4.14.

Figura 4.14 Seleccionar archivo VHDL al Test_Bench para la simulación.

Ir a la ventana Sources, seleccionar la opción Behavioral Simulation del menú desplegable, tal como se observa en la Figura 4.15.

Figura 4.15 Ventana con el modo de simulación

Figura 4.16 Propiedades de simulación

Ir a la ventana process, y buscar la opción Simulate Behavioral Model y dar clic a Propiedades; y en la ventana de propiedades escribir 900 ns en el campo Simulation Run Time. Y dar doble click en Behavioral Simulation para abrir la ventana del simulador. (Figura 4.16 y 4.17).

Figura 4.17 Modificar: Simulation Run Time a 900 ns



En la Figura 4.18 se puede observar la simulación obtenida.

Figura 4.18 Resultado de la Simulación.

Tal como podemos observar en la Figura 4.18 el contador binario tiene 16 estados diferentes: 0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111. También podemos observar que cada vez que hay un pulso de reloj positivo, el contador cambia de estado y dependiendo de la dirección que tenga, contara ascendente o descendentemente. Al inicio podemos observar que el contador tiene dirección descendente, pero a los 400ns en el siguiente pulso positivo de reloj la dirección del contador cambia a ascendente.

5. Asignar Pines de salida y de entrada de la tarjeta SPARTAN 6 XC6SLX16. Luego de haber observado que la simulación realiza correctamente la función deseada, se prosigue a implementar el diseño en un archivo de configuración *.bit para programar el FPGA y validar dicho diseño en una FPGA real. Los pasos que se realizan para la implementación son los siguientes: 

Colocarse en modo de implementación, y en la ventana de Process seleccionar desglosar la opción User Constraints y dar clic en Floorplan IO-Presynthesis y se le da aceptar cuando el programa nos pregunte si se quiere asociar un archivo UCF al diseño, y se abre la herramienta para asignar los pines de entrada y de salida a los recursos de la tarjeta FPGA. (Figura 4.19).

Figura 4.19 Ejecutar la Pre síntesis para la asignación de pines



Una vez que se tiene la interface para asignar los pines, se dan las restricciones que se observan en la Figura 4.20 para colocar las entradas en los switches y las salidas en los LEDS de la tarjeta y se guarda el archivo.

Figura 4.20 Asignación de pines, se colocan las entradas y salidas.



Luego de esto, ir a la pantalla de Processes y dar doble click a implementación. (Figura 4.21).

Figura 4.21 Implementación del Diseño



Una vez acabada la implementación se pasa a generar el archivo *.bit, dando doble click o run en la opción Generate Programming File. (Figura 4.22).

Figura 4.22 Generación del archivo de programación *.bit

6. Programar tarjeta SPARTAN 6 XC6SLX16.

 

Luego de esto, se conecta la FPGA a la computadora. Posteriormente, se le da doble clic o run a la opción Manage Configuration Project (IMPACT). Esta herramienta sirve para programar la FPGA con el archivo *.bit generado. (Figura 4.23 y Figura 4.24)

Figura 4.23 Ejecutar el IMPACT

Figura 4.24 Programa IMPACT



Vamos a File/New Project damos siguiente y seleccionamos la opción Automatically connect to a cable y OK. Después de esto se abre la ventana Assign new configuration File y seleccionamos el archivo

comparador.bit. En la siguiente ventana click BYPASS , y no se le asigna nada y se le da click a OK. (Figura 4.25 Y Figura 4.26).

Figura 4.25 IMPACT y conexión automática al cable de la FPGA

Figura 4.26 Agregar archivo de configuración *.bit



Finalmente, para programa la FPGA se le da clic derecho en el dispositivo xc3s200 y se le da la opción Program y luego debe aparecer el mensaje Program Succeeded, lo cual indica que se ha programado adecuadamente la FPGA (Figura 4.27 y Figura 4.28).

Figura 4.27 Programar FPGA

Figura 4.28 Programación exitosa

A continuación se muestran los resultados y evidencias del contador binario de 4 bits que se implementó.

En la Figura 4.29 se puede observar que el contador inicia en el número 0 (0000), además la dirección (dir) es descendente.

Figura 4.29 Número 0 (0000)

En la Figura 4.30 se puede observar el número 15 (1111), además la dirección (dir) es descendente.

Figura 4.30 Número 15 (1111)

En la Figura 4.31 se puede observar el número 14 (1110), además la dirección (dir) es descendente.

Figura 4.31 Número 14 (1110)

En la Figura 4.32 se puede observar el número 13 (1101), además la dirección (dir) es descendente.

Figura 4.32 Número 13 (1101)

En la Figura 4.33 se puede observar el número 12 (1100), además la dirección (dir) es descendente.

Figura 4.33 Número 12 (1100)

En la Figura 4.34 se puede observar el número 11 (1011), además la dirección (dir) es descendente.

Figura 4.34 Número 11 (1011)

En la Figura 4.35 se puede observar el número 10 (0110), además la dirección (dir) es descendente.

Figura 4.35 Número 10 (0110)

En la Figura 4.36 se puede observar el número 9 (1001), además la dirección (dir) es descendente.

Figura 4.36 Número 9 (1001)

En la Figura 4.37 se puede observar el número 8 (1000), además la dirección (dir) es descendente.

Figura 4.37 Número 8 (1000)

En la Figura 4.38 se puede observar el número 7 (0111), además la dirección (dir) es descendente.

Figura 4.38 Número 7 (0111)

En la Figura 4.39 se puede observar el número 6 (0110), además la dirección (dir) es descendente.

Figura 4.39 Número 6 (0110)

En la Figura 4.40 se puede observar el número 5 (0101), además la dirección (dir) es descendente.

Figura 4.40 Número 5 (0101)

En la Figura 4.41 se puede observar el número 4 (0100), además la dirección (dir) es descendente.

Figura 4.41 Número 4 (0100)

En la Figura 4.42 se puede observar el número 3 (0011), además la dirección (dir) es descendente.

Figura 4.42 Número 3 (0011)

En la Figura 4.43 se puede observar el número 2 (0010), además la dirección (dir) es descendente.

Figura 4.43 Número 2 (0010)

En la Figura 4.44 se puede observar el número 1 (0001), además la dirección (dir) es descendente.

Figura 4.44 Número 1 (0001)

En la Figura 4.45 se puede observar el número 0 (0000), además la dirección (dir) es descendente.

Figura 4.45 Número 0 (0000)

En la Figura 4.46 se puede observar que cuando se llega al número 0 (0000) el contador vuelve al número 15 (1111).

Figura 4.46 Número 15 (1111)

En la Figura 4.47 se puede observar como cambiamos la dirección (dir) del conteo por lo que ahora será ascendente.

Figura 4.47 Cambio de dirección a ascendente

En la Figura 4.48 se puede observar el número 0 (0000), además la dirección (dir) es ascendente.

Figura 4.48 Número 0 (0000)

En la Figura 4.49 se puede observar el número 1 (0001), además la dirección (dir) es ascendente.

Figura 4.49 Número 1 (0001)

En la Figura 4.50 se puede observar el número 2 (0010), además la dirección (dir) es ascendente.

Figura 4.50 Número 2 (0010)

En la Figura 4.51 se puede observar el número 3 (0011), además la dirección (dir) es ascendente.

Figura 4.51 Número 3 (0011)

En la Figura 4.52 se puede observar el número 4 (0100), además la dirección (dir) es ascendente.

Figura 4.52 Número 4 (0100)

En la Figura 4.53 se puede observar el número 5 (0110), además la dirección (dir) es ascendente.

Figura 4.53 Número 5 (0110)

En la Figura 4.54 se puede observar el número 6 (0111), además la dirección (dir) es ascendente.

Figura 4.54 Número 6 (0111)

En la Figura 4.55 se puede observar el número 7 (0111), además la dirección (dir) es ascendente.

Figura 4.55 Número 7 (0111)

En la Figura 4.56 se puede observar el número 8 (1000), además la dirección (dir) es ascendente.

Figura 4.56 Número 8 (1000)

En la Figura 4.57 se puede observar el número 9 (1001), además la dirección (dir) es ascendente.

Figura 4.57 Número 9 (1001)

En la Figura 4.58 se puede observar el número 10 (1010), además la dirección (dir) es ascendente.

Figura 4.58 Número 10 (1010)

En la Figura 4.59 se puede observar el número 11 (1011), además la dirección (dir) es ascendente.

Figura 4.59 Número 11 (1011)

En la Figura 4.60 se puede observar el número 12 (1100), además la dirección (dir) es ascendente.

Figura 4.60 Número 12 (1100)

En la Figura 4.61 se puede observar el número 13 (1101), además la dirección (dir) es ascendente.

Figura 4.61 Número 13 (1101)

En la Figura 4.62 se puede observar el número 14 (1110), además la dirección (dir) es ascendente.

Figura 4.62 Número 14 (1110)

En la Figura 4.63 se puede observar el número 15 (1111), además la dirección (dir) es ascendente.

Figura 4.63 Número 15 (1111)

En la Figura 4.64 se puede observar que cuando el contador llega al número 15 (1111) se reinicia el conteo por lo que pasa al número 0 (0000).

Figura 4.64 Número 0 (0000)

Modificar el código VHDL

Ahora modificaremos el código original por lo que el contador ahora contará de 0 a 9 ascendente y descendentemente. En la Figura 4.65 podemos ver el código modificado del contador binario que cuanta de 0 a 9.

Figura 4.65 Código VHDL de contador binario de 0 a 9.

Para comprobar que el código en VHDL del contador binario fue modificado correctamente lo simulamos con la herramienta Behavioral Simulation del ISE de XILINX. La simulación se muestra en la Figura 4.66.

Figura 4.66 Simulación del contador binario de 0 a 9.

Como podemos ver en correctamente.

la simulación, el código fue implementado

Al inicio de la simulación podemos ver que la variable de reset (rst) se encuentra en 1 por lo que la salida del contador es 0 (0000). Cuando la variable reset (rst) cambia a 0 y se tiene un pulso positivo de reloj, el contador comienza a contar descendentemente ya que la variable de dirección (dir) tiene el valor 0. Podemos darnos cuenta que cuando el contador llega al valor de 0 (0000), regresa a 15 (1111) y sigue contando descendentemente. Cuando el valor de la variable de dirección (dir), cambia de 0 a 1 y en el siguiente pulso de reloj positivo, el contador comienza a contar ascendentemente desde donde se haya quedado la cuenta, es decir, en este caso se estaba contando descendentemente y en el número 2 (0010), se cambia la dirección a ascendentemente, por lo que la cuenta sigue con el número 3 (0011), 4 (0100), 5 (0101) y así sucesivamente.

V. Conclusiones Personales Álvarez Pérez Yolanda Andrea Con esta práctica aprendí a implementar un contador binario en VHDL con la tarjeta Spartan 6. Además, pude observar el funcionamiento de la sentencia rising_edge que se utiliza con el pulso de una señal y sirve para detectar cuando hay un pulso positivo de la señal que se le pasa a la función, en este caso, la señal de reloj que se ocupará para el contador, que será dado por el usuario con un pushbutton. También, esta practica me sirvió como recordatorio de lo visto en el curso anterior de Diseño de Sistemas Digitales, donde aprendimos

como

diseñar

un

contador

con

flip-flop’s

y

aprendimos

detalladamente el funcionamiento interno de un contador binario.

Hernández Morales Jorge Antonio Gracias a esta práctica pude recordar los conocimientos adquiridos en el curso anterior acerca del funcionamiento de los contadores, y utilicé dichos conocimientos para programar e implementar el diseño en VHDL. Considero importante seguir conociendo las herramientas que nos proporciona el ISE XILINX, ya que cada vez se puede implementar un sistema más complejo y con mayores aplicaciones para el medio en el que nos desarrollamos. Dentro de los pasos que se emplean para desarrollar un proyecto, considero que la simulación es muy importante, ya que de esta forma, se puede observar si el diseño del sistema es correcto o no. También recordé acerca de los conceptos de variables internas y estados internos en un sistema, y gracias a esto pude identificar las 4 variables internas y 16 estados internos con los que contaba nuestro diseño.

Martínez Escobar Enrique Los contadores son dispositivos importantes dentro de los sistemas digitales, permiten tener un registro de diferentes eventos dentro de este. Para su funcionamiento es necesario recibir una señal de reloj que condiciona las acciones de conteo. Se puede implementar un contador incremental o decremental en VHDL conociendo las sentencias WAIT FOR (para crear una variable que actué como la señal de reloj) y sobre todo conociendo la

estructura y las partes de la sentencia PROCESS, y su lista de sensibilidad, que contiene las variables (señales) que permite la ejecución de un proceso.

Martínez Gutiérrez Irma Carolina En la práctica, pude observar que el sistema implementado cuenta con 4 variables internas y 16 estados internos. Esto se explica debido a que nuestro sistema cuenta de 0 a 15. El contador ascendente-descendente implementado incrementa o disminuye su valor, según la dirección que le pongamos al interruptor. El pulso de reloj fue asignado por medio de un pushbutton, el cual, cada vez que es presionado aumenta o disminuye en uno su valor, de acuerdo a la dirección que tenga activado el interruptor. Cada vez que se quiere regresar a las condiciones iniciales, se presiona reset, el cual también es un pushbutton. Gracias a esta práctica recordé los conocimientos acerca de los contadores y los apliqué en la práctica. Considero que estas prácticas ayudan a conocer mejor el entorno de Xilinx ISE y proporcionan un mejor conocimiento de las herramientas, las cuales servirán en un futuro para hacer un mejor diseño e implementación.

VI. Conclusiones Generales Gracias a esta práctica, recordamos el concepto de un contador, el cual, es un dispositivo que almacena y, en la mayoría de los casos muestra en algún tipo de display, el número de veces que un evento o proceso particular ha ocurrido, y en el caso de los sistemas digitales, está relacionado con una señal de reloj. Una señal de reloj es un tipo de señal que oscila entre dos valores, un valor alto y un valor muy bajo, y es utilizado para coordinar las acciones de circuitos.

Para la realización de esta práctica, son necesarias las sentencias secuenciales, las cuales se ejecutan serialmente una después de otra. La mayoría de los lenguajes de programación, como Java y C, utilizan estas sentencias. De hecho, VHDL utiliza sentencias similares a estos lenguajes.

Por medio de esta práctica aprendimos el concepto de process, la cual, es una sentencia concurrente en el sentido de que todos los process y todas las demás sentencias concurrentes se ejecutarán sin un orden establecido. No obstante las sentencias que hay dentro del process se ejecutan de forma secuencial. Por lo tanto se puede decir que una estructura secuencial va en el interior de un process.

Los procesos pueden tener explícitamente una lista de sensibilidad, esta lista define una serie de señales que, al cambiar de valor, hacen que se ejecute el process.

En el caso del contador que se desarrolló, la lista de sensibilidad son las señales de clk y la señal de reset, que define cuando se va a reiniciar el contador.

Lo contadores digitales tienen múltiples funciones, entre las que se encuentran: 

Tener un registro de una información



Recibir información de otras fuentes



Contar el número de veces que un evento transcurre



Mostrar información en forma en un display.



Generadores de secuencias.



Divisores de frecuencia



Conversión de datos formato paralelo a serie.



Implementación de sistemas secuenciales síncronos.

Estos se pueden implementar en VHDL fácilmente teniendo conocimiento de cómo se declaran los procesos, de qué partes intervienen para que estos funcionen, y también saber manipular variables con el reloj del sistema.

Gracias a esta práctica llevamos nuestros conocimientos acerca de los contadores a la práctica. Y hemos aprendido a utilizar el ISE Xilinx y sus herramientas cada vez mejor, lo cual, nos ayudará a hacer mejores proyectos en un futuro.

VII.- Bibliografía  http://www.ele.uva.es/~hector/Tema_6.pdf  http://www.marcoregalia.com/STUFF/UDISTRITAL/Fisica%20II/Actividades/ Informes%20de%20Laboratorio/Cantador%20Binario%20Ascendente%20d e%200%20a%209.html  Morris, Mano(2003). Diseño Digital. 3ra Edición. México. Pearson Educación. Pag. 536.  Tocci, Ronald J. Widmer, Neal S. Moss, Gregory L. (2007) Sistemas Digitales Principios y Aplicaciones. 10ma Edición. México. Pearson Educación. Pag 968