¿Qué es un FPGA?

Dic 20, 2013

Un FPGA (del inglés Field Programmable Gate Array) es un dispositivo semiconductor que contiene bloques de lógica cuya interconexión y funcionalidad puede ser configurada mediante un lenguaje de descripción especializado.
La lógica programable puede reproducir desde funciones tan sencillas como las llevadas a cabo por una puerta lógica o un sistema combinacional hasta complejos sistemas en un chip.

Post 78 Diagrama FPGA

Diagrama FPGA

En un FPGA existen dentro un altísimo número de elementos básicos de lógica electrónica (como puertas, biestables, etc.) y por encima de ellas (en la oblea) hay unas matrices de interconexión que pueden programarse. Es como tener unos cuantos cientos o miles de NANDs, biestables, etc. y que podemos decidir cuáles conectan con cuáles; eso básicamente es un FPGA. Se usan lenguajes como VHDL, ABEL, y otros para poder describir qué queremos hacer con el circuito. La descripción en estos lenguajes puede estar muy ligada al hardware o puede ser realizada en más alto nivel, puesto que los compiladores de estos lenguajes acaban sabiendo realizar los ajustes necesarios en la matriz de conexiones.

FPGA, microprocesador, microcontrolador, DSP

Generalmente si se acude a un diseño con FPGA es porque se necesitan prestaciones críticas, que no es fácil asegurar por otra vía, mucho más simple de un procesador, un microprocesador, un microcontrolador, un DSP, o del tipo que sea. Es por ello que al final en el uso de FPGAs se suelen hacer especificaciones todavía cercanas al mundo del diseño hardware, aunque con la enorme ventaja de que se realiza por lenguaje y volcado al dispositivo, con lo que es posible el rediseño y la corrección de errores por reprogramación.

Post 78 FPGA

FPGA

Un DSP es un tipo de microprocesador especializado para tareas de procesado de señal. En las técnicas de procesado digital de señal hay determinado tipo de operaciones que son muy habituales. Por ejemplo realizar un filtro en digital supone multiplicar una colección de las últimas muestras de la señal por los respectivos valores (fijos) de la respuesta impulsiva del filtro, y sumar todos esos productos parciales para obtener el resultado final. Los DSPs tienen una arquitectura interna que permite hacer esas cosas a buena velocidad. Suelen tener varios buses de datos independientes ligados a un multiplicador y un acumulador; tienen instrucciones en su juego de instrucciones máquina que realizan todas esas funciones; poseen modos de direccionamiento específicamente diseñados para procesado digital.

Desde el punto de vista del uso, los DSP se pueden programar en su propio lenguaje máquina, pero lo normal es programarlos en algún lenguaje de alto nivel (C y derivados) y dejar que el compilador tome las decisiones de cómo llevarlo adelante en el procesador. Podemos después medir el rendimiento del resultado y si en alguna parte se está gastando más tiempo de lo debido esas rutinas pueden rediseñarse directamente en máquina y enlazar con el resto, para así asegurar mejores prestaciones.

Actualmente hay mucho híbrido. Hay FPGAs que incluyen un pequeño módulo de DSP junto a las puertas, hay DSPs que tienen una sección de FPGA dentro, unos y otros pueden llevar dentro conversores A/D y D/A, módulos para comunicación serie y USB, etc. De tal forma que, al reunirlos, en un solo chip podemos desarrollar todo el sistema.

Ing. Carlos Maiocchi
Gerente General – Equaphon