¿Los FPGA más baratos? [cerrado]

44

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

pingswept
fuente
(enchufe descarado) la radio GNU (USRP2) usa un AEMB incluido con un montón de bloques DSP. Funciona muy bien con la radio definida por software - aeste.my/node/29
sybreon
@sybreon Por extraño que parezca, estoy usando USRP2 en mi proyecto de Diseño Senior - Niza
onaclov2000
relacionado: "Placa de desarrollo FPGA barata"
davidcary

Respuestas:

23

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

Wouter Simons
fuente
23

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

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

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.

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

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.

ajs410
fuente
1
También hay FPGA basados ​​en flash (ACTEL) y algunos basados ​​en SRAM con flash incorporado (Xilinx Spartan3AN, LatticeXP).
sybreon
También puede comprar una CPU más rápida y colocar el segundo canal. No es una buena comparación.
user253751
@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 utilizar CPU, lo que puede hacer es traer una segunda CPU, siempre que la naturaleza del procesamiento sea paralelizable.
Johan Boulé
7

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.

Leon Heller
fuente
3
Muy interesante
pingswept
2
Creo que está equivocado acerca de los núcleos ARM que solo aparecen en los dispositivos Virtex. El comunicado de prensa no dice mucho, y no creo que se pueda inferir del hecho de que los núcleos PPC solo aparecen en las partes V2P, V4FX y V5FXT. El sitio web de Xilinx menciona que los dispositivos están optimizados para "rendimiento, costo y potencia" (consulte xilinx.com/technology/roadmap/processing-platform.htm ); notará que el costo nunca es un vector de optimización para la serie Virtex.
mrkj
1
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.
mrkj
3
Supongo que el resultado de este acuerdo es el Zynq ?
Janus Troelsen
4

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.

mikeselectricstuff
fuente
2
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 barato 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 esos distribuidores presumiblemente sí, y pueden estar dispuestos a negociar por un margen de ganancia menor al 566% ...
Julio
3

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.

pingswept
fuente
3
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 600MHz - 800MHz, mientras que el microblaze en el FPGA funcionaría a 200MHz - 300MHz.
davr
Por lo tanto, sería ~ 3 veces más lento (suponiendo que su sistema esté vinculado al procesador), pero con un costo comparable, mientras deja puertas excesivas para otra cosa.
pingswept
1
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
desde
1
Sí, justo lo suficiente. Una primera aproximación, supongo.
pingswept
3

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.

Wim
fuente
3

Si necesita una placa en lugar de solo el chip, aquí hay dos opciones recientes de 2013:

Janus Troelsen
fuente
0

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

Brian Carlton
fuente
0

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

Pete Tasker
fuente