You are on page 1of 3

1

Palacios Torres Gianmarco, 2013400241, UCSM gianmarcorb@hotmail.com

Programacin del Hardware

AbstractoSe presentan aplicaciones a nivel de hardware de


programacin en lenguaje C++. En este caso utilizando como
referencia los sistemas de National Instrument, como es el caso de
un FPGA.

I. INTRODUCCIN

os diseadores tradicionalmente han utilizado


lenguajes de programacin como C para desarrollar
sistemas embebidos basados en arquitectura de
microprocesadores o microcontroladores. La popularidad de C
ha dado lugar a un gran ecosistema de opciones tecnolgicas
de herramientas como bibliotecas, compiladores y sistemas
operativos. Los arreglos de compuertas programables
(FPGAs) son una tecnologa novedosa en el espacio embebido
que proporciona la capacidad de crear lgica digital
reconfigurable utilizando lenguajes de descripcin de
hardware. Para representar el hardware y aprovechar la
naturaleza paralela de alto rendimiento de los circuitos
digitales, los lenguajes de descripcin de hardware ofrecen
semntica muy diferente a lo que estn acostumbrados a usar
los ingenieros de software. Al brindar entornos de desarrollo
para FPGAs que proporcionan caractersticas de programacin
familiares para los ingenieros de software, los desarrolladores
de sistemas embebidos pueden obtener beneficios por usar
FPGAs
en
sus
diseos.

II. SISTEMAS EMBEBIDOS


La plataforma de E/S reconfigurables (RIO), consta de dos
dispositivos programables: un microprocesador ejecutando un
SO en tiempo real (RTOS) y un FPGA. Esto le permite dividir
cdigo entre el FPGA y el RTOS con base en la necesidad de
cada tarea individual.

Figura1. Arquitectura de Hardware Embebido de NI

La introduccin de los FPGAs en el diseo de sistemas


embebidos ha hecho posible crear lgica digital de alto
rendimiento sin la necesidad de un diseo ASIC
personalizado. Tradicionalmente, el desarrollo de FPGA ha

sido realizado con lenguajes de descripcin de hardware


basados en texto como VHDL o Verilog, y el cdigo es escrito
por ingenieros de diseo digital. Desafortunadamente, debido
a la desafiante semntica del lenguaje, estos lenguajes de
descripcin hardware hacen que sea difcil aprovechar todas
las capacidades del diseo de FPGA. As lo demuestra la
demanda de industrias embebidas por encontrar abstracciones
de ms alto nivel para el diseo de FPGA, como herramientas
para sntesis de C a compuertas lgicas o lenguajes de
programacin grfica como G en LabVIEW FPGA.

Figura 2. Arquitectura de Software de Sistemas Embebidos de NI

III. DESARROLLO DE APLICACIONES EN TIEMPO


REAL EN C++

Con diferentes arquitecturas de software para elegir, los


programadores primero deben identificar los requerimientos
de su proyecto y relacionarlos con un diseo de software
ptimo. Deben considerar los requerimientos tcnicos como
las expectativas del rendimiento del software, as como
requerimientos de negocio como fechas de entrega de
proyectos, reutilizacin de cdigo existente y las capacidades
de sus equipos para distintos lenguajes de programacin.
Por ejemplo, los diseadores del sistema deben decidir cmo
aprovechar al mximo los beneficios de productividad de
LabVIEW para programacin en tiempo real, y al mismo
tiempo integrar cdigo C/C++ existente de proyectos
anteriores. Una solucin es llamar bibliotecas compartidas de
C o C++ desde una aplicacin de LabVIEW, la cual utiliza
la programacin
de
tareas
paralelas inherente
en
LabVIEW. Con este enfoque los diseadores pueden ahorrar
an ms esfuerzo de desarrollo, al usar las funciones de
procesamiento de seales de LabVIEW integradas o
algoritmos .m con el Mdulo LabVIEW MathScript.
Alternativamente, los programadores pueden desarrollar,
depurar e implementar aplicaciones en el procesador
embebido, escritas completamente en C o C++ usando Eclipse
o cualquier otro entorno de desarrollo integrado (IDE) y as
obtener los beneficios de LabVIEW para la programacin del
FPGA.

Considere estos cuatro patrones bsicos de diseo.

System Exec VI - Use esta funcin para


ejecutar o iniciar otra aplicacin de lnea de comando
o archivo de script de Linux desde su cdigo
LabVIEW. Usted puede incluir cualquier parmetro
con su secuencia de comandos que ese comando
soporte. nicamente Linux Real-Time ofrece esta
caracterstica.

