Como Programar y cargar un programa en una Nexys 2 (FPGA)

Pasos de como usar: Aldec Xilins AdeptDescripción completa

Views 193 Downloads 5 File size 6MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Dispositivos Lógicos Programables.

UNIVERSIDAD TECNOLOGICA DE SALAMANCA CARRERA: Ingeniería en Mecatrónica MATERIA: Dispositivos Digitales Programables GRUPO: IMET 10 “B” PROFESORA: Ing. Margarita del Crystal Martínez Cú

INTEGRANTES: López Piña Néstor. Manríquez Bustamante Mario Josué. Ramírez Aguado Omar.

Salamanca, Gto., Octubre 30 de 2015

Manual de programación para Nexys 2.

Dispositivos Lógicos Programables. 1 Introducción En este documento se presentan de manera detallada los pasos a seguir para implementar un sistema digital en la tarjeta de desarrollo Nexys 2 de Digilent, desde el planteamiento del problema hasta su puesta en marcha y verificación en la tarjeta, la cual contiene un FPGA Spartan- 3E XC3S500E de Xilinx. El ejemplo que se desarrolla es bastante simple, porque el objetivo del tutorial no es resolver un problema complejo, sino ilustrar el proceso de desarrollo. Para el desarrollo del tutorial se requiere de las siguientes herramientas de Software: Active-HDL versión 8.1: Herramienta desarrollada por Aldec, es empleada para la captura y simulación de las descripciones en VHDL. ISE 14.7i de Xilinx: Es un ambiente integrado de desarrollo desde el que se invocan diferentes herramientas, conforme se van requiriendo. Se utiliza para la síntesis, implementación y creación del archivo de descarga. También puede utilizarse para programar al FPGA si se emplea una interfaz conocida como JTAG. Adept de Digilent: Es una utilería que permite programar a los FPGAs en algunas tarjetas desarrolladas por Digilent, a través del puerto USB. Para el Active-HDL y el ISE actualmente existen versiones más recientes, se ocuparán las que se han citado porque emplean menos recursos en su instalación y son suficientes para las aplicaciones a desarrollar. 2. Planteamiento del problema Se desea diseñar e implementar un exhibidor de 7 segmentos esto se muestra en la figura 1.

Figura 1. implementar.

3. Diseño Para el simulación se herramienta versión 6.2, por Aldec, acceso muestra en la figura 2.

Manual de programación para Nexys 2.

Circuito a

con VHDL diseño y utilizará la Active-HDL desarrollada cuyo Icono de directo se

Dispositivos Lógicos Programables.

Figura 2. Programa active HDL 8.1

Este programa organiza los diseños en espacios de trabajo (workspace) si es la primera vez que se ejecuta, deberá crearse un nuevo espacio de trabajo, en caso contrario podrá usarse un espacio de trabajo existente. En la figura 3 se observa cómo, aunque existan algunos espacios de trabajo, siempre es posible iniciar con uno nuevo.

Figura 3. Iniciando con el programa Active-HDL

Un espacio de trabajo puede contener diversos diseños independientes. Si es la primera vez que trabaja con esta herramienta, es conveniente iniciar con un nuevo espacio de trabajo propio. Al cual deberá asignársele un nombre, en este caso se le puso “tutorial” figura 4.

Manual de programación para Nexys 2.

Dispositivos Lógicos Programables.

Figura 4. Iniciando con un nuevo espacio de trabajo

Si se abre un espacio de trabajo existente, automáticamente se abre el último diseño elaborado. Para los espacios de trabajo nuevos, se presenta el asistente para iniciar con nuevos diseños, el asistente inicia con la ventana mostrada en la figura 5.

Figura 5. Creando un diseño en el espacio de trabajo.

La primera opción se usa cuando ya se cuenta con módulos que se agregarán al diseño. La segunda es para importar un diseño completo. La última opción es necesaria para nuevos diseños, ésta es la opción que debe seleccionarse y después continuar con el paso siguiente.

Manual de programación para Nexys 2.

