Académique Documents
Professionnel Documents
Culture Documents
IMPLEMENTACION EN SPARTAN 6 PROFESOR: BUSTILLO DAZ MARIO ALUMNOS: LVAREZ PREZ YOLANDA ANDREA HERNNDEZ MORALES JORGE ANTONIO MARTNEZ ESCOBAR ENRIQUE MARTNEZ GUTIRREZ IRMA CAROLINA PRIMAVERA 2013 CALIFICACIN:_____
I.- INTRODUCCIN
Actualmente, los sistemas digitales son muy utilizados y variados para diferentes tipos de aplicaciones, tales como en la industria y en los equipos electrnicos. Debido a esto, es sumamente importante conocer el
funcionamiento y las aplicaciones de los diferentes tipos de sistemas digitales que existen hoy en da. De esta forma, nosotros, como estudiantes, podremos desarrollar la habilidad y capacidad de aplicar dichos conocimientos y trabajar con ellos sin dificultad alguna.
Bsicamente, un circuito secuencial con reloj consiste en un grupo de flip-flops y compuertas combinacionales conectados para formar un camino de retroalimentacin. Los flip-flops son indispensables porque, sin ellos, el circuito se reduce a un circuito puramente combinacional (suponiendo que no haya retroalimentacin 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 segn la funcin que desempean, ms 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 informacin. Un registro de n bits consiste en un grupo de n flip-flops capaces de almacenar n bits de informacin binaria. Adems de los flip-flops, un registro puede tener compuertas combinacionales que realizan ciertas tareas de procesamiento de datos. En su definicin ms amplia, un registro consiste en un grupo de flip-flops y compuertas que efectan su transicin. Los flip-flops contienen la informacin binaria y las compuertas determinan cmo esa informacin se transfiere al registro.
Un contador es bsicamente un registro que pasa por una sucesin predeterminada de estados. Las compuertas del contador estn conectadas de tal manera que producen la sucesin prescrita de estados binarios. Aunque los contadores son un tipo especial de registros, es comn distinguirlos dndoles 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 seales de control que gobiernan un sistema digital. Divisores de frecuencia. La capacidad de divisin es igual al mdulo del contador. Conversin de datos formato paralelo a serie. Para esta aplicacin se utiliza el contador junto con un multiplexor. Las salidas del contador se conectan a las entradas de seleccin de canal del multiplexor, y en cada ciclo de reloj aparecer en la salida del multiplexor uno de sus canales de entrada. Implementacin de sistemas secuenciales sncronos. Mediante un contador podemos generar los estados internos necesarios para implementar cualquier sistema asncrono.
En la seccin II. Marco terico se presenta ms informacin acerca de los contadores, especialmente de los contadores sincrnicos (Contador binario y contador binario ascendente y descendente), ya que son estos los conocimientos bsicos que se requieren para la realizacin y comprensin de la prctica.
Contador Binario. En un contador binario sincrnico, el flip-flop de la posicin menos significativa se complementa con cada pulso. Un flip-flop en cualquier otra posicin 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 condicin de todos unos. Los contadores binarios sincrnicos tienen un patrn regular y se pueden construir con flip-flops complementadores y compuertas. El patrn 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 comn. 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 lgica 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.
Contador Binario ascendente-descendente Un contador binario sincrnico de cuenta regresiva pasa por los estados binarios en el orden inverso, de 1111 hasta 0000, pasando despus a 1111 para repetir el conteo. El bit de la posicin menos significativa se complementa con cada pulso. Un bit en cualquier otra posicin 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 seales 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 slo una operacin se efecte en todo momento.
III.- OBJETIVOS
Crear un diseo en ISE y realizar la simulacin 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 prctica. Aprender a determinar cundo se ejecuta un proceso por medio de la lista de sensibilidad. Aprender a implementar un diseo de VHDL en la tarjeta FPGA.
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 cdigo VHDL en ISE. Sntesis del Proyecto Simular el diseo 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 caractersticas de nuestra FPGA.
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. Despus de haber especificado las caractersticas de la tarjeta, en la siguiente ventana se nos muestra todas las especificaciones ya establecidas, en la Figura 4.3 podemos observar los datos.
Una vez creado el proyecto, el siguiente paso es la captura del cdigo. 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.
A continuacin se mostrar cmo se capturar el cdigo para realizar el contador binario. Para empezar con la captura del cdigo, 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).
Despus de haber seleccionado New Source, se nos muestra otra ventana en la cual seleccionamos VHDL module como podemos observar en la Figura 4.6.
A continuacin se especifican los puertos de entrada y salida como se muestra en la Figura 4.7 que sern utilizadas en la FPGA.
Despus 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 cdigo del comparador. En la Figura 4.8 muestra el cdigo que se insertar.
3. Sntesis del Proyecto Despus de haber copiado el cdigo al archivo VHDL, lo siguiente es realizar una sntesis del cdigo, para ver las caractersticas, errores y recursos que tendr el contador una vez en puesto en la tarjeta Spartar 6. Para llevar a cabo la sntesis, lo primero que debemos de hacer es seleccionar la opcin Synthesize- XST, damos clic derecho y seleccionamos View Text Report. (Figura 4.9)
Para poder visualizar el reporte, tenemos que dar clic derecho en Synthetize XST, y seleccionar la opcin View Text Report como se observa en la Figura 4.10.
En el reporte que se nos gener de haber realizado la sntesis, vamos a obtener los recursos que necesita nuestro diseo que utilizar en la tarjeta Spartan 6. Slices: 4 LUTs: 16 luts I/Os: 7
3 de entrada. 4 de salida.
Despus de haber realizado la sntesis, se realiza la simulacin, para poder observar si el cdigo 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 opcin New Source (Figura 4.11).
Despus de esto aparece una ventana con todas las opciones de fuente que pueden crearse. Se selecciona el mdulo VHDL Test Bench, que sirve para realizar la simulacin, y se le da el nombre de ContadorBinario_test. (Figura 4.12).
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)
Se genera un archivo para realizar el diseo, y se busca la instancia uut: comparador PORT MAP y al final de la instancia borrar todo lo dems y capturar el cdigo que dar los valores a las entradas clk, rst, dir. El cdigo de la simulacin, puede verse en la Figura 4.14.
Ir a la ventana Sources, seleccionar la opcin Behavioral Simulation del men desplegable, tal como se observa en la Figura 4.15.
Ir a la ventana process, y buscar la opcin 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).
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. Tambin podemos observar que cada vez que hay un pulso de reloj positivo, el contador cambia de estado y dependiendo de la direccin que tenga, contara ascendente o descendentemente. Al inicio podemos observar que el contador tiene direccin descendente, pero a los 400ns en el siguiente pulso positivo de reloj la direccin 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 simulacin realiza correctamente la funcin deseada, se prosigue a implementar el diseo en un archivo de configuracin *.bit para programar el FPGA y validar dicho diseo en una FPGA real. Los pasos que se realizan para la implementacin son los siguientes: Colocarse en modo de implementacin, y en la ventana de Process seleccionar desglosar la opcin 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 diseo, y se abre la herramienta para asignar los pines de entrada y de salida a los recursos de la tarjeta FPGA. (Figura 4.19).
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.
Luego de esto, ir a la pantalla de Processes y dar doble click a implementacin. (Figura 4.21).
Una vez acabada la implementacin se pasa a generar el archivo *.bit, dando doble click o run en la opcin Generate Programming File. (Figura 4.22).
Luego de esto, se conecta la FPGA a la computadora. Posteriormente, se le da doble clic o run a la opcin Manage Configuration Project (IMPACT). Esta herramienta sirve para programar la FPGA con el archivo *.bit generado. (Figura 4.23 y Figura 4.24)
Vamos a File/New Project damos siguiente y seleccionamos la opcin Automatically connect to a cable y OK. Despus 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).
Finalmente, para programa la FPGA se le da clic derecho en el dispositivo xc3s200 y se le da la opcin 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).
A continuacin 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 nmero 0 (0000), adems la direccin (dir) es descendente.
En la Figura 4.30 se puede observar el nmero 15 (1111), adems la direccin (dir) es descendente.
En la Figura 4.31 se puede observar el nmero 14 (1110), adems la direccin (dir) es descendente.
En la Figura 4.32 se puede observar el nmero 13 (1101), adems la direccin (dir) es descendente.
En la Figura 4.33 se puede observar el nmero 12 (1100), adems la direccin (dir) es descendente.
En la Figura 4.34 se puede observar el nmero 11 (1011), adems la direccin (dir) es descendente.
En la Figura 4.35 se puede observar el nmero 10 (0110), adems la direccin (dir) es descendente.
En la Figura 4.36 se puede observar el nmero 9 (1001), adems la direccin (dir) es descendente.
En la Figura 4.37 se puede observar el nmero 8 (1000), adems la direccin (dir) es descendente.
En la Figura 4.38 se puede observar el nmero 7 (0111), adems la direccin (dir) es descendente.
En la Figura 4.39 se puede observar el nmero 6 (0110), adems la direccin (dir) es descendente.
En la Figura 4.40 se puede observar el nmero 5 (0101), adems la direccin (dir) es descendente.
En la Figura 4.41 se puede observar el nmero 4 (0100), adems la direccin (dir) es descendente.
En la Figura 4.42 se puede observar el nmero 3 (0011), adems la direccin (dir) es descendente.
En la Figura 4.43 se puede observar el nmero 2 (0010), adems la direccin (dir) es descendente.
En la Figura 4.44 se puede observar el nmero 1 (0001), adems la direccin (dir) es descendente.
En la Figura 4.45 se puede observar el nmero 0 (0000), adems la direccin (dir) es descendente.
En la Figura 4.46 se puede observar que cuando se llega al nmero 0 (0000) el contador vuelve al nmero 15 (1111).
En la Figura 4.47 se puede observar como cambiamos la direccin (dir) del conteo por lo que ahora ser ascendente.
En la Figura 4.48 se puede observar el nmero 0 (0000), adems la direccin (dir) es ascendente.
En la Figura 4.49 se puede observar el nmero 1 (0001), adems la direccin (dir) es ascendente.
En la Figura 4.50 se puede observar el nmero 2 (0010), adems la direccin (dir) es ascendente.
En la Figura 4.51 se puede observar el nmero 3 (0011), adems la direccin (dir) es ascendente.
En la Figura 4.52 se puede observar el nmero 4 (0100), adems la direccin (dir) es ascendente.
En la Figura 4.53 se puede observar el nmero 5 (0110), adems la direccin (dir) es ascendente.
En la Figura 4.54 se puede observar el nmero 6 (0111), adems la direccin (dir) es ascendente.
En la Figura 4.55 se puede observar el nmero 7 (0111), adems la direccin (dir) es ascendente.
En la Figura 4.56 se puede observar el nmero 8 (1000), adems la direccin (dir) es ascendente.
En la Figura 4.57 se puede observar el nmero 9 (1001), adems la direccin (dir) es ascendente.
En la Figura 4.58 se puede observar el nmero 10 (1010), adems la direccin (dir) es ascendente.
En la Figura 4.59 se puede observar el nmero 11 (1011), adems la direccin (dir) es ascendente.
En la Figura 4.60 se puede observar el nmero 12 (1100), adems la direccin (dir) es ascendente.
En la Figura 4.61 se puede observar el nmero 13 (1101), adems la direccin (dir) es ascendente.
En la Figura 4.62 se puede observar el nmero 14 (1110), adems la direccin (dir) es ascendente.
En la Figura 4.63 se puede observar el nmero 15 (1111), adems la direccin (dir) es ascendente.
En la Figura 4.64 se puede observar que cuando el contador llega al nmero 15 (1111) se reinicia el conteo por lo que pasa al nmero 0 (0000).
Ahora modificaremos el cdigo original por lo que el contador ahora contar de 0 a 9 ascendente y descendentemente. En la Figura 4.65 podemos ver el cdigo modificado del contador binario que cuanta de 0 a 9.
Para comprobar que el cdigo en VHDL del contador binario fue modificado correctamente lo simulamos con la herramienta Behavioral Simulation del ISE de XILINX. La simulacin se muestra en la Figura 4.66.
Al inicio de la simulacin 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 direccin (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 direccin (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 nmero 2 (0010), se cambia la direccin a ascendentemente, por lo que la cuenta sigue con el nmero 3 (0011), 4 (0100), 5 (0101) y as sucesivamente.
V. Conclusiones Personales
lvarez Prez Yolanda Andrea Con esta prctica aprend a implementar un contador binario en VHDL con la tarjeta Spartan 6. Adems, pude observar el funcionamiento de la sentencia rising_edge que se utiliza con el pulso de una seal y sirve para detectar cuando hay un pulso positivo de la seal que se le pasa a la funcin, en este caso, la seal de reloj que se ocupar para el contador, que ser dado por el usuario con un pushbutton. Tambin, esta practica me sirvi como recordatorio de lo visto en el curso anterior de Diseo de Sistemas Digitales, donde aprendimos como disear un contador con flip-flops y aprendimos
Hernndez Morales Jorge Antonio Gracias a esta prctica pude recordar los conocimientos adquiridos en el curso anterior acerca del funcionamiento de los contadores, y utilic dichos conocimientos para programar e implementar el diseo en VHDL. Considero importante seguir conociendo las herramientas que nos proporciona el ISE XILINX, ya que cada vez se puede implementar un sistema ms 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 simulacin es muy importante, ya que de esta forma, se puede observar si el diseo del sistema es correcto o no. Tambin 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 diseo.
Martnez 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 seal 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 seal de reloj) y sobre todo conociendo la
estructura y las partes de la sentencia PROCESS, y su lista de sensibilidad, que contiene las variables (seales) que permite la ejecucin de un proceso.
Martnez Gutirrez Irma Carolina En la prctica, 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, segn la direccin 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 direccin que tenga activado el interruptor. Cada vez que se quiere regresar a las condiciones iniciales, se presiona reset, el cual tambin es un pushbutton. Gracias a esta prctica record los conocimientos acerca de los contadores y los apliqu en la prctica. Considero que estas prcticas ayudan a conocer mejor el entorno de Xilinx ISE y proporcionan un mejor conocimiento de las herramientas, las cuales servirn en un futuro para hacer un mejor diseo e implementacin.
Para la realizacin de esta prctica, son necesarias las sentencias secuenciales, las cuales se ejecutan serialmente una despus de otra. La mayora de los lenguajes de programacin, como Java y C, utilizan estas sentencias. De hecho, VHDL utiliza sentencias similares a estos lenguajes.
Por medio de esta prctica aprendimos el concepto de process, la cual, es una sentencia concurrente en el sentido de que todos los process y todas las dems sentencias concurrentes se ejecutarn 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 explcitamente una lista de sensibilidad, esta lista define una serie de seales 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 seales de clk y la seal de reset, que define cuando se va a reiniciar el contador.
Lo contadores digitales tienen mltiples funciones, entre las que se encuentran: Tener un registro de una informacin Recibir informacin de otras fuentes Contar el nmero de veces que un evento transcurre Mostrar informacin en forma en un display. Generadores de secuencias. Divisores de frecuencia Conversin de datos formato paralelo a serie. Implementacin de sistemas secuenciales sncronos.
Estos se pueden implementar en VHDL fcilmente teniendo conocimiento de cmo se declaran los procesos, de qu partes intervienen para que estos funcionen, y tambin saber manipular variables con el reloj del sistema.
Gracias a esta prctica llevamos nuestros conocimientos acerca de los contadores a la prctica. 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.- Bibliografa
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). Diseo Digital. 3ra Edicin. Mxico. Pearson Educacin. Pag. 536. Tocci, Ronald J. Widmer, Neal S. Moss, Gregory L. (2007) Sistemas Digitales Principios y Aplicaciones. 10ma Edicin. Mxico. Pearson Educacin. Pag 968