lunes, 1 de junio de 2009

De la importancia de los algoritmos

Los algoritmos son secuencias ordenadas de operaciones que permiten hallar la solución a un problema. Un problema de solución única puede tener diferentes formas de ser resuelto. Pongamos un ejemplo simple: Multiplicar 99*54. La forma clásica, la que se aprende en la escuela será: Cuatro por nueve... [ ]... total 5346. Sin embargo, multiplicar puede verse como sumar muchas veces. Así pues: 99+99....+99 (54 veces)= 5346. Los dos métodos resuelven el problema por distintos caminos llegado, obviamente, a la misma solución.

Claramente, la primera solución es más rápida, aunque requiere más conocimiento. La misión de un algoritmo de cálculo utilizable en SDR es la de ofrecer un conjunto de pasos que sean fáciles de implementar en un calculador digital. El cálculo requiere tiempo. Y el cálculo requiere energía. Y la velocidad de cálculo está limitada en una máquina.

Con el fin de no desperdiciar la capacidad de cálculo disponible se deben desarrollar estrategias -algoritmos- que permitan obtener el máximo rendimiento de un dispositivo de cálculo. Un algoritmo adecuado permite ahorrar tiempo de proceso, espacio en el silicio que implementa el calculador, energía o varios de ellos de forma simultánea.

Es conocido el uso en SDR del algoritmo FFT. La FFT -Fast Fourier Transform- es un algoritmo que permite efectuar transformadas de Fourier sobre un conjunto de muestras de forma mucho más rápida que empleando directamente las ecuaciones originales de Fourier. Gracias a ello podemos tener en las pantallas de nuestros ordenadores espectros sobre un amplio ancho de banda. Si no fuese gracias a la FFT, las necesidades de cálculo harían la visualización de un espectrograma en nuestros ordenadores actuales algo muy difícil cuando no imposible.

Existen numerosos ejemplos de algoritmos que nos han facilitado máquinas efectivas. No puedo pasar sin mencionar uno de ellos: El algoritmo CORDIC. Este algoritmo permite calcular el valor de una función trigonométrica sin emplear una expansión polinómica. La solución a un polinomio precisa productos. Un multiplicador requiere una circuitería relativamente compleja. El algoritmo CORDIC no precisa productos. Gracias al empleo del algoritmo, un equipo de Hewlett Packard pudo desarrollar la que fue la primera calculadora científica de bolsillo, la HP-35, en 1972. El algoritmo no se había desarrollado hacía demasiado tiempo. Fue en 1959.

Uno de los algoritmos más usados para proceso de señales de alta velocidad en SDR es el filtro CIC. Este filtro es el corazón de un DDC o DUC (Digital Down/Up Converter). Estos filtros remuestrean la señal -obtienen más o menos muestras para representar la misma señal en un ancho de banda diferente- y al tiempo la filtran para que desaparezcan los "alias". El filtro CIC es de arquitectura simple y al igual que el CORDIC se implementa sin emplear multiplicadores. ¡Justo lo que se espera de un algoritmo para SDR!. Este tampoco es demasiado viejo: 1981.

No hay comentarios:

Publicar un comentario