Dispositivos Lógicos Programables. Posteriormente se deben definir algunas características del diseño relacionadas con las herramientas que se cuenten para síntesis e implementación, y al tipo de FPGA sobre el cual se realizará la descarga. Pero como esta versión de Active-HDL es muy previa a las nuevas herramientas de Xilinx, no es posible relacionarlas, por ello, el Active-HDL sólo será utilizado para describir y simular al circuito, no se seleccionan herramientas como se muestra en la figura 6.

Figura 6. Diseño sin herramientas de síntesis.

A continuación se tiene disponible al ambiente de trabajo completo de la herramienta, el cual tiene un aspecto como el que se muestra en la figura 7.

3 1

2 Figura 7. Entorno de trabajo en la herramienta Active-HDL 6.2.

Manual de programación para Nexys 2.

Dispositivos Lógicos Programables.

En (1) se tiene un navegador en el que se puede seleccionar una de las 3 opciones siguientes (con sus cejas inferiores):  Archivos (Files) – Se muestran los archivos del diseño, organizados bajo un esquema: Espacio de Trabajo (Workspace)-> Diseños -> Archivo. Un espacio de trabajo puede contener varios diseños y un diseño a la vez puede contener varios archivos (módulos descritos en VHDL). 

Estructura (Structure) – Tiene sentido una vez que los módulos han sido compilados, muestra la organización del diseño, así como las señales internas, externas y variables de cada uno de sus módulos, esta opción es útil para simulación.  Recursos (Recursos) – Muestra la organización en directorios de todos los elementos que se agreguen al diseño activo. En (2) se tiene una consola en la que aparecerán mensajes de acuerdo con las actividades realizadas por el usuario. Es solo con carácter informativo, no es posible introducir información a través de esta consola. El espacio en (3) es el área de trabajo, aquí se va a mostrar el contenido de cada uno de los módulos que integren a un diseño. Archivos con código VHDL, ventanas de simulación, diagramas de bloques, etc. Basta dar doble clic dentro del navegador para observar el contenido de un archivo y poder modificarlo. Para agregar un nuevo archivo al diseño activo, en el navegador se debe dar doble clic en la opción Add New File (), se abre la ventana de la figura 8, para permitir insertar archivos vacíos, archivos existentes o usar uno de los asistentes (Wizards) para crear uno nuevo.

Figura 8. Ventana para insertar un nuevo archivo.

Lo más simple es emplear uno de los asistentes, específicamente se debe seleccionar al que apoya para crear un nuevo archivo empleando código VHDL, como se muestra en la

Manual de programación para Nexys 2.

Dispositivos Lógicos Programables. figura 9. Los otros asistentes son para crear diagramas a Bloques (para módulos con mayor jerarquía), diagramas de estado o archivos en Verilog.

Figura 9. Agregando un nuevo archivo VHDL con ayuda del asistente. Después de aceptar, se va a iniciar con el nuevo módulo, se deja activa la opción de que el código generado se integre al proyecto y se avanza figura 10.

Figura 10. Creación de un nuevo archivo VHDL con ayuda del asistente.

Manual de programación para Nexys 2.

Dispositivos Lógicos Programables. A continuación se debe escribir el nombre del archivo a crear y de manera opcional el nombre de la entidad y de la arquitectura, si estos se omiten, todos los campos tomarán el mismo nombre, que se decidió fuera “comp4b” figura 11.

Figura 11. Personalizando al nuevo archivo VHDL. Luego se deben insertar una a una las señales que formarán parte de la entidad (interfaz), la inserción de una señal comienza con un clic en el botón new, luego se le pone un nombre, si es un vector su tamaño se determina con los índices y debe definirse su modo (entrada o salida). El proceso debe repetirse con cada una de las señales, de acuerdo a las especificaciones del diseño. En la figura 12 se muestra el entorno mediante el cual se definen los puertos que forman parte de la entidad, desde que se inserta la primera, hasta que todas han sido incluidas.

Manual de programación para Nexys 2.

Dispositivos Lógicos Programables. Figura 12. Ventana para definir los puertos que forman parte de la entidad. Al concluir con la inserción de señales se presiona el botón finalizar, con lo que se creará la plantilla del módulo en el archivo Expo_7_segmentos, el cual es automáticamente abierto en el área de trabajo, como se puede ver en la figura 13.

