¿Cuándo deben usarse los FPGA en robótica?


12

FPGA tiene buenos puntos, como muchos puntos de E / S, pero una vez más, debe pensar las cosas en un nivel muy bajo con chanclas y ser pionero en áreas donde las cosas aún no están maduras; por ejemplo, vea esta pregunta aquí sobre herramientas de desarrollo en FPGAs - este es mi entendimiento actualmente! Ahora FPGA se ha utilizado para crear una destreza excelente en manos robóticas como aquí . Ahora, algunas personas comercializan FPGA para prototipos rápidos y diseños "orientados hacia el futuro" como aquí , no los entiendo completamente: si no necesita muchos puntos IO para cosas como sensores, ¿por qué elegir FPGA para un robot? Entonces

¿Cuándo se debe elegir FPGA para un proyecto en robótica?


Si necesita paralelismo, entonces tiene sentido usar FPGA, ya que podría lograrlo. Además, puede personalizar su propio "diseño de chip" y actualizar "fácilmente" alguna funcionalidad sin un nuevo chip de hardware. Vi ejemplos de detección de múltiples objetos desde la cámara en tiempo real. Seguro que es una sobrecarga para proyectos más pequeños.
Gossamer

Respuestas:


4

No estoy seguro de qué en la pregunta vinculada sobre las herramientas de desarrollo te hace pensar que no son maduras. Es cierto que la mayoría de ellos son propietarios y no de código abierto. Pero pensé que las herramientas eran bastante maduras incluso cuando se hizo esa pregunta hace tres años. Hoy , Xilinx , Altera y Lattice tienen entornos de desarrollo disponibles gratuitamente que se ejecutan en Windows y Linux con soporte de 32 y 64 bits. Si insiste en el código abierto, Icarus Verilog puede hacer bastante. Pero personalmente me quedaría con las herramientas específicas del proveedor.

Los FPGA son más que un montón de chanclas configurables. Considere el Altera NIOS II . Un procesador de núcleo blando de 32 bits capaz de ejecutar Linux. Mezcle y combine las comunicaciones y otros periféricos de OpenCores o de Xilinx , Altera o Lattice y ha creado un microcontrolador personalizado con todo lo que necesita y nada que no necesita. Incluso puede escribir código C para el procesador NIOS II y tener ciertas funciones implementadas directamente en el hardware FPGA si necesita la velocidad. ¿Es ese alto nivel lo suficiente pensando para ti?

Los FPGA tienen un alto costo de inversión inicial. Pero es más barato y más fácil agregar funcionalidad más adelante en el proceso de diseño. Eso es lo que se entiende por diseños "prospectivos". Considere un proyecto en el que desee agregar algunos motores adicionales a su robot pero se haya quedado sin generadores PWM en su microcontrolador. ¿Qué haces? Añadir otro microcontrolador? ¿Comprar chips PWM separados y conectarlos a una interfaz de comunicaciones? ¿Qué pasa si todas sus interfaces de comunicaciones están en uso? Con un FPGA, esto se reduce casi por completo a una operación de copiar y pegar. Es mucho más fácil, más barato y más rápido escalar un diseño para incluir nuevas funcionalidades sin comprar tanto hardware adicional con un FPGA.

Pero probablemente la razón más importante para usar un FPGA es la velocidad. No estoy hablando de la velocidad del reloj puro. Pero cuando necesitas que sucedan muchas cosas simultáneamente. Como Gossamer mencionó, el paralelismo es en lo que los FPGA son realmente buenos. Los diseños de filtro se benefician especialmente de este tipo de arquitectura paralela. Si necesita filtrar y responder a un sensor que cambia rápidamente, entonces necesita un FPGA. También son bastante buenos en el procesamiento de video, ya que esto también se beneficia del procesamiento paralelo.

Tomemos, por ejemplo, este robot de mano de alta velocidad . Necesita procesar el video desde la cámara de visión artificial de alta velocidad (1000 cuadros por segundo), así como los sensores táctiles y responder manipulando numerosos actuadores en solo unos pocos milisegundos. Este tipo de proyecto es cuando necesita elegir FPGA.

procesamiento masivo de visión paralela


¿Podría aclarar que "los FPGA tienen un alto costo inicial de inversión"? Relacionado aquí : los precios parecen muy bajos. ¿Te refieres a un alto costo de capacitación o alguna otra figura?
hhh

