miércoles, 9 de noviembre de 2011

Contador binario de 4 bits en CPLD


Hola a todos,  en esta entrada os voy a explicar cómo se crea un contador que consta de 4 bits, sin embargo, para hacerlo funcionar vamos a tener que crear nosotros un decodificador,  que también os diré como hacerlo.
Como siempre nuestro primer paso va a ser crear un nuevo proyecto en el Xilinx, y después de eso, pondremos el nombre, en mi caso se va a llamar “contador4bits”, pondré que quiero crear un “esquemático” y usaré estos parámetros predefinidos que os pongo a continuación.


Y aquí os dejo los parámetros predefinidos.


Una vez aceptemos esta ventana, tendremos que añadir una nueva fuente “new source”, que tendremos que declarar como “esquemático” y ponerla un nombre, yo prefiero no complicarme, por eso la llamo como el proyecto en sí, es decir  “contador4bits”.

Una vez establecido todo esto, procederemos a empezar con el proyecto, por lo que deberemos buscar el componente CB4CE.



En algunos casos he tenido la necesidad de saber de algunos componentes, a veces resultaba un suplicio porque no encontrabas sus datos y era un tiempo que perdías, en vez de estar haciendo otras cosas, por eso, xilinx ha desarrollado una aplicación que nos informa acerca del componente, en mi caso, para revisar el que acabo de introducir, basta con dar doble clic sobre el componente y darle a “symbol info”, y ahí nos saldrá información que tal vez estemos buscando en otra parte. Fijaros en la ventana. Gracias a esto encontré la tabla lógica del componente, y en cuestión de unos segundos, por eso, os aconsejo que primero busquéis aquí, que siempre suele estar lo que necesitas.


Ya está metido nuestro contador, ahora toca hacer el decodificador, para eso, tenemos que crear una nueva fuente y trabajar en esa, como os digo siempre, vamos a  Project “new source” , declaramos como “esquemático” y lo nombramos, yo lo he llamado “decodificador”.




Nos saldrá una nueva página. Será en esta en la que creemos nuestro decodificador, lo primero que vamos a hacer es crear un bus de entradas, es muy sencillo, el primer paso es crear una línea normal, y después en la parte de la izquierda, donde pone “name”, nombrarla como “Q(0:3)”, para que automáticamente se refleje como bus.
Para añadir entradas utilizamos esta opción que aparece en la barra de herramientas superior.




Y nos quedará más o menos así.



Como veis, el bus consta de 4 entradas, ahora tenemos que ir introduciendo las respectivas puertas and4 y las inversoras.


Este es más o menos el proyecto resultante. Es algo complicado de interpretar, pero con paciencia se va haciendo, es importante que os fijéis que esté bien conectado, porque sino no irá bien la simulación.
Bien, el siguiente paso es poner el nombre a las entradas del bus. No tenemos más que coger y nombrar a cada entrada, por ejemplo, una de ellas va a ser Q(3). Como es de 4 bits, tendremos que poner cuatro entradas, del 0 al 3.


Una vez nombradas las entradas, tocará hacer lo mismo con las salidas, para eso cogemos la función “add I/O marker”.



Una vez seleccionado, iremos marcando casa salida y nombrándola, son 10 salidas, yo las voy nombrando “led”, y comenzando en la 0 y acabando en la 9.



Ya tenemos acabado nuestro decodificador, una vez hecho esto tenemos que crear el símbolo que representa a este esquemático, para eso tenemos que darle a la opción “create schematic symbol” que nos saldrá al seleccionar la fuente del “decodificador”.


Una vez creado, abrimos el proyecto del contador y, en symbols, buscamos nuestro componente, como recordaremos, lo llamábamos  “decodificador”, una vez encontrado, lo introduciremos en el proyecto y lo colocaremos como os muestro en la imagen.



Como veis, creamos un bus de 4 entradas, que serán las que utilice el contador, después nombramos cada uno de los cables así como el bus y demás.
El siguiente paso será añadir un buffer, una puerta and de 2 entradas y las respectivas salidas del decodificador y el contador. Nos quedará algo parecido a esto.


