FPGA, ¿Qué es? Todo lo que necesitas saber de los chips y su programación

¿Qué es una FPGA?

Las Matrices de Puertas Programables en Campo, Field Programmable Gate Arrays, (FPGAs) son dispositivos semiconductores que se basan en una matriz de bloques lógicos configurables (CLBs) conectados a través de interconexiones programables. Las FPGAs pueden ser reprogramadas según los requisitos de aplicación o funcionalidad deseados después de la fabricación. Esta característica distingue a las FPGAs de los circuitos integrados específicos para aplicaciones (ASIC), que se fabrican a medida para tareas de diseño específicas. Aunque hay disponibles FPGAs programables una sola vez (OTP), los tipos dominantes están basados en SRAM que pueden ser reprogramados a medida que el diseño evoluciona.

Esencialmente, una FPGA es un circuito de hardware que un usuario puede programar para llevar a cabo una o más operaciones lógicas. Llevado un paso más allá, las FPGAs son circuitos integrados, o ICs, que son conjuntos de circuitos en un chip, que es la parte del “array”. Esos circuitos, o arrays, son grupos de puertas lógicas programables, memoria u otros elementos.

Con un chip estándar, como el módulo Intel Curie en una placa Arduino o una CPU en su portátil, el chip está totalmente cerrado. No puede ser programado; obtienes lo que obtienes. Con estos chips, un usuario puede escribir software que se carga en un chip y ejecuta funciones. Ese software puede ser reemplazado o eliminado más tarde, pero el chip de hardware permanece sin cambios.

Con una FPGA, no hay ningún chip. El usuario programa el circuito o circuitos de hardware. La programación puede ser una simple y sencilla puerta lógica (una función Y u O), o puede implicar una o más funciones complejas, incluyendo funciones que, en conjunto, actúan como un procesador integral de múltiples núcleos.

FPGA - FPGA, ¿Qué es? Todo lo que necesitas saber de los chips y su programación ¿Por qué usar una FPGA?

Creo que todos podemos estar de acuerdo en que los microcontroladores se han convertido en un componente dominante en el diseño electrónico moderno. Son baratos y muy versátiles, y hoy en día a menudo sirven como la primera introducción de una persona al mundo de la electrónica. Es natural que sigamos usando componentes con los que estamos familiarizados y, a medida que los microcontroladores se vuelven cada vez más poderosos, hay cada vez menos necesidad de considerar soluciones alternativas a nuestros desafíos de diseño. Sin embargo, un microcontrolador se construye alrededor de un procesador y los procesadores vienen con limitaciones fundamentales que deben ser reconocidas y, en algunos casos, superadas.

Entonces, ¿cuándo un usuario necesitaría usar una FPGA sobre un microcontrolador? La respuesta se reduce a software vs. hardware.

Un procesador cumple sus tareas ejecutando instrucciones de forma secuencial. Esto significa que las operaciones del procesador están intrínsecamente limitadas: la funcionalidad deseada debe adaptarse a las instrucciones disponibles y, en la mayoría de los casos, no es posible realizar múltiples tareas de procesamiento simultáneamente.

El conjunto de instrucciones está diseñado para ser muy versátil y hoy en día las instrucciones pueden ejecutarse a frecuencias extremadamente altas; sin embargo, estas características no eliminan las desventajas de un enfoque del diseño digital basado en el software.

La alternativa es un enfoque basado en el hardware. Sería sumamente conveniente que cada nuevo diseño se construyera en torno a un CI digital que implementara la funcionalidad exacta requerida por el sistema: sin necesidad de escribir software, sin limitaciones de conjuntos de instrucciones, sin retrasos de procesamiento, sólo un único CI que tenga pines de entrada, pines de salida y circuitería digital que corresponda exactamente a las operaciones necesarias. Esta metodología es poco práctica más allá de toda descripción porque implicaría diseñar un ASIC (circuito integrado específico de la aplicación) para cada placa. Sin embargo, podemos aproximar esta metodología utilizando FPGAs.

diagrama FPGAs - FPGA, ¿Qué es? Todo lo que necesitas saber de los chips y su programación

