¿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 suave de Microblaze que ejecute Linux, mientras 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 cant. ~100).
(Disculpas si mi terminología no es idiomática, es decir, incorrecta. Comente con correcciones o edite directamente).
Recientemente asistí a una conferencia en línea sobre FPGA con el discurso de apertura "¿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 el análisis de 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 Xilinx de FPGA viene con (que tiene un núcleo ARM en el chip) es una buena opción, pero probablemente costosa. También puede ser útil mirar los Actel con flash en chip.
En cuanto al rendimiento, la empresa BDTI hizo un punto de referencia en cálculos altamente paralelos donde vieron una ganancia de rendimiento de aproximadamente 40 veces al cambiar a un FPGA. Lo interesante es que compararon chips con costos similares (23$ vs 28$ creo).
Aquí tienes los enlaces que te pueden interesar:
Guía de bolsillo para la selección del procesador
Realmente no se puede comparar el rendimiento de los sistemas basados en FPGA según las estadísticas de MIPS o Mhz. La forma en que se usa un FPGA para procesar ciertas tareas es simplemente muy diferente a la de un microcontrolador. El diseño de firmware para un FPGA es algo que tiene que hacer usando VHDL, por ejemplo, que es similar a ensamblar. Un nivel de transferencia de registro (RTL) de abstracción. Se están produciendo algunos entornos para proporcionar más abstracción, pero a menudo siguen siendo 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 sistemas de medición en tiempo real basados en FPGA, por ejemplo. Estos dispositivos necesarios para esto tienen un rango de precios completamente diferente (1500 $ y más), pero abren el diseño de FPGA a una audiencia mucho más amplia con programación gráfica.
Cada vez más proveedores ofrecen placas que combinan microcontroladores, como un chip ARM con un FPGA, para proporcionar características adicionales específicas y potencia de procesamiento en paralelo. Puede encontrar un ejemplo de tales productos aquí: EmbeddedARM: serie FPGA
¿Qué tan baratos son los FPGA? Según Newark, los FPGA más baratos cuestan alrededor de $ 10 (el Altera Cyclone de gama más baja y el Xilinx Spartan de gama más baja). Es posible que tengan suficiente capacidad para ejecutar una CPU simple de 8 bits.
Como era de esperar, incluso las CPU de 32 bits simples (es decir, sin MMU) requieren aproximadamente 4 veces los recursos de FPGA de una CPU de 8 bits. Los FPGA con recursos apenas suficientes para ejecutar una CPU de 32 bits tan simple cuestan alrededor de $ 14. Tengo entendido que uCLinux se ha portado a algunas de estas CPU blandas de FPGA (como NIOS II/e); es posible que uClinux sea adecuado para sus propósitos.
Linux completo requiere una CPU con una MMU (como NIOS II/f). Una CPU de 32 bits con MMU requiere aproximadamente 4 veces los recursos de FPGA de una CPU de 32 bits sin MMU; las razones de esto no son tan obvias.
Por lo que puedo ver en la página de Xilinx Microblaze , la CPU blanda de Microblaze solo se ejecuta en Xilinx FPGA.
Linux ya ha sido portado a varias otras CPU blandas. Si desea ejecutar Linux en los FPGA de otra empresa, es posible que desee ver los puertos de Linux enumerados en "Núcleos de CPU blandos para FPGA" .
Varias de estas CPU blandas, incluida una MMU, caben en un Xilinx Spartan XC3S400A ($ 17 de Avnet).
Escuché 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. Aquellos que sigan a "Jan's Razor" podrían intentar incluir una docena de CPU de 8 bits en el mismo chip.
En general, FPGA costará mucho más que el mismo dispositivo implementado en silicio, porque hay muchos gastos generales debido a la reconfigurabilidad. Entonces no, no encontrará 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á vencerlo en tareas informáticas generales.
Esta es la razón por la que es común ver personas que colocan un microcontrolador y un FPGA en la misma placa. ARM y PPC son los dos más comúnmente combinados con un FPGA.
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 quiera, incluso después de que se haya fabricado la placa. Hay ahorros de costos potenciales asociados con la menor cantidad de capas necesarias para enrutar un FPGA.
Para los demás que critican el rendimiento de FPGA vs. CPU, estoy de acuerdo hasta cierto punto. Un procesador real será más rápido para hacer cosas propias del procesador que un FPGA que está programado para actuar como un procesador.
Sin embargo, eso no es 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 suelen ser de "área limitada"; si quiere hacer más trabajo, necesita 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 la 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 para hacer el segundo canal antes de que deba 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 trasladara el problema al dominio del diseño digital, utilizando máquinas de estados finitos y rutas de datos en lugar de una CPU, apostaría dólares a pesos a que la FPGA aplastará a la CPU, a expensas de aumentar la complejidad del diseño.
Xilinx ha llegado recientemente a 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.
Los precios de FPGA son extraños: una vez que habla con un distribuidor de franquicia, descubre que los precios cotizados en Digikey, Mouser, etc. pueden ser varias veces más altos de lo que se puede obtener. El más barato que conozco es Lattice EC1 en QFP100 por un poco menos de GBP3 en cantidad de bandejas. Agregue GBP0.40 más o menos para una memoria flash SPI.
Por lo general, poner las CPU en la estructura de FPGA no es un buen valor en términos de costo de silicio, pero otros factores como el estrecho acoplamiento entre la CPU y la FPGA y la cantidad reducida de paquetes pueden alterar la compensación óptima contra el uso de una CPU separada.
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.
Depende mucho de tu 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 gran 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 propósito general. Pero en el mejor de los casos (aunque se puede lograr mucho en muchas aplicaciones del mundo real), si su aplicación tiene una parte de control significativa o no se asigna fácilmente al hardware, gastar su dinero en hardware fijo (es decir, un ARM) es probablemente mejor
Si necesita una placa en lugar de solo el chip, aquí hay dos opciones recientes de 2013:
En primer lugar, desea ejecutar Linux en un núcleo. ¿Qué tal ejecutarlo en un ARM como algunas otras sugerencias en este hilo? Las MCU son buenas para ejecutar el sistema operativo, pero se desperdicia un poco el recurso FPGA al construir una MCU. Los 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 cierto, aunque las operaciones lógicas no se sienten como procesar exactamente. Como usted señala, los FPGA potentes se vuelven caros y, de hecho, consumen mucha energía. Entonces, una plataforma de bajo costo que puede ejecutar Linux y DSP que necesita los beneficios del paralelismo para IO rápido, etc. Eche un vistazo al procesador paralelo XMOS
Dado que muchos CPLD actuales de Altera son FPGA con memoria de configuración integrada, puede obtenerlos en http://www.altera.com/products/devices/cpld/max2/mx2-index.jsp
sybreon
onaclov2000
davidcary
Efervescencia