Procesamiento digital de señales y hardware
Un filtro con ventana de Blackman atenúa 75 dB en punto flotante. Con coeficientes de 12 bits, apenas 57: la precisión del hardware decide qué filtro se puede implementar.
01Una operación que se repite millones de veces
Casi todo el procesamiento digital de señales se reduce a sumas de productos. Un filtro FIR de \( N \) coeficientes calcula cada muestra de salida con \( N \) multiplicaciones y \( N \) sumas; una FFT, una correlación o un ecualizador también. La operación básica es multiplicar y acumular (MAC):
Un procesador de propósito general hace una MAC en varias instrucciones: dos lecturas de memoria, una multiplicación, una suma y la actualización de punteros. Un procesador digital de señales (DSP) está diseñado para hacerla en un ciclo.
02El hardware de un DSP
| Recurso | Para qué sirve |
|---|---|
| Arquitectura Harvard modificada | Buses separados para instrucciones y datos, y a veces dos de datos: el coeficiente y la muestra se leen en el mismo ciclo |
| Multiplicador y acumulador en hardware | Una MAC por ciclo, con acumulador ancho |
| Direccionamiento circular | La línea de retardo del filtro sin mover datos: el puntero vuelve al principio solo |
| Direccionamiento de bits invertidos | El reordenamiento de la FFT sin cálculo |
| Lazos sin sobrecarga | Repetir un bloque de instrucciones sin instrucciones de salto |
| DMA | Mover las muestras del conversor a la memoria sin usar el núcleo |
Hoy esas ideas están también en los microcontroladores: los Cortex-M4 y M7 tienen instrucciones MAC de un ciclo y operaciones SIMD que procesan dos muestras de 16 bits a la vez. Para anchos de banda mayores se usan FPGA, con cientos de multiplicadores en paralelo, y GPU. La organización general de los procesadores se vio en arquitectura de procesadores.
03Punto fijo: Q15, saturación y bits de guarda
Muchos DSP y casi todos los microcontroladores trabajan en punto fijo: los números son enteros que se interpretan como fracciones. En el formato Q15, un entero de 16 bits representa valores entre −1 y 1 − 2⁻¹⁵:
Los coeficientes también se redondean. Un filtro diseñado en punto flotante, como los de diseño de filtros, cambia su respuesta al cuantificar: el error de cada coeficiente es un ruido que llena la banda de rechazo, y limita la atenuación a unos 6 dB por bit.
Un pasabajos de 51 coeficientes con \( f_c = 0{,}2\, f_s \), diseñado con ventana. La curva gris es la respuesta con coeficientes en punto flotante; la azul, con coeficientes redondeados al número de bits elegido. La atenuación se mide como el peor valor por encima de \( 0{,}26\, f_s \).
04Tiempo real: muestra a muestra o por bloques
Un sistema de tiempo real tiene que terminar de procesar cada muestra antes de que llegue la siguiente. Hay dos formas de organizarlo:
- Muestra a muestra: una interrupción por cada muestra del conversor. La latencia es mínima, pero el costo de entrar y salir de la interrupción se paga en cada muestra.
- Por bloques: el DMA llena un búfer mientras el núcleo procesa el otro (ping-pong). Se procesa un bloque entero con lazos eficientes, a cambio de una latencia de uno o dos bloques. Es la forma habitual en audio y comunicaciones.
La FFT de \( N \) puntos necesita \( (N/2) \log_2 N \) mariposas, cada una con una multiplicación compleja: 5120 para 1024 puntos, contra más de un millón de productos de la DFT directa. Los DSP la aceleran con el direccionamiento de bits invertidos y, algunos, con aceleradores dedicados.
05En el laboratorio
Implementar un FIR de 51 coeficientes en Q15 en un Cortex-M4 con la biblioteca CMSIS-DSP, procesando bloques con DMA desde el conversor, y medir el tiempo de cómputo con un pin de salida.
Procesar una senoidal cerca de plena escala con suma que da la vuelta y con saturación, y escuchar o graficar la diferencia.
Medir la respuesta del filtro implementado con un generador y un analizador, y compararla con la de punto flotante.
06Errores frecuentes
- Diseñar el filtro en punto flotante y cuantificar sin verificar. La atenuación puede caer decenas de dB.
- Acumular en 16 bits. Los productos se suman en un acumulador ancho y se redondea una sola vez al final.
- Dejar que el desborde dé la vuelta. Hay que saturar, o escalar la entrada para que no ocurra.
- Olvidar la latencia del procesamiento por bloques. En un lazo de control puede volver inestable al sistema.
07Autoevaluación
¿Cuántas MAC por segundo necesita un FIR de 128 coeficientes a 96 kHz en estéreo?
\( 128 \cdot 96\,000 \cdot 2 \approx 24{,}6 \) millones.
¿Qué valor representa el entero 16384 en Q15?
0,5.
¿Cuántas mariposas tiene una FFT de 4096 puntos?
\( 2048 \cdot 12 = 24\,576 \).
¿Por qué un acumulador de 40 bits en un DSP de 16?
Los productos son de 32 bits; los 8 bits de guarda permiten sumar hasta 256 productos a plena escala sin desborde.
08Para ampliar
- Steven W. Smith. The Scientist and Engineer's Guide to Digital Signal Processing. California Technical Publishing, 1997. Un texto práctico, con capítulos dedicados a la arquitectura de los DSP.
- Richard G. Lyons. Understanding Digital Signal Processing. 3.ª ed., Prentice Hall, 2010. La aritmética de punto fijo y los trucos de implementación.
- Donald S. Reay. Digital Signal Processing Using the ARM Cortex-M4. Wiley, 2015. Filtros y FFT en tiempo real sobre un microcontrolador, con DMA y CMSIS.