¿FPGA más baratos? [cerrado]

¿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).

(enchufe desvergonzado) la radio GNU (USRP2) usa un AEMB incluido con un montón de bloques DSP. Hace muy bien la radio definida por software: aeste.my/node/29
@sybreon Por extraño que parezca, estoy usando USRP2 en mi proyecto de diseño senior.

Respuestas (11)

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

Archivos de la conferencia FPGA (registro gratuito, pero solo disponible durante unos 6 meses después de esta respuesta)

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.

Hay implementaciones de Microblaze de código abierto (como aeMB -- opencores.org/project,aemb ) que deberían trasladarse a otros FPGA (que no sean de Xilinx).
(enchufe desvergonzado) se sabe que AEMB también ejecuta uC/OS-II en Altera FPGA -- aeste.my/node/7

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.

Entiendo que no encontraré un FPGA que supere a un micro en costo y rendimiento, pero parece que podría existir un FPGA que supere el costo de micro + FPGA, mientras proporciona un rendimiento similar, todo en un solo chip. ¿Tiene sentido?

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.

También existen FPGA basados ​​en flash (ACTEL) y algunos basados ​​en SRAM con flash integrado (Xilinx Spartan3AN, LatticeXP).
También puede simplemente comprar una CPU más rápida y colocar el segundo canal. No es una buena comparación.
@immibis Lo que estás diciendo es en realidad lo mismo que el punto de ajs410: un FPGA no necesita ser más rápido , debe ser más grande . Si desea usar CPU, lo que puede hacer es traer una segunda CPU, siempre que la naturaleza del procesamiento sea paralelizable.

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.

muy interesante
Creo que te equivocas acerca de que los núcleos ARM solo aparecen en los dispositivos Virtex. El comunicado de prensa no dice tanto, y no creo que se pueda inferir eso del hecho de que los núcleos PPC solo aparecen en partes V2P, V4FX y V5FXT. El sitio web de Xilinx menciona que los dispositivos están optimizados para "rendimiento, costo y potencia" (ver xilinx.com/technology/roadmap/processing-platform.htm ); notará que el costo nunca es un vector de optimización para la serie Virtex.
Además, ARM nunca se menciona en el anuncio de FPGA de la serie 7 ( xilinx.com/technology/roadmap/7-series-fpgas.htm ), y no hay una parte V6 o V7 con un PPC. Mi opinión sobre todo esto es que se están alejando de los procesadores integrados en las partes de alto rendimiento.
¿Supongo que el resultado de este trato es el Zynq ?

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.

Muy buen punto. Consulte también esta publicación [ element14.com/community/thread/2434] de un empleado de Farnell que sugiere que los chips Altera Cyclone IV están disponibles por tan solo $ 3, mientras que el precio más bajo cotizado de Farnell en su página web para ellos está más cerca de $ 20. Ahora, claramente la mayoría de la gente no va a comprar en cantidades de 250,000, pero presumiblemente esos distribuidores sí, y pueden estar dispuestos a negociar por algo menos del 566 % de margen...

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.

De un vistazo rápido en línea, un núcleo microblaze usaría aproximadamente la mitad de las celdas lógicas en un XC3S400A. Además, el Cortex A8 funcionaría a 600 MHz - 800 MHz, mientras que el microblaze en el FPGA funcionaría a 200 MHz - 300 MHz.
Por lo tanto, sería ~ 3 veces más lento (suponiendo que su sistema esté vinculado al procesador), pero con un costo comparable, dejando el exceso de puertas para otra cosa.
Eso es solo comparar la frecuencia, la forma más básica de comparar la velocidad de procesamiento real. No tengo suficiente conocimiento al respecto, pero es posible, por ejemplo, que a la misma velocidad de reloj, un ARM sea el doble de rápido que un Microblaze.
Sí, lo suficientemente justo. Una primera aproximación, supongo.

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