Вы находитесь на странице: 1из 12

herramientas de desarrollo.

Aplicaciones.

Comparación entre Microcontroladores y FPGA'S

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:

 En realidad desde mi punto de vista no existe ninguna, excepto cuando no se tiene


experiencia en programación puede tardarse el desarrollo de alguna rutina en
comparación con los otros lenguajes.
 El compilador para este lenguaje es el MPLAB IDE el cual se consigue totalmente gratuito
en la página de Microchip y constantemente están sacando nuevas versiones, debe
aclararse que este solo funciona bajo ambiente Windows. Para Linux existe un versión
alternativa llamada:PIKLAB la cual presenta simuladores, editores, ensambladores y
soporta una gran cantidad de compiladores C para PIC.

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

VHDL es el acrónimo que representa la combinación de VHSIC y HDL, donde VHSIC es el


acrónimo de Very High Speed Integrated Circuit y HDL es a su vez el acrónimo de Hardware
Description Language.

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:

Verilog es un lenguaje de descripción de hardware (HDL, del Inglés Hardware Description


Language) usado para modelar sistemas electrónicos. El lenguaje, algunas veces llamado
Verilog HDL, soporta el diseño, prueba e implementación de circuitos analógicos, digitales y
de señal mixta a diferentes niveles de abstracción.

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:

ABEL es la abreviatura de Advanced Boolean Expression Language. Es un lenguaje de


descripción de hardware y un conjunto de herramientas de diseño para
programar dispositivos lógicos programables (PLDs).

En un intento de reducir la complejidad y el tiempo de desarrollo en fases de prototipaje


rápido, y para validar un diseño en HDL, existen varias propuestas y niveles de abstracción del
diseño. Entre otras, National Instruments LabVIEW FPGA propone un acercamiento de
programación gráfica de alto nivel.

4. LabVIEW

Principales características

Su principal característica es la facilidad de uso, válido para programadores profesionales


como para personas con pocos conocimientos en programación pueden hacer programas
relativamente complejos, imposibles para ellos de hacer con lenguajes tradicionales. También
es muy rápido hacer programas con LabVIEW y cualquier programador, por experimentado
que sea, puede beneficiarse de él. Los programas en LabView son llamados instrumentos
virtuales (VIs) Para los amantes de lo complejo, con LabVIEW pueden crearse programas de
miles de VIs (equivalente a millones de páginas de código texto) para aplicaciones complejas,
programas de automatizaciones de decenas de miles de puntos de entradas/salidas,
proyectos para combinar nuevos VIs con VIs ya creados, etc. Incluso existen buenas prácticas
de programación para optimizar el rendimiento y la calidad de la programación. El labView
7.0 introduce un nuevo tipo de subVI llamado VIs Expreso (Express VIS). Estos son VIs
interactivos que tienen una configuración de caja de diálogo que permite al usuario
personalizar la funcionalidad del VI Expreso. El VIs estándard son VIs modulares y
personalizables mediante cableado y funciones que son elementos fundamentales de
operación de LabView.

Presenta facilidades para el manejo de:

Interfaces de comunicaciones:
 Puerto serie
 Puerto paralelo
 GPIB
 PXI
 VXI
 TCP/IP, UDP, DataSocket
 Irda
 Bluetooth
 USB
 OPC...

Capacidad de interactuar con otros lenguajes y aplicaciones:

 DLL: librerías de funciones


 .NET
 ActiveX
 Multisim
 Matlab/Simulink
 AutoCAD, SolidWorks, etc
 Herramientas gráficas y textuales para el procesado digital de señales.
 Visualización y manejo de gráficas con datos dinámicos.
 Adquisición y tratamiento de imágenes.
 Control de movimiento (combinado incluso con todo lo anterior).
 Tiempo Real estrictamente hablando.
 Programación de FPGAs para control o validación.
 Sincronización entre dispositivos.

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 ....).

Diagrama de Bloques: es el programa propiamente dicho, donde se define su funcionalidad,


aquí se colocan íconos que realizan una determinada función y se interconectan (el código
que controla el programa --. Suele haber una tercera parte icono/conector que son los
medios utilizados para conectar un VI con otros VIs.--

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.

La Figura 1 muestra un Diagrama de Bloques de un programa en el que se genera un array de


100 elementos aleatorios, a continuación se hace la FFT de este array y se muestra en una
gráfica:

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.

Los más importantes son tas, gas, nasm...

Enlazadores (Linkers)

Son los programas que enlazan varios ficheros objeto en lenguaje binario para crear un único
fichero, el ejecutable del programa.

El más importante es ld.

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.

Grandes editores de texto son GNU Emacs, Vim, Scite, Notepad++...

APLICACIONES GENERALES DE UNA FPGA

El rango de aplicaciones de las FPGAs es muy amplio, debido a la versatilidad y a la flexibilidad


de estos dispositivos. En la siguiente gráfica puede apreciarse la distribución de las
aplicaciones de las FPGA en el año 2008.
La principal aplicación de las FPGAs está orientada al procesamiento digital de señales (DSP),
la cual es empleada en comunicaciones, procesado de datos, etc. La elección de una FPGA
para aplicaciones de tratamiento de señal se debe a su alta frecuencia de trabajo, a su
capacidad de procesamiento en paralelo, y a su bajo precio en comparación con los ASICs. En
general, la lógica de un CPLD es insuficiente para realizar dicho procesamiento.

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.

 Codificación y encriptación: la seguridad en el envío de mensajes es fundamental en la


vida diaria, por ejemplo a la hora de enviar un email o de realizar una compra por internet,
y lo es más aún en el ámbito militar, aeronáutico y gubernamental. En este terreno, la
encriptación eficiente y segura de mensajes se convierte en un objetivo prioritario. Las
FPGAs pueden aportar en este terreno su capacidad de manejar grandes volúmenes de
información y sus bloques optimizados para realizar operaciones aritméticas.

 Radioastronomía: la radioastronomía es la ciencia que se encarga de estudiar los


fenómenos que ocurren en el espacio mediante la captación de la radiación
electromagnética procedente de éste. De forma similar a las aplicaciones anteriores,
precisa del procesamiento de una gran cantidad de información en el que la FPGA puede
aportar todo su potencial.

 Reconocimiento de voz: el reconocimiento de la persona que habla es una técnica


empleada en seguridad, sistemas de recuperación de información, etc., y se espera que en
el futuro su ámbito de aplicación aumente. En este contexto, la FPGA resulta muy eficiente
a la hora de realizar la comparación de la voz de una persona con unos patrones
previamente almacenados.

 Aeronáutica y defensa: además de las mencionada previamente, existen multitud de


aplicaciones aeronáuticas y de defensa que emplean FPGAs debido a las buenas
características que éstas ofrecen.

Para los microcontroladores a este pdf…


http://galia.fc.uaslp.mx/~cantocar/microcontroladores/SLIDES_8051_PDF/3_APLICA.PDF

Вам также может понравиться