Comunicacin Local - Los programas


paralelos tambin pueden comunicarse entre ellos
usando funciones TCP/IP con direccin localhost para
pasar datos de un lado a otro.

Para compilar su cdigo C/C++ para hardware embebido de


NI, consulte la seccin Herramientas de Desarrollo en C/C++,
a continuacin, para encontrar las herramientas C/C++
adecuadas para su hardware.

Figura 3. Arquitecturas de Diseo de Software Embebido Basado en C/C++

IV.

LLAMAR APLICACIONES O BIBLIOTECAS C++ DESDE


LABVIEW

Al usar LabVIEW para programar la aplicacin principal en


tiempo real, los desarrolladores pueden aprovechar
las funciones integradas para procesamiento de seales y
comunicacin en red. Adems, LabVIEW automticamente
pone en paralelo secciones independientes del cdigo, por lo
que los programadores pueden evitar el manejo manual de
mltiples threads. Sin embargo, pueden reutilizar el cdigo de
C o C++ existente al llamar bibliotecas compartidas de C/C++
desde LabVIEW o ejecutar aplicaciones C/C++ en paralelo al
ejecutable de LabVIEW Real-Time. Los programadores
pueden elegir entre varias implementaciones para integrar una
biblioteca compartida de C/C++ o comunicarse con una
aplicacin externa:

Call Library Function Node de LabVIEW Use esta funcin para llamar una funcin de una DLL
de C/C++ o biblioteca compartida de Linux
directamente desde LabVIEW. Configure el Call
Library Function Node para especificar la biblioteca,
funcin, parmetros, valor de retorno para el nodo,
convenciones de llamada y llamada de funcin. Los
tipos de datos de LabVIEW se pueden pasar como
entradas y regresar como salidas a la funcin de la
biblioteca de C/C++.

V. HERRAMIENTAS DE DESARROLLO EN C++


BASADAS EN PC O PXI

El hardware PXI no incluye un FPGA integrado. La


plataforma es completamente configurable para que usted
pueda seleccionar el chasis, controladores y mdulos
apropiados para su aplicacin. Usted puede elegir entre
varios mdulos PXI de la Serie R Series basados en
FPGA junto con cientos de otros mdulos de hardware PXI
hardware para alcanzar mxima flexibilidad al disear sus
sistemas.
NI ofrece LabWindows/CVI, un entorno de desarrollo
integrado (IDE) ANSI C, para simplificar el desarrollo de
sistemas embebidos basados en PC y PXI con
x86. LabWindows/CVI no incluyen un compilador o
bibliotecas de C++. Los desarrolladores de C++ pueden usar
los IDEs de su preferencia para desarrollar aplicaciones para
PXI o PC.

VI. CONCLUSIONES
Para representar el hardware y aprovechar la naturaleza
paralela de alto rendimiento de los circuitos digitales, los
lenguajes de descripcin de hardware ofrecen semntica muy
diferente a lo que estn acostumbrados a usar los ingenieros de
software.

Figura 4. Herramientas de Desarrollo C/C++ Basadas en PXI o PC

LabWindows/CVI puede ayudarle a acortar su tiempo de


desarrollo con APIs de controladores, asistentes de
configuracin de E/S, bibliotecas de medidas y anlisis, y
extensas herramientas de depuracin y optimizacin de
cdigo.
Usted puede reutilizar cdigo fuente de C existente en su
aplicacin
LabWindows/CVI
y
usar
el Mdulo
LabWindows/CVI Real-Timepara implementar y depurar en
un dispositivo remoto en tiempo real sin salir del IDE. NI
ofrece APIs intuitivos y de alto rendimiento para todo el
hardware de PXI y PC, as como el FPGA Interface C API
para control de E/S y escritura de datos entre la aplicacin en
tiempo real y el hardware FPGA.

Deben considerar los requerimientos tcnicos como las


expectativas del rendimiento del software, as como
requerimientos de negocio como fechas de entrega de
proyectos, reutilizacin de cdigo existente y las capacidades
de sus equipos para distintos lenguajes de programacin.
Los
programadores
pueden
elegir
entre
varias
implementaciones para integrar una biblioteca compartida de
C/C++ o comunicarse con una aplicacin externa

VII. REFERENCIAS
[1]
[2]
[3]

Fundamentos en programacin en C++, Antonio Garrido


National Instrument http://www.ni.com/white-paper/14623/es/
www.ceintec.com/desarrollo.html