La integración de las herramientas de diseño electrónico en entornos de desarrollo basados en modelos ha impulsado el auge de nuevas técnicas de diseño para dispositivos reconfigurables, facilitando la implementación de sistemas de procesamiento modulares y autónomos. Xilinx es pionera en el desarrollo de herramientas de este tipo, que facilitan el diseño de sistemas de procesamiento digital en una amplia variedad de FPGAs producidos por esta misma compañía [24].
2.3.1 Características generales de Matlab/Simulink.
Matlab es un programa de cálculo numérico y visualización de datos para la resolución de problemas complejos planteados en la realización y aplicación de modelos matemáticos de ingeniería. Este software posee una extraordinaria versatilidad y capacidad para resolver problemas de matemática aplicada, física, química, ingeniería, finanzas y otras aplicaciones. Su base la constituye el cálculo matricial e integra análisis numéricos, procesamiento de señales y visualización gráfica. Se utiliza en escuelas y centros universitarios, así como en departamentos de investigación y desarrollo de muchas compañías.
Matlab dispone de herramientas adicionales que expanden sus prestaciones como Simulink, un software para modelar, simular y analizar sistemas dinámicos. Simulink proporciona una interfaz de usuario gráfica para construir los modelos como diagramas de bloques, utilizando operaciones con el ratón del tipo pulsar y arrastrar. Después de definir un modelo, se puede simular e interactuar con dicha simulación a través de los diferentes menús que ofrece el programa. Además, es posible cambiar los parámetros y ver de forma inmediata lo que sucede tras el cambio; pudiendo transferir los resultados de la simulación al espacio de trabajo del programa Matlab, para su posterior procesamiento y visualización [25].
Simulink es un entorno de programación visual, que permite construir y simular modelos de sistemas físicos y de control mediante diagramas de bloques. El comportamiento de
dichos sistemas se define mediante funciones de transferencia, operaciones matemáticas, elementos de Matlab y señales predefinidas [25].
Simulink proporciona una interface gráfica de usuario GUI (Graphical User Interface) para
realizar modelos como diagramas en bloques, permitiendo dibujarlos de la misma forma que se realizarían con lápiz y papel. Además incluye una librería de bloques de fuentes, componentes lineales y no lineales, conectores; aunque también permite crear bloques definidos por los usuarios. El GUI simplifica el proceso de modelado, eliminando la necesidad de realizar complicadas tareas como por ejemplo la elaboración de ecuaciones diferenciales en lenguaje de programación [25].
2.3.2 Matlab R2013a
Matlab R2013a proporciona una gama de métodos de cálculo numérico para el análisis de datos, el desarrollo de algoritmos y la creación de modelos. Incluye funciones matemáticas
que soportan operaciones comunes de ingeniería y ciencia con el lenguaje MAT2001 de
Mathworks. Proporciona herramientas para adquirir, analizar y visualizar datos, lo que le permite obtener una visión de sus datos en una fracción del tiempo que tomaría utilizando hojas de cálculo o lenguajes de programación tradicionales. También puede documentar y compartir sus resultados a través de tramas e informes o como código MATLAB publicado. Le permite acceder a datos de archivos, otras aplicaciones, bases de datos y dispositivos externos [26].
2.3.3 Características generales de Xilinx ISE
Las herramientas de diseño actualmente permiten compilar y simular el diseño, para finalmente generar el fichero de programación para la FPGA del fabricante. Estos entornos gestionan el conjunto de ficheros generados en el diseño, asignan los pines de entrada- salida, seleccionan opciones para la compilación y dan información de los recursos de
hardware necesarios.
La empresa Xilinx es la que acapara la mayor parte del mercado de FPGA a nivel mundial. Actualmente Xilinx dispone de dos entornos de diseño estándar; por un lado ISE (Integrated System Environment); y por otro Vivado; siendo el primero el más utilizado, pese a que Xilinx anunció descontinuar dicho entorno en el año 2015. Junto a estos
entornos se dispone de System Generator, que es la utilidad de diseño sobre Matlab Simulink.
En el diseño de sistemas digitales basados en FPGAs se utiliza el entorno de diseño ISE de Xilinx, consistente en una herramienta de software que permite realizar un diseño digital basado en lógica programable, la misma permite recorrer las diferentes fases del proceso de desarrollo de un circuito lógico, desde el diseño hasta la implantación sobre una arquitectura reconfigurable; descripción, simulación, síntesis, implementación, simulación temporal y programación. Cada una de las etapas del flujo de diseño puede realizarse dentro del entorno integrado o bien utilizar herramientas de terceros, algunas de esas herramientas también son integrables en ISE si están convenientemente instaladas [27].
La última actualización de este software data del octubre del 2013 y se trata de la versión
14.7 [28]. A partir de esta fecha la compañía no ha actualizado más esta herramienta pues se concentró en Vivado, que es la solución para desarrollar con los nuevos productos Virtex-7, Kintex-7, Artix-7, and Zynq-7000. Esto tiene sentido pues los viejos chips soportados en Xilinx ISE ya no compiten por los primeros puestos en el mercado, sino que solo comparten una parte con los nuevos chips mencionados, los cuales se ven favorecidos por la política de la compañía. Lo antes mencionado se puede observar en la Figura 2.2.
2.3.4 Flujo de diseño con Xilinx ISE:
Existen varios diagramas para representar el flujo de diseño con Xilinx ISE, por ejemplo los presentados en (Xilinx, 2009, Xilinx, 2008, Xilinx, 2012b). Realmente son varias maneras de representar el mismo esquema de trabajo, cuya principal característica son los lazos cerrados de desarrollo. Estos lazos cerrados garantizan la continuidad en el refinado de la aplicación, ya que ello implica no solo que funcione mejor sino que se optimicen los recursos consumidos del chip. Dos de estos diagramas están representados en la Figura 2.3.
Figura 2.3:Dos perspectivas del flujo de diseño con Xilinx ISE [30] [31].
No importa el diagrama para el flujo de diseño, siempre se mantienen los pasos de: entrada del diseño, síntesis y verificación, realización y verificación, programación del circuito y verificación sobre el circuito. La verificación mediante simulación puede ser ejecutada en casi cualquier momento, pero resulta muy útil para las clases ejecutar la simulación de comportamiento para realizar la verificación funcional antes de la síntesis.
2.3.5 Xilinx ISE 14.7
En la instalación de System Generator es necesario tener presente la compatibilidad de los diferentes paquetes que deben ser instalados, o sea, es necesario que exista compatibilidad entre ISE, System Generator y Simulink de Matlab. La versión que se utiliza en este
proyecto es Xilinx System Generator (XSG 14.7). En la Figura 2.4 se muestran algunos bloques de Xilinx dentro de XSG 14.7.
Figura 2.4: Bloques de Xilinx en XSG [4].
Una vez instalado correctamente el System Generator se tienen como resultado tres set de bloques en Simulink los cuales a su vez están compuestos por diez bibliotecas que contienen gran cantidad de bloques funcionales con los que se genera el diseño del sistema a implementarse en el FPGA. Cada uno de estos bloques posee parámetros configurables, estos pueden ser específicos o comunes en la mayoría de los bloques [4].
2.3.6 System Generator en Xilinx
System Generator es una herramienta de diseño de alto nivel desarrollada por Xilinx que permite el diseño basado en modelos en el entorno Matlab/Simulink para el desarrollo de sistemas de procesamiento digital en FPGAs. Se integra a Simulink como un toolbox al instalarse en la computadora Xilinx ISE. Como todos los blocksets de Simulink, System Generator se integra como una biblioteca de bloques que pueden ser conectados para crear modelos funcionales de un sistema dinámico. De esta forma, permite modelar, simular y analizar sistemas de procesamiento complejos y de alto rendimiento para una plataforma
hardware específica, mediante un entorno flexible, robusto y fácil de utilizar.
System Generator no puede considerarse como un sustituto de los lenguajes de
Los diseños desarrollados con System Generator pueden componerse de una gran variedad de elementos: bloques específicos de System Generator, código de un lenguaje de
descripción de hardware tradicional como VHDL o Verilog y funciones derivadas del
lenguaje de programación M de Matlab. Así, todos estos elementos pueden ser usados simultáneamente, simulados en conjunto y sintetizados para obtener todo un sistema de procesamiento de señales sobre un FPGA [24].
En conclusión System Generator es una herramienta de diseño de alto nivel de Xilinx que
agrega un conjunto de toolboxes al software Simulink que acompaña cualquier versión de
Matlab.
Para poder utilizar XSG (Xilinx System Generator) es necesario haber instalado en orden,
primero el Matlab y luego el software ISE Xilinx (10.1 o superior). La versión que se utiliza en este proyecto es Xilinx System Generator 14.7.
Digilent Adept:
Digilent Adept es una potente aplicación que permite la transferencia de datos de una
configuración a los dispositivos lógicos de Xilinx. Este software se utiliza para descargar el
fichero de programación en el FPGA, es totalmente compatible con la tarjeta. El software
Digilent Adept brinda al usuario una interfaz sencilla para la programación del kit Nexys 3 mediante el puerto USB.
Para trabajar con el software, una vez instalado se puede acceder en computadoras con
sistema operativo Windows desde el menú Inicio. Después de abierto, el software detecta
automáticamente la tarjeta si está conectada a un puerto USB de la computadora. En este punto se selecciona dónde se va a cargar la configuración, si directamente en el FPGA y/o en la memoria ROM de la tarjeta con el objetivo de que dicha configuración no se pierda.
En la ventana del software se especifica la ruta del fichero de programación y se selecciona
la opción Initialize Chain. Una vez terminado el proceso de descarga se puede verificar el
diseño en el kit de desarrollo.