Puedes usar una FPGA cuando necesites optimizar un chip para una carga de trabajo particular, o cuando sea probable que necesites hacer cambios en el nivel del chip más adelante. Los usos de las FPGAs cubren una amplia gama de áreas: desde equipos para vídeo e imágenes, hasta circuitos para aplicaciones informáticas, automovilísticas, aeroespaciales y militares, además de electrónica para procesamiento especializado y más. Las FPGAs son particularmente útiles para la creación de prototipos de circuitos integrados específicos para aplicaciones (ASIC) o procesadores. Una FPGA puede reprogramarse hasta que el diseño del ASIC o del procesador sea definitivo y esté libre de fallos, y comience la fabricación real del ASIC definitivo. El propio Intel utiliza FPGAs para hacer prototipos de nuevos chips.

De hecho, Intel adquirió recientemente una compañía llamada eASIC como una forma de acelerar su proceso de diseño y prototipado. eASIC produce algo llamado “ASIC estructurado”, que se basa en un modelo que se encuentra entre un ASIC y una FPGA. Como explica este artículo de AnandTech, con un ASIC estructurado:

“Los ingenieros pueden crear un diseño usando una FPGA, entonces en lugar de gastar tiempo optimizando el diseño del circuito, cocinan el diseño fijo en una única máscara de diseño para la fabricación. Al ser un diseño fijo como un ASIC, es más rápido que un diseño variable, pero sin los beneficios en el área del troquel de los ahorros de energía del ASIC. Sin embargo, fue diseñado en tiempo de FPGA, en lugar de tiempo de ASIC (hasta seis meses ahorrados), y ahorra energía a través de su diseño fijo”.

¿Cuál es la diferencia entre un ASIC y un FPGA?

El ASIC y las FPGAs tienen diferentes proposiciones de valor, y deben ser evaluadas cuidadosamente antes de elegir una sobre la otra. Abunda la información que compara las dos tecnologías. Mientras que en el pasado se solían seleccionar las FPGA para diseños de menor velocidad/complejidad/volumen, las FPGA de hoy en día empujan fácilmente la barrera de los 500 MHz de rendimiento. Con incrementos de densidad lógica sin precedentes y un sinfín de otras características, como procesadores embebidos, bloques DSP, relojes y series de alta velocidad a un precio cada vez más bajo, las FPGAs son una propuesta convincente para casi cualquier tipo de diseño.

Beneficios por el uso de las FPGAs

¿Por qué preferirías usar una FPGA para tu cálculo en lugar de la CPU o GPU más común? Las diferencias con las GPUs y CPUs están en las siguientes áreas:

  • Latencia: ¿Cuánto tiempo se tarda en calcular algo? Las FPGAs son buenas en esto.
  • Conectividad: ¿Qué entrada/salida podemos conectar y con qué ancho de banda? Las FPGAs se pueden conectar directamente a las entradas y pueden ofrecer un ancho de banda muy alto.
  • Coste de ingeniería: ¿Cuánto esfuerzo cuesta expresar el cálculo? El coste de ingeniería es típicamente mucho más alto que para las arquitecturas basadas en instrucciones, por lo que las ventajas deben valer la pena.
  • Eficiencia energética: ¿Cuánta energía cuesta programar algo? A menudo esto se enumera como un gran beneficio de las FPGAs, pero si las FPGAs son mejores que las CPU o las GPU depende realmente de la aplicación.

Flexibilidad

  • La funcionalidad de la FPGA puede cambiar con cada encendido del dispositivo. Así que, cuando un ingeniero de diseño quiere hacer un cambio, puede simplemente descargar un nuevo archivo de configuración en el dispositivo y probar el cambio.
  • A menudo, se pueden hacer cambios en la FPGA sin necesidad de hacer costosos cambios en la placa de PC.
  • Los ASSP y ASIC tienen una funcionalidad de hardware fija que no puede ser cambiada sin un gran costo y tiempo

Aceleración

  • Conseguir que los productos salgan al mercado más rápido y/o aumentar el rendimiento del sistema.
  • Los FPGAs se venden “off the shelf” vs. los ASICs (que requieren ciclos de fabricación de muchos meses).
  • Debido a la flexibilidad de las FPGAs, los fabricantes de equipos originales pueden enviar los sistemas tan pronto como el diseño funciona y se prueba.
  • Las FPGAs proporcionan funciones de descarga y aceleración a las CPU, acelerando eficazmente el rendimiento de todo el sistema.

