Linux integrado en FPGA

10

Tengo una experiencia muy limitada con FPGAs (Altera - usé solo las herramientas de diseño visual).

Estoy planeando un nuevo proyecto en el que necesito FPGA y podría beneficiarme mucho de un linux real que se ejecute en la misma placa (principalmente para la comunicación TCP y algunos DSP).

Mi pregunta es, ¿hay un FPGA recomendado que tenga un linux incorporado compatible preparado para ello? sin controladores sofisticados (solo ethernet, wifi podría ser una ventaja, ...). Me imagino que habría un microcontrolador integrado en el FPGA (esto significa que consumiría gran parte del FPGA y necesitaría un FPGA más grande).

Ali
fuente

Respuestas:

15

Un núcleo de procesador RISC de 32 bits de libro de texto capaz de ejecutar la versión no-mmu de Linux en realidad no necesita ser tan grande: el recurso real que necesita es mucha más RAM (10s de megabytes) que la disponible en cualquier FPGA, por lo que Probablemente querrá SDRAM en la placa y un controlador para eso en la FPGA.

Dicho esto, si desea algo más que un nivel trivial de rendimiento, probablemente desee un núcleo con algunas optimizaciones (canalización, etc.), y eso comienza a aumentar el tamaño de alguna manera. Agregar un mmu completo hará que la (re) asignación de memoria sea más eficiente y habilitará el comportamiento habitual de fork () de copia en escritura.

Los dos principales proveedores de FPGA tienen núcleos de procesador blandos con puertos linux disponibles: Microblaze para Xilinx, Nios II para Altera. Probablemente debería leer sus documentos para obtener recomendaciones específicas de la plataforma, ya que, por supuesto, es un objetivo que se mueve con el tiempo. Un diseño central de un tercero podría ser algo más grande para un rendimiento similar, si está escrito de una manera más portátil y no tan optimizado específicamente para una familia FPGA dada.

Históricamente, ha habido chips disponibles que combinan un núcleo de procesador duro (a menudo powerpc) con una región de tejido FPGA configurable. Otra opción a considerar sería un procesador separado (probablemente ARM) en la misma placa que un FPGA.

Gran parte de la decisión dependerá de cuán estrechamente necesite acoplar el procesador y el FPGA. Si puede reducir el problema a los registros de configuración y una secuencia de datos, podría ser tan modular como colgar una placa FPGA con un chip USB rápido fuera del puerto host USB de una placa Linux integrada como un BeagleBoard o RasberryPi. Para una integración más estrecha, es posible que desee el FPGA en la misma placa y sentado en el bus externo del procesador. O para velocidades de datos bajas, es trivial colocar una interfaz de registro SPI en un FPGA, y las interfaces UART son totalmente factibles aunque un poco más complicadas.

Finalmente, está la cuestión de si realmente necesita un sistema operativo completo como Linux, o si una pila TCP integrada de "microcontrolador" resolvería su problema y requeriría menos memoria.

Chris Stratton
fuente
6

Microblaze de Xilinx ejecuta Linux muy bien, suponiendo que sea lo suficientemente rápido para sus propósitos: solo hará unos 10s de MIPS en dispositivos más baratos, 100-200 MIPS en las familias caras.

Xilinx tiene un repositorio de git , o hay algunas distribuciones específicas de Xilinx. La flexibilidad de FPGA puede ser un poco dolorosa, así como una bendición, ya que su mapa de memoria y mapeos IRQ, o incluso qué periféricos están disponibles pueden cambiar durante el desarrollo del proyecto.

Petalinux tiene scripts para administrar este tipo de cosas y actualizar los bits de la configuración del núcleo que importan en función de su último y mejor diseño del sistema.

Martin Thompson
fuente
4

La línea Virtex de Xilinx tiene versiones FPGA con PowerPC de núcleo duro. Es bastante fácil ejecutar Linux en el PowerPC, mis alumnos lo han hecho para muchos proyectos de diseño senior. Todavía tienen un montón de tela configurable para su diseño de hardware para llenar.

El panel de evaluación Virtex2 Pro fue muy común en proyectos de investigación académica y educativa. Como Xilinx ha dejado de admitir esta versión de chip en sus herramientas recientes, puede adquirir una bastante económica. Creo que fue compatible hasta la versión 9.x más o menos. Hmm Eso fue hace varios años, así que tal vez estoy un poco nostálgico. En cualquier caso, todavía estoy pasando estos tableros a los estudiantes interesados ​​para que les permitan hacer lo que quieran con ellos.

Bill Nace
fuente
1
Si no me equivoco mucho, se llaman Virtex xilinx.com/onlinestore/v2pro_boards.htm
Ali
1
@ Ali - No creo que estés equivocado, y tienes una referencia bastante confiable para tu afirmación. ¡No dude en proponer una edición en situaciones como esta!
Kevin Vermeer
3

SmartFusion de Actel integra un FPGA con un núcleo ARM Cortex-M3 de IP rígida y un motor analógico avanzado en un dispositivo de un solo chip.

uClinux funciona bastante bien en el núcleo Cortex-M3 de SmartFusion. Consulte este sitio para más detalles.

vladimir khusainov
fuente
2

Dependiendo de su período de tiempo, también puede considerar la nueva línea Zynq-7000 de Xilinx, que combina un procesador ARM con un Artix-7 o Kintex-7. Xilinx afirma que enviarán cantidades de producción en la segunda mitad de 2012.

Otros proveedores pueden tener productos similares. No sé si Xilinx traerá soporte Zynq al ISPa WebPack gratuito o cuándo lo hará; en este momento, afirman que necesita ISE Embedded Edition.

Nicholas
fuente
¿Por qué hiciste esta respuesta wiki comunitario? Eso fue probablemente innecesario.
Kevin Vermeer