jueves, 24 de enero de 2013

Detector de números primos del 0 al 15 con VHDL en tarjeta FPGA Spartan 3E

EJERCICIO:  Utilizando los 4 interruptores disponibles en la tarjeta Digilent Spartan 3E se introducen en 4 bits los números del 0 al 15. Un Led debe encender al detectar que el número sea primo (divisible por si mismo y por la unidad únicamente), es decir el Led sólo debe encender si detecta: 2,3,5,7,11 y 13.  

Solución:

Creamos un nuevo proyecto en ISE 10.1 que llamamos Primos0al15 que se guarda en una carpeta con el mismo nombre creada por defecto por el programa e indicamos que vamos a trabajar con lenguaje VHDL
como nivel superior de jerarquía en el diseño ( Top-level souce type). Observe que previamente nosotros hemos creado en la raiz la carpeta: Ejercicios Xilinx.


Indicamos después las propiedades del dispositivo:


Después de haber finalizado la creación del nuevo proyecto, creamos como nueva fuente el módulo VHDL para ingresar el archivo de VHDL que tambien llamamos: Primos0al15


Ingresamos las entradas y salidas del circuito lógico:


Se puede elaborar Mapa de karnaugh para encontrar la función Booleana en Suma de Productos (mintérminos). Podemos ayudarnos del LOGICA ID:


Vamos a trabajar con la segunda función.

En la plantilla que aparece escribimos la función al comienzo de la arquitectura  tal como se muestra a continuación:


Después de haber salvado este archivo es importante chequear su sintaxis para determinar algún posible error al respecto:


Luego procedemos a efectuar la simulación, para lo cual debemos crear inicialmente un banco de pruebas de formas de onda. El archivo lo denominamos: Primos0al15_tb tal como se muestra en el siguiente gráfico:


Al indicar que el circuito es Combinatorio (sin reloj) se puede fijar un tiempo de análisis de 2000 ns:


luego dibujamos las ondas correspondientes a las entradas, salvamos este archivo y cerramos la ventana:


Procedemos a ejecutar la simulación:


Las ondas deben confirmar que el circuito funciona perfectamente:


Procedemos a la asignación de pines y a efectuar la síntesis del circuito y a su implementación:


En este proceso el programa toma cierto tiempo y va colocando un visto bueno en cada etapa realizada. Se da YES a la ventana que aparece con el fin de crear el archivo UCF de asignación de pines:


Vamos a asignar las entradas en los pines correspondientes a los interruptores:

La salida se va a observar en el Led0 correspondiente al pin F12 de la tarjeta Digilent Spartan 3E:


Procedemos a señalar la localización de los pines:


Hay que cerrar el gráfico inicial que aparece a la derecha para que aparezca el Top Wiew (vista desde arriba) mostrado, en donde se señala con un óvalo de color azul la entrada y salida localizada. El archivo UCF de asignación de pines debe salvarse.

Si aparece en amarillo alguna interrogación hay que dar doble click para corregir la incongruencia en la implementación del diseño:


Al corregirse las incongruencias deben aparecer vistos buenos  en donde aparecían los interrogantes:


Si observamos en el resúmen del diseño ( View Design Summary)  en Pin Report dando click en la columna de Signal Name deben aparecer los pines correctamente asignados.


Como los pines aparecen reportados con error hay que volver a localizarlos dando doble click en Floorplan Area/ IO/ Logic Post -synthesis. Es probable que el archivo UCF, por ejemplo, no se hubiese guardado.

Vuelve entonces a aparecer los interrogantes anaranjados en Implement Design, damos doble click para corregir incongruencias, y al observar el reporte de pines, vemos que ahora si aparecen correctamente localizados en los correspondientes a los interruptores y al Led.


Alimentamos la tarjeta y conectamos el cable USB al computador para ser reconocida, y procedemos a efectuar la programación, dando doble click en  Configure Target Device:


Hay que dar OK en la advertencia que se presenta:


