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?
Respuestas:
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.
fuente
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.
fuente
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:
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.
fuente