1
@hhh No estaba hablando sobre el costo del chip sin procesar. Estaba hablando del costo de desarrollo. Considere un kit de desarrollo de microcontroladores como el PandaBoard . Contiene un ARM Cortext A9 por $ 181. Una placa de desarrollo FPGA que puede contener un A9 como el Cyclone V cuesta $ 1,099.
embedded.kyle

@hhh Por supuesto, hay kits de desarrollo FPGA más baratos. Pero estaba tratando de encontrar alguna métrica para comparar dos cosas que son tan diferentes. Entonces, un kit de desarrollo que tiene (muy) aproximadamente la misma potencia de procesamiento es aproximadamente 10 veces más.
embedded.kyle

@hhh El ARM más barato en Mouser es de $ 0.80 . El FPGA más barato es $ 2.80 .
embedded.kyle

2
@hhh Esa mano es una investigación de vanguardia con probablemente decenas, si no cientos de miles de dólares en equipos personalizados que la ejecutan. El procesamiento de video en general tiende a estar en el extremo superior. Mira aquí y aquí . Y ninguno de los dos probablemente podría procesar videos de 1kfps. Más como 30-60 fps. La placa que enumeró no tiene entradas de video. Aunque ciertamente podría controlar los actuadores y procesar los sensores táctiles. Definitivamente podría emular la mano que vinculaste.
embedded.kyle

2

Creo que puede haber una idea errónea sobre qué es realmente un FPGA y cuándo se usa en los diseños. Así que déjame intentar explicar esa parte primero.

FPGA y cuándo uno podría querer tener uno ...

En riesgo de simplificación, un FPGA es poco más que un procesador que resulta 'reconfigurable'.

¿Por qué alguien querría un microprocesador 'reconfigurable'? Bueno, porque cuesta demasiado fabricar un procesador de silicio para poder hacerlo por uno, dos o incluso doscientos chips. Tendría que ejecutar lotes de miles de chips para que sea económicamente factible.

Dado que ningún diseño está libre de errores la primera vez, ir por la ruta del silicio compromete efectivamente a una empresa a al menos dos, si no más, pruebas, todo a un costo de fabricación enorme.

Lo que esencialmente significa que muy pocas empresas comerciales estarán interesadas en diseñar y llevar a la fabricación algo que no sea chip con un atractivo comercial lo suficientemente amplio.

Entonces, si se te ocurre un diseño brillante que justifique un microprocesador personalizado, entonces podrías intentar hacer realidad tu idea con un presupuesto reducido al implementarlo en un FPGA, donde el chip real es simplemente una colección de puertas, y un 'programa' (típicamente VHDL o Verilog) organiza esas puertas en un microprocesador real.

Pero eso es bastante diferente en un camino completamente diferente (¡diseño de microprocesador!) ...

Lo que me lleva a sugerir que

... Los FPGA no son esenciales para la robótica, al menos al principio

Lo que necesitas para la robótica es un procesador . Un FPGA es solo un tipo especial de procesador (reconfigurable).

¿Preguntas si 'deberías'? Bueno, eso depende de su conocimiento, así como de dónde residen sus intereses reales: ¿primero el diseño del microprocesador o la robótica?

Si los microprocesadores son su pasión, ¡por supuesto! Y la robótica es una gran área de aplicación para microprocesadores personalizados, tal vez una corteza de visión con muchas vías de decisión paralelas manejadas directamente en hardware, o una multiplicación de tensor especial en hardware, básicamente cualquier cosa que los procesadores genéricos no puedan manejar bien.

Pero si va a diseñar diseños de microprocesadores en FPGA, bueno, entonces, por supuesto, necesitará tener todo ese conocimiento de bajo nivel que menciona, y más, porque fundamentalmente estará diseñando su propio procesador. Lo que realmente no tiene nada que ver con la robótica, a pesar de que su aplicación de destino podría ser la robótica.

La mayoría de los diseñadores probablemente puedan encontrar un procesador existente que haga la mayor parte de lo que necesitarán.

Así que creo que probablemente no necesites un FPGA.

Una hoja de ruta inicial: desde capacidades comerciales hasta (quizás) un FPGA ...

El primer objetivo en mi opinión es tratar de que todos sus conceptos creativos se integren en un robot que funcione (un desafío bastante intenso en sí mismo).