Luego aparece una ventana donde se indica que se ha detectado cable para efectuar la programación automáticamente Vía JTAG ( serialmente a través de 4 líneas por USB)


 Damos finish y asociamos el archivo Primos0al15.bit a la programación de la FPGA



Al abrir el archivo (open ) pasa de la FPGA al CPLD y luego a la memoria PROM. Hay que darles bypass
para ser omitidos.

Luego se dá OK a la ventana de las propiedades de programación del dispositivo, y con botón derecho se dá click en  program.   Debe aparecer una ventana indicando que la programación de la FPGA ha sido exitosa.


Finalmente se verifica al accionar los interruptores y observar el encendido del Led que todo funciona correctamente.


En la fotografía se observa, por ejemplo,  que el LED enciende al detectar en los interruptores el número 11 ( 1011 ).

lunes, 31 de diciembre de 2012

Compuertas lógicas con FPGA de Xilinx en Spartan 3E

Vamos a utilizar el software Xilinx ISE 10.1 y la tarjeta de Diligent Spartan 3E disponible en el laboratorio de simulación de la facultad de Ingeniería Electrónica y Biomédica de la Universidad Antonio Nariño,sede sur, en Bogotá. La tarjeta dispone de 4 interruptores Dip-Switch  y 8 leds en montaje superficial, que vamos a utilizar para esta práctica.

   Abrimos el Navegador de proyectos del Xilinx Ise 10.1:


Damos OK en la ventana Did you Know y cierre la ventana What's New in Xilinx Ise Design suite 10.1.
Esas ventanas ofrecen información interesante sobre el manejo del software, por lo cual antes de cerrarlas es conveniente leer dicha información.

Seleccione: file --> New proyect.  Indique la carpeta en la que va a trabajar y elija como Esquemático
( Schematic) el tipo de diseño que se va a realizar.


Al dar Siguiente en la nueva ventana debe colocar los nombre de la familia, dispositivo,empaque, velocidad, herramienta de síntesis, Simulador, lenguaje de preferencia para efectuar la simulación, etc, tal como se muestra en la siguiente gráfica:

De siguiente a las nuevas ventanas y finalmente las propiedades del proyecto aparecen resumidas en la última de ellas.

Luego de doble Click en Create New Source  y elija Schematic, y  vuelva a asignar como compuertas el nombre del archivo esquemático. No importa que el nombre del proyecto y del archivo esquemático sea el mismo.


Al dar siguiente y luego finalizar en los cuadros de diálogo restantes se abrirá el editor de esquemáticos para dibujar las compuertas lógicas.

En la parte izquierda dar click en la etiqueta Symbols y seleccionar en categories: logic.

En una forma muy similar a como se trabaja el ISPLEVER de Lattice Semiconductor se dibuja el esquemático con sus entradas y salidas:


Se salva el esquemático.

Sin necesidad de sintetizar el circuito esquemático procedemos a efectuar la respectiva simulación del diseño utilizando la herramienta ISE simulator. Creamos un banco de pruebas (testbench waveform) donde se asignan los valores que se asignan a las entradas X y Y, y en función de las cuales se obtendrán las 8 salidas.

En Project  >  New Source abrimos una nueva caja de diálogos para crear un nuevo archivo que llamamos comp_tb para el banco de pruebas Test Bench Waveform:


Damos NEXT dos veces y luego al finalizar este proceso, se abre una nueva caja de diálogos tal como se muestra a continuación:


En Clock Information seleccionamos  como "Combinatorial" nuestro diseño.Lo demás campos los dejamos igual.

Luego se cambia por una nueva ventana así:


Pulsamos Finish para abrir el editor de formas de onda, para dibujar diferentes combinaciones de valores en las entradas X y Y


En la parte superior izquierda de la pantalla en la ventana Sources seleccione Behavioral Simulation.

Luego, en la parte inferior izquierda de la pantalla, en Process se despliega el menú Xlinx Ise Simulator y de doble Click en Behavioral Model.



