¿Qué tan baratos son los FPGA? Sé que son más caros que los microprocesadores de capacidad comparable, pero me pregunto si existen FPGA que puedan contener un núcleo blando Microblaze que ejecute Linux, mientras que dejan puertas disponibles para implementar la funcionalidad DSP (códecs de medios, por ejemplo) a un costo competitivo con , digamos, un Cortex A8 ($ 20-30 en cantidad. ~ 100).
(Disculpas si mi terminología no es idiomática, es decir, está equivocada. Comente con correcciones o edite directamente).
Respuestas:
Hace poco asistí a una conferencia en línea sobre FPGA con la frase principal "¿Debería su próximo procesador ser un FPGA?".
El FPGA básicamente tiene sentido en cualquier aplicación que requiera flujos de trabajo altamente paralelizables, un ejemplo que se utilizó fue analizar imágenes Full HD para encontrar peatones, por ejemplo.
Lo que debe recordar es que debe inicializar su FPGA cada vez que se enciende, creo que el Xilinx del FPGA (que tiene un núcleo ARM en el chip) es una buena opción, pero probablemente costosa. Examinar los Actel con flash en chip también puede ser útil.
En cuanto al rendimiento, la compañía BDTI hizo un punto de referencia en los cálculos altamente paralelos donde vieron una ganancia de rendimiento de aproximadamente 40x al cambiar a un FPGA. Lo interesante es que compararon chips con costos similares (23 $ vs 28 $, creo).
Aquí están los enlaces que pueden interesarle:
Guía de bolsillo para la selección del procesador
Archivos de la Conferencia FPGA (Registro gratuito, pero solo disponible durante aproximadamente 6 meses después de esta respuesta)
Realmente no se puede comparar el rendimiento de los sistemas basados en FPGA basados en estadísticas MIPS o Mhz. La forma en que se utiliza un FPGA para procesar ciertas tareas es simplemente muy diferente de un Microcontrolador. El diseño de firmware para un FPGA es algo que tiene que hacer usando VHDL, por ejemplo, que es similar al ensamblaje. Un nivel de transferencia de registro (RTL) de abstracción. Algunos entornos se están produciendo para proporcionar más abstracción, pero estos todavía son a menudo específicos del proveedor. Wikipedia tiene una descripción general decente de los idiomas disponibles para programar el código FPGA:
Wikipedia: Programación de FPGA
Wikipedia: Diseño de circuitos digitales
Si tiene dinero para gastar, puede usar los sistemas LabView para construir, por ejemplo, sistemas de medición en tiempo real basados en FPGA. Estos dispositivos necesarios para esto están en un rango de precios completamente diferente (1500 $ y más), pero abren el diseño FPGA a una audiencia mucho más amplia con programación gráfica.
Cada vez más proveedores están proporcionando placas que combinan microcontroladores como un chip ARM con un FPGA para proporcionar funciones adicionales específicas y potencia de procesamiento en paralelo. Un ejemplo de tales productos se puede encontrar aquí: EmbeddedARM: serie FPGA
fuente
¿Qué tan baratos son los FPGA? Según Newark, los FPGA más baratos cuestan alrededor de $ 10 (el Altera Cyclone de nivel más bajo y el Xilinx Spartan de nivel más bajo). Es posible que tengan la capacidad suficiente para ejecutar una CPU simple de 8 bits.
Como es de esperar, incluso las CPU simples de 32 bits (es decir, sin una MMU) requieren aproximadamente 4 veces los recursos FPGA de una CPU de 8 bits. Los FPGA con recursos apenas suficientes para ejecutar una CPU tan simple de 32 bits cuestan alrededor de $ 14. Según tengo entendido, uCLinux ha sido portado a algunas de estas CPUs FPGA soft (como la NIOS II / e); puede que encuentre uClinux adecuado para sus propósitos.
Linux completo requiere una CPU con una MMU (como el NIOS II / f). Una CPU de 32 bits con una MMU requiere aproximadamente 4 veces los recursos FPGA de una CPU de 32 bits sin una MMU; las razones para esto no son tan obvias.
Por lo que puedo ver en la página Xilinx Microblaze , la CPU blanda Microblaze solo se ejecuta en FPGA Xilinx.
Linux ya ha sido portado a varias otras CPU suaves. Si desea ejecutar Linux en los FPGA de otras compañías, puede consultar los puertos de Linux enumerados en "Núcleos de CPU suaves para FPGA" .
Varias de estas CPU blandas, incluida una MMU, caben en una Xilinx Spartan XC3S400A ($ 17 de Avnet).
He oído que algunas CPU blandas de 32 bits, incluida una MMU, son bastante fáciles de configurar como "doble núcleo" en un chip FPGA de $ 20. Los que siguen a "Jan's Razor" podrían intentar exprimir una docena de CPU de 8 bits en el mismo chip.
fuente
En general, FPGA costará mucho más que el mismo dispositivo implementado en silicio, porque hay una gran sobrecarga debido a la reconfigurabilidad. Entonces, no, no encontrarás un FPGA por $ 20-30 que tenga la misma potencia que una CPU ARM que cuesta $ 20-30. Ahora, puede encontrar un FPGA por $ 20-30 que puede realizar tareas específicas mucho más rápido que ese ARM de $ 20-30, pero no podrá superarlo en tareas informáticas generales.
Es por eso que es común ver personas pegando un microcontrolador y un FPGA en la misma placa. ARM y PPC son los dos más comúnmente combinados con un FPGA.
fuente
Al comprar un FPGA, no olvide tener en cuenta el costo de la memoria Flash que contiene el programa FPGA. Eso es fácil de olvidar.
Como diseñador de PCB, los FPGA son un millón de veces más fáciles de diseñar, porque puede reorganizar el pinout como lo desee, incluso después de que se haya hecho la placa. Hay posibles ahorros de costos asociados con la menor cantidad de capas necesarias para enrutar un FPGA.
Para los demás que carecen de FPGA vs. rendimiento de CPU, estoy de acuerdo en cierta medida. Un procesador real será más rápido para hacer cosas reales de procesador que un FPGA que está programado para actuar como un procesador.
Sin embargo, eso no es realmente justo para un FPGA. Las CPU tienen "tiempo limitado"; Si desea hacer más trabajo, necesita más tiempo o un procesador más rápido. Los FPGA son generalmente "de área limitada"; si quieres hacer más trabajo, necesitas un FPGA más grande.
Por ejemplo, supongamos que crea un analizador espectral que maneja una señal de audio mono. Digamos que toma el 70% del tiempo de CPU, y ya eres tan rápido como la CPU puede ir. No puede agregar soporte estéreo, porque la CPU simplemente no es lo suficientemente rápida como para hacer el segundo canal antes de que pueda manejar el primer canal nuevamente. Pero si está utilizando el 70% de la FPGA, puede comprar una FPGA más grande y colocar el segundo canal. No necesita ir más rápido.
Ahora, si transfirió el problema al dominio de Diseño digital, utilizando Máquinas de estado finito y Trayectorias de datos en lugar de una CPU, apostaría dólares a pesos que la FPGA aplastará la CPU, a expensas de aumentar la complejidad en el diseño.
fuente
Xilinx ha hecho recientemente un acuerdo con ARM, que les permitirá colocar núcleos ARM en FPGA. Desafortunadamente, solo estarán disponibles para los dispositivos Virtex de gama alta.
fuente
El precio de FPGA es extraño: una vez que hable con una franquicia, encontrará que los precios cotizados en Digikey, Mouser, etc. pueden ser varias veces más altos de lo que se puede obtener. Lo más barato que sé es Lattice EC1 en QFP100 por un poco menos de GBP3 en qtys de bandeja. Agregue GBP0.40 más o menos para una memoria flash SPI.
Poner las CPU en la estructura FPGA generalmente no es un buen valor en términos de costo de silicio, pero otros factores como el acoplamiento estrecho entre la CPU y la FPGA, y un número reducido de paquetes pueden alterar la compensación óptima contra el uso de una CPU separada.
fuente
Mi mejor suposición hasta ahora es algo así como un Xilinx XC3S400A, que cuesta alrededor de $ 16, pero no estoy seguro de que pueda manejar un MicroBlaze.
fuente
Depende mucho de su aplicación. La aplicación ideal aquí consistiría en una pequeña parte de control (que cabe en un microblaze / NIOS) pero una parte computacional que puede beneficiarse del enorme paralelismo del hardware personalizado. En estos casos, incluso un FPGA de tamaño modesto (Spartan o equivalente) puede superar fácilmente a cualquier CPU de uso general. Pero ese es el mejor de los casos (aunque es muy posible en muchas aplicaciones del mundo real), si su aplicación tiene una parte de control importante o no se asigna fácilmente al hardware, gastar su dinero en hardware fijo (es decir, un ARM) es Probablemente mejor.
fuente
Si necesita una placa en lugar de solo el chip, aquí hay dos opciones recientes de 2013:
fuente
Dado que muchos CPLD actuales de Altera son FPGA con memoria de configuración incorporada, puede obtenerlos para http://www.altera.com/products/devices/cpld/max2/mx2-index.jsp
fuente
En primer lugar, desea ejecutar Linux en un núcleo. ¿Qué tal si se ejecuta en un ARM como algunas otras sugerencias en este hilo? Las MCU son buenas para ejecutar el sistema operativo, pero es un desperdicio de recursos FPGA construir una MCU. Las MCU pueden caber en un área de silicio mucho más pequeña cuando se diseñan a medida para eso y, por lo tanto, se pueden producir de manera más económica. Luego hay otras explicaciones acerca de que los FPGA son realmente buenos en el procesamiento paralelo, algo verdadero, aunque las operaciones lógicas no parecen procesar exactamente. Como usted señala, los FPGA potentes se vuelven caros y, de hecho, necesitan mucha energía. Entonces, una plataforma de bajo costo que puede ejecutar Linux y DSP que necesita los beneficios del paralelismo para una E / S rápida, etc. Eche un vistazo al procesador paralelo XMOS
fuente