Me he encontrado con infinidad de personas que afirman algo parecido a: "Si, ya tengo el algoritmo jalando en Matlab, sólo es cosa de pasarlo al DSP".

En mi experiencia, eso es de lo mas falso; o mejor dicho, de lo más ingenuo.

El argumento corto dice que Matlab maneja puntos flotantes y con mucha precisión. Pero un DSP normalmente no tiene la misma precisión que Matlab. De hecho, hay muchos DSPs que ni siquiera tienen un procesador de punto flotante.

En esta página pretendo ir poniendo tips y experiencias que voy teniendo con el procesamiento de señales.

A los que no me conocen, les advierto: suelo tener páginas eternamente en construcción.

Herramientas

Cuando programamos un DSP, normalmente tenemos un IDE del fabricante y podemos programarlo tranquilamente en C, pero en sistemas embebidos, hacer un programa que despliegue a pantalla (suponiendo que nuetsro sistema tenga una) es ya algo que toma tiempo.

Aparte de eso, es común desarrollar algoritmos que requieren muchas pruebas. Por eso, normalmente hacemos pruebas en otra plataforma antes de bajarlo al DSP.

Para algoritmos sencillos, a mi me gusta hacerlo en C para PC y de ahí al DSP. Para algoritmos un poco mas complejos, nos conviene empezar en Matlab.

Pero como no todo mundo tiene una licencia de Matlab o de Visual.NET o Borland, recomiendo un par de alternativas libres: Octave en lugar de Matlab y Code::Blocks compilar programas en C para PC.

Seleccionando un DSP

Esta es una de las partes más difíciles. Básicamente porque no hay una respuesta sencilla y directa.

Puedes analizar varias marcas y modelos. Puedes descartar los que no tengan los periféricos que necesitas o los que son demasiado caros. Y aún así, vas a tener varias opciones (sin contar las que no encontraste). Pero ¿cuál tiene mejor desempeño? te vas a preguntar. Y leerás opiniones en newsgroups y analizarás las herramientas de desarrollo y leerás las hojas de datos...

... y más temprano que tarde, vas a estar hablando de MIPS y throughput y términos similares.

Mi mejor recomendación es que termines de leer todo lo que llevo escrito aquí (no olvides seguir los links); pues tu aplicación va a ser diferente a la de alguien más.

Solucionar los problemas

Hay una infinidad de cosas que pueden hacer que un programa "jale" en Matlab, pero no en el DSP. De hecho, hay muchas razones por las que jalaría en C para PC, pero no en C para nuestro DSP.

Aparte de los tips generales, hay otras pequeñas cosas, que no son específicas de los DSPs, y que pueden ayudar a buscar errores:

Optimizar código

Programar en PC (y más aún en Matlab) nos mal-acostumbra a tener recursos ilimitados. O al menos recursos suficientes para no tener que preocuparnos. Pero cuando llega esa hora fatal de hacer correr nuestro algoritmo en el DSP, vamos a tener que optimizar. A veces necesitamos ahorrar memoria, a veces procesamiento.

Pareciera que estas dos variables, memoria y eficiencia, estuvieran peleadas. O visto de otra forma, a veces la mejor forma de ahorrar una, es gastando la otra.

Links

Algunos artículos buenos al respecto:





Comments