Академический Документы
Профессиональный Документы
Культура Документы
Aplicaciones.
LENGUAJES DE PROGRAMACION
PARA MICROCONTROLADORES:
1. El lenguaje BASIC:
Ventajas:
Es un lenguaje muy simple y con instrucciones fácilmente legibles, incluso por no expertos.
Desventajas:
Nunca vas a tener el control del programa en cuanto a tiempo de ejecución y control de
registros bit a bit.
Es muy complicado el manejo de interrupciones simultáneas en este lenguaje.
Tiene limitaciones cuando genera el archivo .hex, es decir no optimiza el tamaño de
memoria de programa del PIC.
La mayoría de compiladores para este lenguaje pueden utilizarse únicamente bajo
ambiente Windows.
Ejemplo: rutina que hace parpadear un led en el pin cero del puerto B cada 200 milisegundos
en lenguaje Basic empleando el software PICBASIC PRO:
2. Lenguaje C:
Ventajas:
Es un lenguaje de alto nivel mas cercano a la máquina.
Puedes construir rutinas matemáticas fácilmente.
Puede ser de ayuda al combinarlo con Ensamblador sobre todo en la gama alta.
Se pueden crear macros con este lenguaje, para después simplificar el código en diferentes
desarrollos.
Es aceptado por la empresa fabricante Microchip, incluso ellos tienen algunos compiladores
C.
Desventajas:
Los programas al compilarlos pueden resultar un poco extensos y pesados por ello debe
tenerse en cuenta la capacidad de memoria de programa del PIC a utilizar.
Con este lenguaje tampoco se puede controlar del todo los tiempos y los registros bit a bit.
Ejemplo: rutina que hace parpadear un led en el pin cero del puerto B cada 200 milisegundos en
lenguaje C empleando el software de CCS PCW IDE:
3. Lenguaje Ensamblador:
Ventajas:
Es el lenguaje de bajo nivel natural de la línea PIC tanto para gama baja, media o alta.
Con el se tiene un aprovechamiento eficiente de los recursos del PIC.
Se pueden crear macros con este lenguaje, para después simplificar el código en diferentes
desarrollos.
Con el se pueden controlar los tiempos y los registros bit a bit.
Excelente para manejar interrupciones simultáneas.
Cuando se genera el archivo .hex éste es completamente optimizado.
Desventajas:
Ejemplo: rutina que hace parpadear un led en el pin cero del puerto B cada 200
milisegundos en lenguaje Ensamblador empleando el software de Microchip MPLAB IDE:
CONCLUSIONES:
Después de haber analizado los diferentes aspectos que envuelven la programación de PICs
en cuanto a los lenguajes,para trabajos profesionales se aconseja lo siguiente:
Lo ideal es manejar el lenguaje ensamblador para los rangos de gama baja, media y alta por
versatilidad y mejor aprovechamiento de recursos del PIC.
Si usted va a comenzar con la programación de PICs debería primero dominar el lenguaje
Ensamblador, no le aconsejaría el lenguaje BASIC. Una vez haya dominado el lenguaje
Ensamblador para gama baja y media puede iniciarse con el lenguaje C.
El Lenguaje C es un lenguaje de alto nivel y puede resultar útil combinándolo con el lenguaje
Ensamblador ya que nos puede ahorrar tiempo de programación, depuración y simulación
sobre todo en la gama alta y en los dsPIC.
Puede emplear el Lenguaje C o el Ensamblador para crear macros que le simplifiquen
desarrollos futuros.
PARA FPGA’s
Programación
Estos lenguajes de programación especiales son conocidos como HDL o Hardware Description
Language (lenguajes de descripción de hardware). Los HDLs más utilizados son:
1. VHDL
Es un lenguaje definido por el IEEE (Institute of Electrical and Electronics Engineers) (ANSI/IEEE
1076-1993) usado por ingenieros para describir circuitos digitales. Otros métodos para diseñar
circuitos son la captura de esquemas (con herramientas CAD) y los diagramas de bloques, pero
éstos no son prácticos en diseños complejos.
2. VERILOG:
Los diseñadores de Verilog querían un lenguaje con una sintaxis similar a la del lenguaje de
programación C, de tal manera que le resultara familiar a los ingenieros y así fuera
rápidamente aceptada. El lenguaje tiene un preprocesador como C, y la mayoría de palabras
reservadas de control como "if", "while", etc, son similares. El mecanismo de formateo en las
rutinas de impresión y en los operadores del lenguaje (y su precedencia) son también
similares.
A diferencia del lenguaje C, Verilog usa Begin/End en lugar de llaves para definir un bloque de
código. Por otro lado la definición de constantes en Verilog requiere la longitud de bits con su
base. Verilog no tiene estructuras, apuntadores o funciones recursivas. Finalmente el
concepto de tiempo, muy importante en un HDL, no se encuentra en C.
El lenguaje difiere de los lenguajes de programación convencionales, en que la ejecución de
las sentencias no es estrictamente lineal. Un diseño en Verilog consiste de una jerarquía de
módulos. Los módulos son definidos con conjuntos de puertos de entrada, salida y
bidireccionales. Internamente un módulo contiene una lista de cables y registros. Las
sentencias concurrentes y secuenciales definen el comportamiento del módulo, describiendo
las relaciones entre los puertos, cables y registros. Las sentencias secuenciales son colocadas
dentro de un bloque begin/end y ejecutadas en orden secuencial, pero todas las sentencias
concurrentes y todos los bloques begin/end son ejecutadas en paralelo en el diseño. Un
módulo puede contener una o más instancias de otro módulo para definir un sub-
comportamiento.
3. ABEL:
4. LabVIEW
Principales características
Interfaces de comunicaciones:
Puerto serie
Puerto paralelo
GPIB
PXI
VXI
TCP/IP, UDP, DataSocket
Irda
Bluetooth
USB
OPC...
Programa en LabVIEW
Como se ha dicho es una herramienta gráfica de programación, esto significa que los
programas no se escriben, sino que se dibujan, facilitando su comprensión. Al tener ya pre-
diseñados una gran cantidad de bloques, se le facilita al usuario la creación del proyecto, con
lo cual en vez de estar una gran cantidad de tiempo en programar un dispositivo/bloque, se le
permite invertir mucho menos tiempo y dedicarse un poco más en la interfaz gráfica y la
interacción con el usuario final. Cada VI consta de dos partes diferenciadas:
Panel Frontal: El Panel Frontal es la interfaz con el usuario, la utilizamos para interactuar con
el usuario cuando el programa se está ejecutando. Los usuarios podrán observar los datos del
programa actualizados en tiempo real(como van fluyendo los datos, un ejemplo sería una
calculadora, donde tu le pones las entradas, y te pone el resultado en la salida). En esta
interfaz se definen los controles (los usamos como entradas, pueden ser botones, marcadores
etc..) e indicadores (los usamos como salidas, pueden ser gráficas ....).
En el panel frontal, encontraremos todo tipos de controles o indicadores, donde cada uno de
estos elementos tiene asignado en el diagrama de bloques una terminal, es decir el usuario
podrá diseñar un proyecto en el panel frontal con controles y indicadores, donde estos
elementos serán las entradas y salidas que interectuaran con la terminal del VI. Podemos
observar en el diagrama de bloques, todos los valores de los controles e idicadores, como van
fluyendo entre ellos cuando se está ejecutando un programa VI.
HERRAMIENTAS DE DESARROLLO
Las herramientas de desarrollo son aquellos programas o aplicaciones que tengan cierta
importancia en el desarrollo de un programa (programación). Pueden ser de importancia vital
(como un ensamblador, un compilador o un editor) o de importancia secundaria, como una IDE
(Integrated Development Environment - Entorno de Desarrollo Integrado).
Compiladores
Los compiladores son programas que "traducen" un fichero de código fuente de cualquier
lenguaje interpretado al lenguaje ensamblador, y llama cuando sea necesario al ensamblador
y al linker (enlazador).
Los más importantes son GCC (para C), G++ (para C++), G77 (para Fortran 77), Microsoft
Visual C++, etc.
Ensambladores
Los ensambladores son aquellos programas que se encargan de desestructurar el código en
lenguaje ensamblador y traducirlo a lenguaje binario. Los archivos en lenguaje binario serán
posteriormente enlazados en un único fichero, el ejecutable.
Enlazadores (Linkers)
Son los programas que enlazan varios ficheros objeto en lenguaje binario para crear un único
fichero, el ejecutable del programa.
Depuradores (Debuggers)
Como su nombre indica, sirve para corregir bugs. Se encargan de ejecutar, paso a paso y
advirtiendo de errores, valores de variables, etc. un programa. Son particularmente útiles
cuando el programa parece estar bien, pero no da el resultado esperado (se cuelga, da
resultados erróneos...).
El más importante es GDB. Actualmente casi todas las IDEs incluyen uno, o deberían.
Editores de texto
Son tan importantes como un compilador (imaginate como programar sin editores), y
actualmente suelen incluir funciones específicamente dedicadas a la programación, como
resaltado de sintaxis, autoindentación, etc.
De esta aplicación se derivan una gran variedad de aplicaciones de las FPGAs, citándose
algunas de ellas a continuación:
Sistemas de visión artificial: en el mundo actual existen cada vez en más número
dispositivos que disponen de un sistema de visión artificial. Ejemplo de esto son las
cámaras de videovigilancia, robots, etc. Muchos de estos dispositivos precisan de un
sistema para conocer su posición, reconocer los objetos de su entorno, reconocer rostros
de personas, y poder actuar e interactuar con ellos de la forma adecuada. Esta
característica requiere manejar unos volúmenes de imágenes muy elevados, tratar dichas
imágenes para detectar objetos, reconocer rostros, etc., en la gran mayoría de ocasiones
en tiempo real.
Sistemas de imágenes médicas: cada vez con más frecuencia se están empleando las
FPGAs para el tratamiento de imágenes biomédicas obtenidas mediante procesos de PET,
escáner CT, rayos X, imágenes tridimensionales, etc. Estos sistemas de visión médica cada
vez precisan de más resolución y de una capacidad de procesamiento mayor, incluso
muchas necesitan poder desarrollarse en tiempo real, por lo que las prestaciones que
ofrecen las FPGAs de frecuencia y procesamiento en paralelo se adaptan muy bien a estas
necesidades.
Radio definida por software: de forma tradicional, una radio consistía en una antena,
encargada de recibir y enviar una señal, y un hardware encargado de procesar esa señal,
filtrarla, modificar su frecuencia, etc. Este hardware no podía modificar de forma notable la
funcionalidad para la cual había sido diseñada. En la actualidad gran parte de esta
funcionalidad se traslada a un dispositivo electrónico, que con frecuencia suele ser una
FPGA, pudiendo limitarse la parte analógica a una antena y a los convertidores ADC y DAC.
La principal ventaja de este tipo de radio es que su funcionalidad viene definida por el diseño
del software, de forma que su modificación o actualización es sencilla y no precisa de la
sustitución de ningún elemento de hardware.