Al ejecutarse la simulación debemos comprobar que el resultado es el esperado.


Luego de haber efectuado la simulación se hace la asignación de pines en la tarjeta Spartan 3E ; para ello en Source seleccionamos implementación y en Process: User Constraints.

Al dar (+) en User Constraints damos doble click en asignación de pines post-síntesis:


Después de haberse realizado la síntesis del esquemático se abre una ventana que permite la asignación de pines:


A medida que se va localizando cada entrada y salida como pines en la tarjeta se va señalizando con azul en la gráfica de la derecha el pin asignado.

Las entradas las ubicamos en los pines L14 y L13 de los interruptores de la tarjeta:

Para los pines en las salidas se tiene en cuenta los 8 leds  de que dispone la tarjeta que se encuentran ubicados en la parte duperior de los interruptores:


Al asignar los pines, se crea un archivo denominado: compuertas.ucf

Al observar el resumen del diseño ( View Design Summary)  en pin report dando click en la columna Signal Name se puede verificar que los pines se asignaron en forma correcta y procedemos a dar doble Click en Configure target Device para generar el archivo de programación Generate Programming file.


Aparece una advertencia y damos YES en la ventana respectiva. Debe estar alimentada la tarjeta y conectado el cable USB al computador para que se efectúe la detección automática de dicho cable y se pueda efectuar la respectiva programación de la FPGA dando Click en RUN (botón derecho) sobre la FPGA y omitiendo los otros 2 dispositivos, el CPLD y la memoria PROM.

Al efectuarse la programación exitosamente aparece un mensaje alusivo en color Azul así:


Al accionar los interruptores se puede observar en los leds el correcto manejo de las compuertas.


sábado, 29 de diciembre de 2012

Descarga e instalación del software Xilinx Ise 10.1 para trabajar con FPGA de Spartan 3E

Para  descargar el software  Xilinx Ise 10,1 debe ir a  http://www.xilinx.com/support/download/index.htm

Hay versiones mas recientes que la 10.1 pero son muy pesadas y se demora demasiado su descarga.

Le recomiendo primero que todo que solicite el número de registro de identificación ID en una licencia gratuita, dando doble Click en Obtain a v10.1 Registraion ID.



 El ID es un número de 25 caracteres (números y letras) que Xilinx le envía a su correo electrónico.

Para poder descargar el software y recibir su número de registro ID  debe inscribirse (Create Account) llenando  un formulario completo con todos sus datos incluyendo su correo electrónico, y debe registrar un nombre de usuario y su respectiva contraseña. Cuando esté debidamente inscrito autorizan la descarga del paquete y le envían a su correo el ID de  la licencia gratuita del software, el cual cuando esté instalando el programa se la van a exigir.

De doble click en ISE Foundation WebPACK - 10.1 Full Product Installation. y descargue el programa de 2.25 GB en  una carpeta apropiada para ello.  Sea paciente, porque esto toma cierto tiempo.
Una vez descargado el software de 2.25 GB debe descomprimirlo.

Al dar doble clik en el archivo webpack_SFD  comienza  a descomprimir el software que viene enpaquetado.
Luego damos doble click en el archivo de instalación setup.exe
Al terminar de ejecutar el archivo setup.exe aparece una ventana de bienvenida a la instalación del software:
Damos Click en siguiente. Luego se le solicita el registro ID el cual Ud debe haber recibido por correo electrónico.

Copie y pegue los 25 caracteres correspondientes al ID y  de NEXT.
A las ventanas que aparecen a continuación  de NEXT, y al final comienza la instalación (Begin installation) lo cual puede tomar cierto tiempo.
Al terminar la instalación del software aparece en INICIO su Acceso directo:

Al abrir el Navegador de Proyectos (Project Navigator) estamos listos para comenzar a trabajar con la FPGA disponible en la  tarjeta SPARTAN 3E

La tarjeta Spartan 3 E es producida por la empresa DIGILENT  y dispone de la FPGA XC3S500E de Xilinx: