viernes, 7 de agosto de 2015

Arquitectura de una FPGA: Bloques DSP

4. Bloques de Multiplicación – Bloques DSP

Las aplicaciones de procesamiento digital de señales (DSP, Digital Signal Processing) basan sus cálculos básicamente en dos elementos: multiplicadores y sumadores. Para cálculos complejos se requiere un gran número de estos elementos, cuya implementación en LUTs resultaría muy compleja, consumiendo gran cantidad de la lógica disponible en el FPGA. Por ello, las generaciones nuevas de FPGAs incluyen en su arquitectura elementos lógicos configurables dedicados a la multiplicación (Spartan 3E) o los FPGAs más avanzados, que permiten hacer la multiplicación y la suma en paralelo (Virtex 4/5/6).

Figura 1. Bloque de Multiplicación en el Spartan 3E

La familia de FPGAs Spartan 3 provee en cada FPGA de 4 a 36 multiplicadores dedicados, detallados en la Figura 1, Estos multiplicadores están localizados cerca de los bloques de memoria RAM a fin de tener un mínimo retardo para la lectura y/o escritura de los datos. Cada multiplicador ejecuta la multiplicación P = A x B, donde A y B son datos de 18 bits en complemento a dos, y P es el resultado de 36 bits, también en C2. Los registros AREG, BREG y PREG son opcionales, pero su uso en una configuración tipo pipelining beneficia el rendimiento total del sistema.

En el rango de los FPGAs de más alto rendimiento, y por ello mucho más caros, se encuentran disponibles bloques más complicados llamados bloques DSP, o más precisamente DSP48 (ya se entenderá porque). La Figura 22 detalla la lógica interna del DSP48 de un Virtex-5 (similar al disponible en el Virtex-6).

Figura 22 - Bloque DSP en un Virtex-5/6

Viendo en detalle la Figura 2, se observa que consiste en un multiplicador de 25x18 bits en C2 y un acumulador de 48 bits. En conjunto pueden llegar trabajar a frecuencias de hasta 550MHz, lo que hace al FPGA un dispositivo muy adecuado para el cálculo en tiempo real de variables aritméticas complejas. Si se tiene en cuenta que un FPGA tipo Virtex-5 puede tener hasta 1056 bloques DSP y, más importante aún, es que pueden trabajar todos al mismo tiempo en paralelo. En muchas aplicaciones el FPGA a desplazados a los procesadores dedicados DSP por su paralelismo y alto rendimiento. Cuando se necesitan hacer cálculos complejos, por ejemplo Correlaciones, Filtros FIR, Convoluciones, etc.; se usa un flujo de diseño que comienza en MatLab-SimuLink y termina con la herramienta del fabricante del FPGA. Esto facilita enormemente el proceso de implementación de cálculos matemáticos complejos y aprovecha toda la capacidad del FPGA.

No hay comentarios:

Publicar un comentario