Figura 13. Plantilla creada a partir del asistente.

Los comentarios de la plantilla pueden completarse para una adecuada documentación. En este momento ya se tiene descrita la entidad (la interfaz del módulo) y falta por describir su arquitectura para determinar su comportamiento. El tipo de dato generado por default es STD_LOGIC, el cual es una ampliación del tipo Bit con la característica de que maneja otros niveles lógicos, además de falso y verdadero, como desconocido, alta impedancia, no importa, etc. Nota: Si se quiere modificar la entidad, para agregar una nueva señal, eliminar una existente o modificar algún parámetro, debe hacerse manualmente, respetando la sintaxis de VHDL, no es posible regresar al asistente anterior. El módulo a desarrollar es una combinación binaria, de manera que su comportamiento puede determinarse por el proceso siguiente:

Manual de programación para Nexys 2.

Dispositivos Lógicos Programables.

Figura 14. Inserción de un proceso en la arquitectura. Una vez insertado el código, se verifica su sintaxis realizando su compilación. Para ello se selecciona al archivo y se presiona al botón compilar. Otra alternativa consiste en obtener un menú contextual dando un clic derecho en el archivo y seleccionar la opción de compilación (compile). Si no hay errores de sintaxis, el archivo tendrá otro marcador indicando su estado y la consola reflejará el éxito de la compilación. En caso de que hubiera errores, el archivo en el navegador quedará marcado de manera diferente y los errores se mostrarán en la consola:

Los errores deben resolverse considerando la sintaxis del lenguaje.

4. Síntesis La síntesis se va a realizar con las herramientas de Xilinx desde un Ambiente Integrado de Software (Integrated Software Environment – ISE) el cual se inicia con un doble clic en el ícono mostrado en la figura 15.

Manual de programación para Nexys 2.

Dispositivos Lógicos Programables.

Figura 15. Acceso directo para el Ambiente Integrado de Software (ISE) de Xilinx. Al iniciar este programa se mostrará el Tip del Día y luego se abrirá el último proyecto en el que se ha trabajado (excepto cuando es la primera vez que se ejecuta al software). Para este tutorial se iniciará con un nuevo proyecto, dando un clic al botón New Project, en los comandos para proyectos ubicados a la izquierda de la ventana,. Con ello se obtendrá el cuadro de diálogo mostrado en la figura 16.

Figura 16. Cuadro de diálogo para crear un nuevo proyecto.

Manual de programación para Nexys 2.

Dispositivos Lógicos Programables. Primero se debe seleccionar la ubicación y el directorio de trabajo del nuevo proyecto y luego se le debe asignar un nombre. El proyecto queda ubicado en una carpeta con el mismo nombre. En este caso, los proyectos se ubican en la carpeta C:\Practicas y el nuevo proyecto llevará por nombre Expo_7_Segmentos. Para el tipo de módulo superior (Top-level source type) se mantiene HDL porque el comparador ya fue descrito en VHDL. En la figura 17 se ha personalizado el cuadro de diálogo de la figura 31.

Figura 17. Definición del nombre y ubicación del nuevo proyecto. Una vez que se introduzcan estos datos se debe proceder con el paso siguiente. En el cual se definen las propiedades del proyecto relacionadas con el FPGA en el que se va a realizar la descarga, por lo que es necesario seleccionar los valores correctos, incluyendo el lenguaje preferido. En la figura 18 se muestran los valores que corresponden con el FPGA que está integrado en las tarjetas de desarrollo Nexys 2.

Manual de programación para Nexys 2.

Dispositivos Lógicos Programables.

Figura 18. Información relacionada con el FPGA a utilizar. Con un clic en Next se obtiene el resumen del proyecto mostrado en la figura 19, si los datos con correctos, con el botón Finish se finaliza con la creación del proyecto.

Figura 19. Resumen del proyecto. Manual de programación para Nexys 2.

Dispositivos Lógicos Programables. Una vez que se cierra el cuadro de diálogo inicial se podrá ver el entorno de desarrollo de Xilinx, el cual se muestra en la figura 20.

1

2 3

4

