DSP en FPGA ... ?


Tradicionalmente el tratamiento digital de señales estaba reservado a un grupo especial de microprocesadores conocidos bajo la denominación genérica de "DSP".

En los últimos años esto cambió con la entrada en el mercado de un tipo diferente de componente, los FPGA.

El proyectista del sistema se ve entonces enfrentado a una nueva pregunta :

¿ Uso un FPGA para implementar mi función DSP ?

Diseñar algoritmos en hardware es diferente a diseñarlos en software.

En hardware los recursos disponibles, la metodología de proyecto y verificación es diferente.
Los lenguajes usados son diferentes y expresan conceptos diferentes.

Cuando se desarrolla en hardware conceptos poco comunes al profesional de software como diseños síncronos, reloj, pipe-line, aritmética distribuida, procesos concurrentes y otros, entran en juego le pueden complicar la vida al proyectista de software que intenta reproducir su algoritmo en hardware.
Algunas herramientas tratan de crear una capa de abstracción de hardware para permitir una implementación transparente de los algoritmos, pero ignorar conceptos básicos de diseño hardware es peligroso y por lo general un camino a soluciones poco optimizadas o directamente al fracaso.

Trasladar algoritmos creados en software para hardware exige un análisis detallado de las funcionalidades requeridas y un replanteo del algoritmo para su posterior implementación en hardware.


Algunas razones para usar Microprocesadores DSP :

  • Para el proyectista en software los niveles de abstracción son mucho mayores.
  • La mayoría de los algoritmos comunes DSP ya están disponibles en software.
  • Proyectistas con experiencia en Microprocesadores DSP son más simples de encontrar y generalmente mas económicos.
  • Se dispone de buenas herramientas de diseño, algunas en OpenSource.

Por otro lado usando los FPGA :

  • La performance obtenida difícilmente puede obtenerse con un Microprocesador DSP.
  • Como regla general el proceso será mas rápido y requerirá una frecuencia de operación menor.
  • A funcionalidades equivalentes consume menos que un Microprocesador DSP.
  • Se pueden implementar funciones especializadas en hardware auxiliares al algoritmo DSP.
  • El número de componentes en la placa puede reducirse
  • El stock de componentes puede reducirse

Regresando a la pregunta inicial :

Las recetas son poco aplicables, cada caso debe ser analizado con responsabilidad y considerando el proyecto en sus distintos aspectos. Son varios los factores que afectan la decisión como ser económicos, plazos, componentes, "know-how", diseñar, comprar, diseñar y comprar, tercerizar, obsolescencia, mantenimiento del producto, etc.


Algunos puntos para reflexionar :

  • Si la función es común a otras aplicaciones posiblemente ya exista la función pronta en software en lenguage de software de las familias del C, Pascal, Java, etc para algún Microprocesador DSP del mercado. Si la implementación cumple las especificaciones, posiblemente esta sea la solución mas simple de implementar.
  • La tendencia actual de la relación precio/prestaciones de los FPGA los hace una opción muy atractiva para la implementación de funciones DSP.
  • En FPGA se puede aplicar el concepto de "System on Chip" optimizando las funciones entre software y hardware.
  • Correctamente implementadas las funcionalidades DSP en FPGA son varias veces mas rápidas y eficientes que implementadas en software.
  • El uso de FPGA requiere de un especialista en FPGA.