Figura 1: Una arquitectura heterogénea combina un procesador, FPGA y E/S con herramientas de programación de alto nivel.
El procesador Intel ejecuta NI Linux Real-Time, un sistema operativo en tiempo real basado en un kernel estándar y diseñado específicamente para una operación confiable y determinística en implementaciones a largo plazo. Incluye características estándares de Linux, como soporte nativo para Linux con seguridad mejorada. El controlador NI-DAQmx proporciona una sola interfaz de programación para adquirir formas de onda y programar entradas analógicas, salidas analógicas, E/S digitales, contadores y control.
La FPGA programable por el usuario le permite descargar procesos de tiempo crítico para control avanzado, procesamiento de señales, filtrado, temporización avanzada y otra lógica. NI utiliza la última tecnología FPGA de Xilinx, con chips que contienen hasta 326, 060 celdas lógicas y 840 segmentos de DSP.
Si bien las arquitecturas heterogéneas que combinan un procesador y FPGA son extremadamente valiosas para aplicaciones avanzadas y críticas, programar esos sistemas es un desafío. Los desafíos existen en cada etapa e incluyen elegir o construir el sistema operativo, desarrollar controladores para hablar con E/S y comunicarse entre el procesador y FPGA, así como encontrar la experiencia necesaria para escribir programas FPGA y mantener los ciclos de desarrollo de ambos dispositivos en sincronización a lo largo del proyecto.
NI aborda los desafíos del diseño de software heterogéneo entregando una pila de software pre-validada y herramientas de programación de alto nivel sobre las que puede construir, y mantener la apertura y portabilidad a futuras plataformas. La arquitectura proporciona middleware, controladores y un sistema operativo Linux completamente probados para que pueda transferir rápidamente el código de su aplicación a la plataforma de NI. Continúe usando sus herramientas preferidas de desarrollo de aplicaciones y aproveche las fortalezas de LabVIEW para la programación en tiempo real y FPGA. El verdadero valor de la programación de LabVIEW FPGA es que este enfoque abstracto del diseño digital permite a los desarrolladores de C/C++ a nivel de aplicación implementar las partes más críticas de sus aplicaciones en hardware, lo que nunca hubieran podido hacer sin tener expertos en VHDL en su equipo de trabajo.
Figura 2: Programe el procesador embebido con LabVIEW o cualquier herramienta compatible con Linux y use el controlador NI RIO para comunicarse con LabVIEW FPGA.
Los diseñadores de sistemas embebidos que trabajan con hardware de NI pueden elegir entre una variedad de lenguajes de programación y herramientas al diseñar sus sistemas. Los desarrolladores pueden programar el procesador abierto embebido en LabVIEW, C/C++ o matemática textual y pueden reutilizar código fuente existente de proyectos anteriores para ahorrar tiempo de desarrollo. Los programadores pueden reutilizar bibliotecas C/C++ de proyectos anteriores al llamarlos desde una aplicación de LabVIEW Real-Time, lo cual abstrae tareas como programación de hilos en tiempo real. Alternativamente, los desarrolladores pueden desarrollar, depurar e implementar aplicaciones en el procesador embebido escritas completamente en C o C++ utilizando el entorno de desarrollo integrado (IDE) de su preferencia.
Introducir FPGAs en el diseño de sistemas embebidos ha hecho posible crear lógica digital de alto rendimiento sin la necesidad de un diseño ASIC personalizado. Tradicionalmente, los lenguajes de descripción de hardware basados en texto, como VHDL o Verilog escritos por ingenieros de diseño digital, se han utilizado para el desarrollo de FPGA. Desafortunadamente, debido a la desafiante semántica del lenguaje, estos lenguajes de descripción de hardware hacen que sea difícil aprovechar todas las capacidades del diseño de FPGA. Así lo demuestra la búsqueda de las industrias embebidas de abstracciones de más alto nivel para el diseño de FPGA, como herramientas para síntesis de C a compuertas o lenguajes de programación gráfica como G en LabVIEW FPGA.
El entorno de programación gráfica de LabVIEW abstrae la complejidad del hardware FPGA y ofrece construcciones de programación familiares para los ingenieros de software para que los usuarios puedan diseñar más rápido sistemas embebidos de alto rendimiento.
Dado que el hardware de NI ejecuta un sistema operativo Linux estándar, puede crear su aplicación embebida utilizando cualquier herramienta compatible con Linux. Esto le brinda la flexibilidad de reutilizar su IP, experiencia y herramientas de desarrollo, pero necesita comprender dónde y cómo pueden integrarse con LabVIEW Real-Time y LabVIEW FPGA.
Figura 3: Elija un patrón de diseño de software en base a la reutilización de IP y la experiencia en programación en tiempo real.
Debe usar LabVIEW FPGA para programar el Xilinx FPGA, pero puede usar C/C++ o LabVIEW Real-Time para comunicarse con el programa LabVIEW FPGA. Existe una API C y una API de LabVIEW para la capa de comunicación entre la aplicación del procesador y el programa LabVIEW FPGA. Por lo tanto, el primer paso para diseñar su sistema NI Linux Real-Time es elegir un patrón de diseño de software de nivel superior.
Elegir LabVIEW para programar la aplicación en tiempo real tiene muchas ventajas, ya que LabVIEW Real-Time incluye construcciones integradas para multithreading, programación de subprocesos en tiempo real y muchas otras características específicas para construir código robusto y determinístico. Además, LabVIEW puede interactuar con bibliotecas compartidas y aplicaciones escritas en otros lenguajes para que esta valiosa IP pueda ser reutilizada en el patrón de diseño de LabVIEW Real-Time.
Sin embargo, en los casos en que la aplicación de nivel superior debe escribirse únicamente en C/C++, puede usar LabVIEW solo para programar las E/S en FPGA y evaluar qué tareas críticas deben moverse para ejecutarse en hardware en lugar de en el procesador.
LabVIEW es adecuado para programación FPGA porque representa claramente el paralelismo y el flujo de datos. Con LabVIEW FPGA, los ingenieros y científicos con experiencia en C, pueden aprovechar los FPGAs en sus diseños sin la necesidad de aprender diseño de hardware. Además, la API C de la interfaz FPGA ofrece una capa de comunicación entre el FPGA y la aplicación en tiempo real para control de E/S y escritura de datos. Con esta API, usted puede usar las herramientas gráficas de LabVIEW para programar el FPGA y elegir ya sea herramientas de LabVIEW o C/C++ para programar el procesador del sistema.
LabVIEW FPGA le ayuda a crear hardware personalizado de medidas y control sin lenguajes de descripción de hardware de bajo nivel o diseño a nivel de tarjeta. Usted puede usar este hardware personalizado para rutinas únicas de temporización y disparo, control de ultra alta velocidad, conectar con protocolos digitales, procesamiento digital de señales y muchas otras aplicaciones que requieren fiabilidad de hardware de alta velocidad y alto determinismo.