Integración

Los FPGAs de hoy en día incluyen procesadores integrados, E/S de transceptores a 28 Gbps (o más rápido), bloques de RAM, motores DSP y más. Más funciones dentro de la FPGA significan menos dispositivos en la placa de circuito, aumentando la fiabilidad al reducir el número de fallos de los dispositivos.

Coste total de propiedad (TCO)

  • Aunque los ASIC pueden costar menos por unidad que una FPGA equivalente, su construcción requiere un gasto no recurrente (NRE), costosas herramientas de software, equipos de diseño especializados y largos ciclos de fabricación.
  • Muchos modelos de FPGAs admiten ciclos de vida largos (15 años o más), lo que evita el costo de rediseñar y recalificar el equipo de producción de los fabricantes de equipos originales si uno de los dispositivos electrónicos a bordo llega al final de su vida útil (EOL).
  • Las FPGAs reducen el riesgo, permitiendo que los sistemas prototipo se envíen a los clientes para pruebas de campo, mientras que siguen proporcionando la capacidad de hacer cambios rápidamente antes de pasar a la producción en serie.

Aplicaciones de las FPGA

Debido a su naturaleza programable, los FPGAs son ideales para muchos mercados diferentes.

  • Prototipos ASIC – La creación de prototipos ASIC con FPGAs permite un rápido y preciso modelado del sistema SoC y la verificación del software incorporado
  • Audio – Las FPGAs  y las plataformas de diseño específicas permiten mayores grados de flexibilidad, un tiempo de comercialización más rápido y menores costos generales de ingeniería no recurrentes (NRE) para una amplia gama de aplicaciones de audio, comunicaciones y multimedia.
  • Automotriz – Soluciones de silicio automotriz e IP para sistemas de entrada y asistencia al conductor, comodidad, conveniencia e información de entretenimiento en el vehículo.
  • Broadcast & Pro AV – Adaptarse a los requerimientos cambiantes más rápido y alargar los ciclos de vida de los productos con Plataformas de Diseño Dirigido a la Difusión y soluciones para sistemas de difusión profesionales de alta gama.
  • Electrónica de consumo: soluciones rentables que permiten aplicaciones de consumo de última generación y con todas las funciones, como teléfonos convergentes, pantallas planas digitales, aparatos de información, redes domésticas y decodificadores residenciales.
  • Centro de datos – Diseñado para servidores, redes y aplicaciones de almacenamiento de gran ancho de banda y baja latencia para aportar un mayor valor a los despliegues en la nube.
  • Computación de alto rendimiento y almacenamiento de datos – Soluciones para almacenamiento conectado a la red (NAS), red de área de almacenamiento (SAN), servidores y aparatos de almacenamiento.
  • Industrial – Las FPGAs y las plataformas de diseño específicas para la industria, la ciencia y la medicina (ISM) permiten mayores grados de flexibilidad, un tiempo de comercialización más rápido y menores costes generales de ingeniería no recurrentes (NRE) para una amplia gama de aplicaciones, como la vigilancia y las imágenes industriales, la automatización industrial y los equipos de imágenes médicas.
  • Médicas – Para aplicaciones de diagnóstico, monitorización y terapia, hay modelos de FPGA que se pueden utilizar para cumplir una serie de requisitos de procesamiento, visualización e interfaz de E/S.
  • Seguridad – FPGA con soluciones que satisfacen las necesidades cambiantes de las aplicaciones de seguridad, desde el control de acceso hasta los sistemas de vigilancia y seguridad.
  • Procesamiento de vídeo e imagen – Las FPGAs permiten mayores grados de flexibilidad, un tiempo de comercialización más rápido y menores costes generales de ingeniería no recurrentes (NRE) para una amplia gama de aplicaciones de vídeo e imagen.
  • Comunicaciones por cable – Soluciones de extremo a extremo para el procesamiento de paquetes de tarjetas de red reprogramables, Framer/MAC, placas base en serie y más.
  • Comunicaciones inalámbricas – RF, banda base, conectividad, transporte y soluciones de redes para equipos inalámbricos, abordando estándares como WCDMA, HSDPA, WiMAX y otros.

Última actualización el 2020-04-02 / Enlaces de afiliados / Imágenes de la API para Afiliados

Pin It on Pinterest

Shares