Figura 21. Entorno de desarrollo de Xilinx. En la figura 21 se distinguen cuatro áreas principales: 1. Área de archivos. Se muestran los diferentes archivos fuente que integran al proyecto, a manera de un árbol. Si un proyecto está formado por varios módulos, en este árbol los módulos se ubicarán de acuerdo con sus niveles jerárquicos. 2. Espacio de trabajo. Acá serán abiertos los diferentes archivos fuente, reportes o información de internet, inicialmente se muestra un resumen de la versión 14.7 del ISE con ligas para mostrar sus diferentes características. Para abrir un archivo en el espacio de trabajo, basta con dar doble clic a su nombre en el área de archivos. 3. Área de procesos. Los procesos que se pueden aplicar a un archivo dependen de su tipo. Una vez que se selecciona un archivo en el área 1, en esta área se mostrará una lista con los procesos aplicables, por ello, la lista puede cambiar en función del tipo de archivo. 4. Área de mensajes. Muestra una consola con mensajes indicando las diferentes actividades que se están realizando. Además, existen otras cejas para mostrar errores o precauciones. Hasta el momento se tiene un diseño vacío, para agregar un archivo nuevo o copiar uno existente se debe dar un clic derecho en el área de archivos para obtener el menú contextual que permitirá hacerlo, en la figura 22 se muestra el citado menú.

Manual de programación para Nexys 2.

Dispositivos Lógicos Programables.

Figura 22. Menú contextual para agregar archivos nuevos o existentes.

Puesto que el archivo en VHDL del comparador ya fue realizado, se debe seleccionar la opción Add Copy of Source, para copiar el archivo en la carpeta del proyecto. Con un clic en esta opción se abre una ventana de navegación en la que se debe buscar al archivo Expo_7_segementos.vhd, el cual se encuentra en la ruta: my_designs -> tutorial -> comparador -> src, esto porque el Active-HDL trabaja en la carpeta denominada my_designs, el espacio de trabajo se denominó tutorial, en el cual se inició con un diseño denominado comparador, y todos los diseños dejan los archivos del código fuente en una carpeta denominada src. En la figura 23 se muestra el cuadro de diálogo resultante de agregar al archivo, en la columna Association se debe dejar la opción All, lo que significa que el archivo podrá ser empleado para síntesis y simulación.

Manual de programación para Nexys 2.

Dispositivos Lógicos Programables.

Figura 23. Archivo agregado al proyecto.

Al presionar OK en la figura 23 se tendrá al archivo Expo_7_segementos.vhd en el área de archivos y en el espacio de trabajo se mostrará un resumen del proyecto. Puesto que el archivo Expo_7_segementos.vhd está seleccionado, en el área de procesos se muestran los procesos que son aplicables a un archivo de este tipo, esto se observa en la figura 24.

Figura 24. Archivo Expo_7_segementos.vhd agregado al proyecto.

Manual de programación para Nexys 2.

Dispositivos Lógicos Programables.

Con el archivo Expo_7_segementos.vhd seleccionado se realiza su síntesis. Para ello, en el área de procesos se da un doble clic al proceso de síntesis, si no hay errores de sintaxis, en el proceso de síntesis aparecerá la indicación de que se realizó con éxito y la consola reflejará el mismo hecho. Ambas indicaciones se pueden ver en la figura 29.

Figura 29. Proceso de síntesis realizado con éxito. En caso de que hubiera errores, el proceso de síntesis no sería superado y el error se mostraría en el espacio de la consola, en la ceja de errores también se mostraría la posición del error. Se esperaría que no ocurrieran errores, dado que el módulo Expo_7_segementos.vhd ya fue evaluado con el Active-HDL, sin embargo, si se realiza algún ajuste en el código VHDL que genere algún error, éste debe resolverse considerando la sintaxis del lenguaje, en la figura 30 se muestra un error al quitar un ; en el archivo Expo_7_segementos.vhd.

Manual de programación para Nexys 2.

Dispositivos Lógicos Programables.