Esto es lo que nos debería quedar, más o menos. Una vez hecho esto, empezaremos con el proceso de simulación. Para eso tendremos que crear una nueva fuente y esta vez, en vez de seleccionar  esquemático, seleccionaremos “test bench waveform”.
Una vez demos a la opción, nos saldrá qué nombre queremos ponerla así como ruta y demás. Cuando lo tengamos decidido, daremos a next, aparecerán las partes del proyecto, es decir, en teoría, deberían aparecernos 2, una sería la de “contador4bits” y la otra sería la del “decodificador”. Seleccionaremos la de “contador 4 bits” y le daremos a siguiente, una vez hayamos hecho eso, nos saldrá esta venta.


Procurar ser fieles a la imagen, para que no haya problemas inesperados. Una vez esté esto, daremos a continuar. Una vez le pulsemos a continuar, tendremos que configurar el comportamiento de las entradas para la simulación. Lo que nos tiene que aparecer tiene que ser algo así.


Ya casi estamos preparados para simular, solo nos falta configurarlo a 2500 ns. Os lo pongo de manera gráfica para que se entienda mejor.


1.- Marcamos esa opción.
2.-Seleccionamos “simulate behabioral model”, damos botón derecho y “properties”.
3.- Cambiamos los ns a 2500. Damos a ok y listo.

Una vez le demos a eso habremos configurado la velocidad de simulación a 2500 ns, entonces le podremos dar doble clic a “simulate behabioral model” y nos iniciará la simulación, si todo está bien, deberá salirnos algo parecido a esta imagen. 



Sí que es verdad que me dio un problema, por lo visto, tenía un problema en una de las salidas, y por lo tanto, uno de los pulsos, concretamente S4, se activaba a la par que el pulso 6.
Una vez tengamos la simulación bien hecha, será el momento de generar el archivo “.ucf” y configurarlo para entrar en el entorno “PACE” para poner los pines. Para ello tenemos que ir, en implementación, a seleccionar nuestro archivo “contador4bits” y, en la parte de los procesos, a la opción que pone “user contraints” y le damos a “create timing contraints”, entonces se nos generará el archivo. Una vez generado basta con marcarlo, irnos a “edit”, “preferences”, después daremos a “editors” y nos saldrá esta imagen.


Importante, hay que colocar el ticket done pone “floorplan editor”, una vez hecho eso, daremos a Ok, y ya podremos pasar a meternos en el entorno “pace”, para eso solo basta dar doble clic en el archivo “ucf”. Con eso nos saldrá el entorno, como os muestro en la imagen.


Entonces procedemos a poner las entradas y las salidas, el proceso es sencillo, basta con seleccionar lo que queremos en la parte de la izquierda e irlo arrastrando hacia el pin que deseemos, en este caso, si sois puntillosos, o bien vuestro diseño así lo precisa, podéis colocar los pines según mejor os convengan.
Una vez seleccionados los lugares, basta con darle a guardar y cerrar. En mi caso quedó de la siguiente manera.


Una vez hecho esto, pasaremos a generar los archivos “.fit “ y el tipo “.jed”, para eso haremos lo siguiente. Marcando la opción de “contador4bits”, iremos en la ventana de procesos a la parte que dice “implement design” y ahí le daremos a “fit”, entonces nos generará el archivo.
Obviamente, nos tiene que salir un ticket en verde cuando le demos, de otra manera no nos lo generará por alguna causa desconocida.
Y para acabar solo nos queda generar el tipo “JED” para eso tenemos que darle “generate programming file” que se encuentra justo debajo que la opción para generar el tipo “fit “ que os muestro arriba, le daremos doble clic, y ya estará generado nuestro archivo.
Y eso es todo, ahora solo nos quedaría emularlo en la realidad, espero que os haya servido de ayuda a todos, un saludo!.



DESCARGAR PROYECTO AQUÍ







































No hay comentarios:

Publicar un comentario