About This Blog

Este es un blog dedicado al módulo de "Desarrollo y Construcción de Prototipos Electrónicos", el cual pertenece al segundo año del ciclo "Desarrollo de productos electrónicos", en el que se irá colgando cualquier tema que sea abordado en dicho ciclo.
Mostrando entradas con la etiqueta CPLD. Mostrar todas las entradas
Mostrando entradas con la etiqueta CPLD. Mostrar todas las entradas

Detector de secuencia

Posted by Diego Lavín 17:55, under | No comments

Este ejercicio le resolveremos mediante una máquina de estados tipo Moor. Consiste en expresar gráficamente la secuencia de del proceso de la máquina:

El proceso es igual que en el ejercicio anterior. Seguimos sus pasos hasta llegar al StateCAD, aquí debemos de introducir nuestras variables




y ponernos a añadir estados y transiciones

Seguimos todos los pasos del ejercicio anterior teniendo en cuenta  las restricciones, que en este caso son las siguientes:




Máquina Rotativa

Posted by Diego Lavín 20:07, under | No comments

-Se desea proyectar el gobierno de un conmutador rotativo, que permite realizar un ciclo completo cuando el tambor haya efectuado una vuelta completa.

El disco solidario del tambor lleva un saliente para actuar sobre el contacto (a).
El pulsador (b) (botón de impulsos) da comienzo al ciclo.


1) Estado inicial (reposo) a=1, b=0, M=0.
2) (b) es accionado y después desaccionado rápidamente (impulso) -> M=1.
3) Cuando el disco ha dado una vuelta, (a) es accionado por el saliente y el disco se para.



Para llevar a cabo este ejercicio, primero vamos a hacer una tabla de estados. Será resuelto mediante una máquina de Mealy.


Creamos un proyecto nuevo como ya sabemos, solo que esta vez añadiremos un 'State Diagram' y se nos abrirá una ventana nueva donde podemos empezar a diseñar nuestra máquina rotativa.
En la pestaña Options->Variable iremos añadiendo todos los puertos que necesitemos


Una vez terminado dibujamos todos nuestros estados y añadimos sus transicciones


Finalizado este paso, tenemos que editar las condiciones. No sin antes olvidarnos de añadir un RESET al State0, para que arranque en el estado correcto.




Verificación, tenemos que comprobar el funcionamiento del autómata. Para ello clickamos en 'State Bench' en la barra de tareas y se nos abre un simulador de estados y deberemos ver si pasa por todos los estados de forma correcta



Después de comprobarlo todo, generamos el código VHDL (Generate HDL, en la barra de tareas).
Ya hemos finalizado la primera parte. Ahora añadimos el fichero .vhd que acabamos de generar a nuestro proyecto de Xilinx





Y creamos el 'Schematic Symbol'. Ya únicamente nos queda añadir los componentes




y  crear las restricciones:


El último paso es programarlo igual que en los ejercicios anteriores.

Contador BCD

Posted by Diego Lavín 14:15, under | No comments


El enunciado del ejercicio es el siguiente: Implementar en el CPLD XC9572 un Contador BCD con permiso de reloj y borrado asíncrono. Su salida será decodificada a 7 segmentos sobre una DISPLAY de cátodo con de 7 segmentos.

Creamos un nuevo proyecto al igual que en los anteriores ejercicios. Colocamos un contador BCD, al que ya hemos añadido el BUFG para minimizar el skew

Tenemos que diseñar el decodificador, en este caso, en código VHDL. Seguimos los siguientes pasos:




Continuamos y se nos crea un fichero .vhd, si nos adentramos en él veremos un código como este



Tenemos las librerias creadas y la cabecera pero nos falta el programa en si, que lo podemos conseguir de las plantillas VHDL que el mismo programa nos proporciona. Para ello vamos a Edit-> Language Templates y buscamos un display de 7 segmentos, copiamos el código que nos haga falta en nuestro programa y ya estará



Teniendo en cuenta que dependiendo si el display es de ánodo común o de cátodo común habrá que cambiar los ceros por unos y viceversa (en la imagen es ánodo común) así que nosotros lo vamos a cambiar.
Ahora vamos a crear el símbolo y conectamos todo



Creamos el Test Bench como ya hemos hecho en otros ejercicios y nos vamos al ModelSim

 
Asignamos los pines como en la imagen


Y finalmente programar en la tarjeta, como ya hemos visto.

4-Bit binary counter

Posted by Diego Lavín 13:15, under | No comments


El siguiente ejercicio es un contador de 4 bit´s con permiso de reloj y borrado asíncrono

Seguimos los pasos del ejercicio anterior para crear un nuevo proyecto. Añadimos el CB4CE, un contador que Xilins da por defecto




Para minimizar el skew añadiremos un BUFG en el reloj



Vamos a crear un símbolo de un esquema, para ello añadimos un nuevo fichero fuente y creamos el siguiente esquema



Una vez hecho, creamos el símbolo





Ahora ya podemos seleccionarlo como si fuera un componente más y lo conectamos todo


En este ejercicio vamos a crear un fichero de restricciones para la localización de pines. Para ello vamos a Project->New Source->Implementation Constraints File.
Ahora se habrá creado un fichero .UCF en el cuál podremos poner el orden de pines deseado.



Solo queda crear el Test Bench y programarlo, exactamente igual que en el ejercicio anterior





Implementation of a 1-bit full adder in the XC9572 CPLD

Posted by Diego Lavín 13:40, under | No comments


We will use  ISE Webpack 10.1, that is a Xilinx´s application and a CPLD XC9572.
Other aplication that we have to use is ModelSim that is another application whose function is to simulate the exercise.

Our first exercise is: IMPLEMENT A 1 BIT ADDER using a CPLD (XC9572, in my case).


To understand the operation of our adder, we have to make a true table:


This table contains two input data (A and B) + the input Carry and a output data + the output Carry.

If we apply Karnaugh, our result is as follows:



The next step is to design  a schematic circuit. For this, we have to open  ISE Webpack 10.1 (Project Navigator) and we must select 'File'--> 'New Project'
Now, will be opened a window like this:

Here, we must put the Project name (sumador) and the Project location (C:\Xilinx\Projects\sumador). At last we need to select the type of source for the project that will be 'Schematic'.

In the next window, we have must to configure our device properties. The device and the family are XC9572 and XC9500 CPLDs respectively. Our Package is PC84 and the speed -7.
Later we must select the programming language that we prefer, I prefer VHDL. 
To simulate the program, I have to use ModelSim simualator.


In the new window, we select Schematic for the design and we put the Location and the File name. 
In the next window we click next because we don´t need to add any source.

Now will be opened a new window with the working environment. 
We have to go to 'Symbols' tab for select our components. In the window´s top there is a toolbar where we can select different options like 'Add wire' or 'Add Net name'.


We begin to select the components (2 AND gates, 2 XOR, 1 OR gate) and we add the nets.

Create the Test Bench file, for this, we need to create a new source and we select Test Bench Waveform.
In this window we should select the internal clock like in the image:



Now, we have to check the true table of the counter. We need to configure the time inputs for realize the simulation.



We have to add the Test Bench file to project and it will be opened ModelSim with the simulation.


Finally, we have to program the project in a CPLD.
For this we need a JTAG


An ATX power source






and the CPLD 'TAD-XC9572'.




At first we have to generate our programming file (.JED file)



When we had generated the .JED, we must go to Impact (Xilinx´s application). And program the CPLD.