Figura 30. Proceso de síntesis realizado con éxito. 5. Acondicionamiento para la implementación. Como pudo observarse en las figuras siguientes, el código VHDL ha sido sintetizado satisfactoriamente en hardware, ahora se deben tomar en cuenta algunas consideraciones para poder llevar a cabo su implementación en el dispositivo. El comparador será descargado en un FPGA XC3S500 de Xilinx, el cual está en una tarjeta Nexys 2 de Digilent, cuya imagen se muestra a continuacion. Digilent es la empresa que manufactura estas tarjetas de desarrollo y su manual de referencia puede obtenerse de su sitio web: www.digilentinc.com. Se observa que la tarjeta tiene diferentes elementos para entrada/salida o almacenamiento de datos.

Manual de programación para Nexys 2.

Dispositivos Lógicos Programables.

Figura 31. Tarjeta Nexys 2, incluye un FPGA Spartan-3E de Xilinx. Para la implementación del comparador, es de esperarse que las entradas A y B se obtengan de los interruptores, y las salidas: Mayor, Menor e Igual, se muestren en los LEDs. Por lo tanto, se requiere conocer a que terminales del FPGA están conectados estos elementos. En la figura 32 se muestra la organización de las terminales en el FPGA, se observa una disposición matricial organizada en 4 bancos. Para referirse a una terminal, debe indicarse el renglón (A-V) y la columna (1-18).

Figura 32. Terminales del FPGA Spartan-3E de Xilinx incluido en la tarjeta Nexys 2.

Manual de programación para Nexys 2.

Dispositivos Lógicos Programables.

En la figura 33 se muestra a que terminales del FPGA están conectados los dispositivos básicos de entrada/salida. Sería necesario revisar el manual de la tarjeta si se va a emplear alguna interfaz especializada, como RS-232, PS/2 o VGA; o bien, si se va a manejar alguna de las memorias incluidas en la misma Nexys 2.

Figura 33. Conexión del FPGA con los dispositivos básicos de entrada/salida, en la tarjeta Nexys 2.

Con la aplicación PlanAhead es posible revisar la correcta ubicación de los pines en un entorno gráfico. En la figura 34 se muestra la ejecución de esta aplicación, con la salida igual seleccionada en la ventana I/O Ports, poniendo en color blanco a la terminal, tanto en el empaque (Package) como en el dispositivo (Device).

Manual de programación para Nexys 2.

Dispositivos Lógicos Programables.

Figura 34. Muestra gráfica de la ubicación de las terminales con la aplicación PlanAhead.

La aplicación PlanAhead se invoca seleccionando al archivo VHDL del comparador en el área de archivos y expandiendo la opción User Constrains en el área de procesos, para posteriormente ejecutar al proceso I/O Planning (PlanAhead), como se muestra en la figura 59.

Figura 34. Proceso para invocar a la aplicación PlanAhead.

Manual de programación para Nexys 2.

Dispositivos Lógicos Programables. Existen otros tipos de restricciones, de área o temporización, pero éstas requieren definiciones que son mucho más complejas. 6. Implementación. La implementación es un proceso que involucra varios pasos: Trasladar el diseño (Traslate), mapearlo (Map) y realizar su colocación y ruteo (Place & Route). Sin embargo, estos procesos los realiza la herramienta de manera automática. Para ello, es necesario seleccionar el archivo Expo_7_segementos en el área de archivos, con lo que se abrirán los procesos aplicables al archivo, entre los cuales se debe buscar la lista de procesos Implement Design y darle un doble clic para ejecutarlos, en la figura 35 se muestra la realización con éxito de la Implementación, con todas sus etapas.

Figura 35. Implementación del diseño.

En el resumen del proyecto (que se muestra en el área de trabajo) se pueden ver los recursos que está usando el diseño dentro del FPGA, estos se observan en la figura 36.

Manual de programación para Nexys 2.

Dispositivos Lógicos Programables.

Figura 36. Resumen de recursos utilizados en el diseño.

Una vez hecho esto es posible ejecutar al proceso Generate Programming File aplicándole un doble clic. Si el proceso se realiza con éxito, se obtendrá un estado de éxito, como se muestra en la figura 37.

Figura 37. La generación del archivo de programación se realizó con éxito.

En este momento ha sido creado al archivo con extensión BIT que será descargado en el FPGA, por lo tanto, para descargas en la tarjeta Nexys 2 empleando la interfaz USB ya es posible cerrar al ISE de Xilinx.