Si descubre que tiene cuellos de botella de procesamiento específicos y significativos en su diseño, entonces el siguiente objetivo es optimizar la selección / diseño de sus procesadores, que aún son chips disponibles comercialmente. Tal vez más grande, más rápido (compensación con consumo de energía, disipación de calor). Quizás chips más pequeños y dedicados que manejan tareas específicas e interactúan con el cerebro principal (compensación con complicaciones de algoritmo / lógica).

Solo si hay capacidades que simplemente no podrá obtener para manejar chips comerciales, entonces podría considerar implementar un procesador especializado dentro de un FPGA porque en ese punto habrá ventajas muy claras que espera obtener al rodar su propio ', y puede concentrarse en implementar esas capacidades, con las interfaces adecuadas para el resto de su diseño.

De lo contrario, es probable que te desvíes de tu objetivo principal (¡lo que voy a asumir es construir un robot!)

En pocas palabras: los FPGA son una distracción para no iniciarse en la robótica, hasta que esté bastante avanzado en el camino de la robótica, y han ganado algunas habilidades fuertes en el diseño de microprocesadores / electrónica digital en algún momento.


Puedo pensar en muchos ejemplos en áreas como el procesamiento de video donde el procesamiento paralelo con FPGA es esencial para la velocidad y resultados más precisos. Fallos vistos en los que las personas intentan implementar la detección de iris ruidoso en tiempo real con una sola CPU. No. FPGA tiene sus propias áreas específicas donde se balancea, como manos robóticas de alta destreza o procesamiento de video preciso / rápido. No puedo entender yuxtaponer FPGA y microprocesadores como ese. Son bestias muy diferentes con sus propios lados buenos / malos. ¿Equivocado? ¿Alguna idea de si este tipo de áreas buenas para FPGA figuran en alguna parte?
hhh

Ciertamente tiene razón en que hay muchas áreas en las que los FPGA son una ventaja: no he excluido las que figuran en mi respuesta. El problema es dónde se encuentra en la curva de experiencia y qué tan claro es sobre las ventajas específicas que desea obtener al usar un FPGA. Si no sabes la respuesta a eso, ¡entonces probablemente no necesites una! (Esto se hace eco de la respuesta de Jakob a continuación.)
Assad Ebrahim

1

Después de haber trabajado tanto con FPGA como con microcontroladores en proyectos de robótica, en realidad diría ahora: cualquiera que sea la persona que implementa la tarea tiene más experiencia. Si los conoces igualmente bien, no te harías la pregunta. Si tampoco lo sabes bien, estos serían los puntos a seguir:

  • ¿Se requiere un tiempo complejo en los puertos de E / S? El control de motor trifásico puede tener tales requisitos. Los FPGA tienen una ligera ventaja aquí.
  • ¿Puedes paralelizar tu algoritmo de latencia súper baja? Aquí el FPGA realmente no compite con los microcontroladores, sino más bien con las PC integradas. La mayoría de las cosas iría por la PC integrada, pero puede tener una ventaja con un FPGA para algunas aplicaciones específicas. El procesamiento estéreo denso, por ejemplo, a menudo se realiza en FPGA. Muchas cámaras usan FPGA para procesar el flujo de datos.

Lo que también se usa a menudo son soluciones híbridas. Ya sea con dos chips, un microcontrolador para el código del programa y un FPGA para IO o alguna otra tarea. También hay una serie de FPGA que realmente tienen un microcontrolador incorporado.

No sería tan duro con los FPGA como algunas otras publicaciones, pero también generalmente argumentaría que, a menos que conozca bien su VHDL, será mejor que use un microcontrolador, o incluso mejores PCs aún incrustadas.


¿Puede mostrar algunos proyectos de ejemplo que ayudarían a comprender qué tipo de cosas son buenas para hacer con FPGA y cuáles con microcontroladores? Supongamos, por ejemplo, un robot de seguimiento de línea: funciona bastante bien con un solo microcontrolador en una superficie limpia y plana hasta obtener líneas más borrosas que requieren nitidez de imagen / circunvoluciones / etc. Si una línea en el bosque (u otra superficie ruidosa), sería un desafío mucho más difícil (dudo si incluso es posible hacerlo con fpga). ¿Ha realizado algún proyecto robótico del mundo real en el que haya utilizado fpga, por ejemplo, para el procesamiento de imágenes / video en tiempo real? +1 para VHDL.
hhh
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.