Manual de programación para Nexys 2.

Dispositivos Lógicos Programables. 7. Programación del dispositivo La tarjeta puede programarse desde dos diferentes puertos, el puerto JTAG o un puerto mini-USB, el programa puede enviarse directamente al FPGA o a una FLASH, para que el FPGA cargue el programa automáticamente, después de que es alimentada la tarjeta. Figura 38. programar al

Interfaz para FPGA.

En este caso cable USB, utilizará un denominado proporcionado por Digilent, el del programa muestra en la

se utilizará un para ello se programa Adept, gratuitamente acceso directo Adept se figura 39.

Figura 39. Acceso directo del programa Adept.

En la tarjeta Nexys 2 es conveniente colocar el conector de Modo en la posición de JTAG, en lugar de ROM, para que no afectar el contenido de la memoria, en la figura 40 puede verse el selector de modo, por debajo de la interfaz JTAG. La memoria ROM está configurada con un programa de prueba utilizado para verificar la funcionalidad de la tarjeta y no debe ser modificado. Figura 40. tarjeta.

Conectores de la

Antes de ejecutar al programa Adept debe conectarse la tarjeta Nexys a la PC y energizarse, sino se manejan elementos de hardware adicionales en los conectores de la tarjeta, como ocurre en este ejemplo, la alimentación de la tarjeta puede tomarse del puerto USB de la PC. La ventana del programa Adept se muestra en la figura 41. Si la tarjeta no está conectada o está apagada, sólo se mostrará un mensaje pidiendo que se verifiquen las conexiones. Arregladas las conexiones será suficiente con presionar al botón Initialize Chain para que el programa reconozca a la tarjeta y se obtenga la ventana de la figura 41.

Manual de programación para Nexys 2.

Dispositivos Lógicos Programables.

Figura 41. Interfaz del programa Adept, una vez que la tarjeta Nexys 2 ha sido reconocida.

Con el botón Browse relacionado con el FPGA, se busca al archivo con extensión BIT en la carpeta del proyecto y se programa al FPGA presionando al botón Program. No se utilizan los botones relacionados con la PROM, para no alterar su contenido. En la parte inferior de la ventana se observará el progreso de la programación, como se muestra en la figura 42.

Figura 42. Progreso en la programación del FPGA.

El programa ADEPT, además de emplearse para descargar el programa en el FPGA o en la PROM, puede emplearse para verificar la integridad de la tarjeta, por medio de diferentes pruebas en sus recursos. Después de la programación, el programa ADEPT ya puede cerrarse. Si la tarjeta está alimentada con un eliminador, el cable USB puede retirarse. El diseño puede evaluarse modificando las entradas desde los interruptores para observar las salidas en los dispays. Cabe aclarar que los recursos programables en el FPGA están basados en tecnología RAM, por lo que si se retira la alimentación, el programa se perderá. Para evitar esto, el programa podría almacenarse en la memoria FLASH, lo cual se evitará para mantener el programa de demostración. Sin embargo, es conveniente aclarar que en la PROM no se puede programar un archivo con extensión BIT, primero debería generarse el archivo para la PROM desde el ISE de Xilinx.

Manual de programación para Nexys 2.

Dispositivos Lógicos Programables.

8. Conclusión Se ha revisado de manera detallada el proceso a seguir para implementar sistemas digitales en FPGAs con ayuda de VHDL, para otro tipo de tarjetas u otro tipo de FPGAs sólo debe hacerse la selección adecuada del dispositivo y la ubicación correcta de las terminales de entrada y salida. Se utilizaron 2 herramientas principales durante el proceso, y se pudo observar que la simulación de un diseño con el Active-HDL es mucho más simple e ilustrativa que la simulación en el mismo entorno de Xilinx, dado que en el ISE se requiere la creación de otro archivo VHDL como banco de pruebas. Si no se tiene éxito en la programación, las causas pueden ser diversas:  La tarjeta puede estar desconectada.  Se seleccionó un FPGA que no corresponde con el de la tarjeta.  El empaque seleccionado no es el empaque del FPGA.  El puerto o el cable USB no funcionan correctamente.  El FPGA no funciona correctamente.

Manual de programación para Nexys 2.