La lectura acerca de los FPGAs, si entiendo correctamente, que, básicamente, son totalmente configurables a la puerta de la lógica de los circuitos. Siendo este, uno puede diseñar cualquier cosa con ellos. Uno puede diseñar todo de la manera más personalizada posible y, por lo tanto, cumplen la misma termina en una manera mucho más eficiente que se puede obtener utilizando un microcontrolador. Teniendo esto, se ve como un FPGA latidos de un microcontrolador a cualquier hora, cualquier día. Así que mi pregunta es, si los FPGAs son realmente esta genial, lo que les impide ser mucho más frecuente de lo que los microcontroladores? Desde este punto de vista, me parece que los FPGAs debe haber aniquilado los microcontroladores hace mucho tiempo. Así que ¿por qué no es éste el caso? Es el coste, la dificultad para la programación de la FPGA, en todo o algo más?
Respuestas
¿Demasiados anuncios?Usted está haciendo caso omiso de un montón de factores que intervienen en la toma de decisiones en el diseño de:
Costo. Los FPGAs son más caros que los micros de la misma complejidad de la lógica. La lógica de la complejidad. El código ejecutable puede implementar mucho más complicado de la lógica que el mismo número de compuertas en el micro se utiliza directamente. Facilidad de desarrollo. Es más fácil escribir código ejecutable que para definir la lógica para todos, pero los pequeños problemas. Incluso modesta microcontrolador proyectos tienen miles de líneas de código. El desarrollo de el equivalente a la lógica de las definiciones llevaría mucho más tiempo y ser mucho más difícil de depurar y verificar. El consumo de energía. Desde los FPGAs son destinados a la alta velocidad de las operaciones que los micros no puede manejar (cosa que haría uso de un micro), no están optimizadas para baja potencia. Esto los hace inadecuados para algunas aplicaciones de baja potencia. Algunos micros de sueño corrientes menores de 1 µA, y puede operar en sólo un par de µA a bajas velocidades de reloj. Trate de encontrar una FPGA que puede hacer esto.Las principales ventajas de los FPGAs frente a micros es que son más rápidos y puede hacer más cosas en paralelo. Aparte de eso, prefieres usar un micro. Por lo tanto, en el proceso de diseño, que suelen comenzar con un micro, luego de mala gana de ir a un FPGA cuando usted realmente necesita la velocidad y/o concurrente de alta velocidad de operación. Incluso entonces, puede implementar sólo la velocidad de las partes críticas en una FPGA, y dejar la parte inferior de la velocidad de las funciones de control y al igual que en el micro.
Una distinción que no he visto elaborado a partir de aquí es que los FPGAs son utilizados, y se comportan, en una forma completamente diferente a la de los procesadores.
Un FPGA es realmente bueno en hacer exactamente la misma tarea una y otra vez. Por ejemplo, el procesamiento de vídeo, audio o señales de RF. O el enrutamiento de los paquetes Ethernet. O la simulación de flujo de fluidos. Cualquier situación en la que usted tiene una gran cantidad del mismo tipo de datos a ser lanzado en usted realmente rápido y desea lidiar con todo esto de la misma manera. O desea ejecutar el mismo algoritmo que en repetidas ocasiones. El FPGA en realidad no tiene 'tareas' para iniciar y detener[1], todo su trabajo es hacer la misma cosa a cualquiera de los datos que recibe, durante el tiempo que está encendido. No cambiar de marcha, no hacer nada más. Es el final de la línea de producción del trabajador. Que va a hacer la misma cosa repetidas veces, tan rápido como puede, para siempre.
Cpu, por otro lado, son el epítome de la flexibilidad. Pueden ser programados para hacer nada en absoluto, y pueden ser programados para hacer varias cosas diferentes al mismo tiempo. Tienen tareas para iniciar y detener, cambiar la marcha, multitarea, están cambiando constantemente y el cambio de funciones.
La FPGA y la CPU son completamente contrarios. La CPU de la mercancía es el tiempo que debe hacer las cosas más rápido. El más rápido de su aplicación se ejecuta, el mejor.
El FPGA de las materias primas es el espacio. Su FPGA es sólo tan grande, y sólo hay tantas puertas para realizar la tarea que se desea. La mayoría de las veces, el problema es de mayor tamaño que la velocidad[2].
Es posible hacer una FPGA como un acto de la CPU. Usted puede poner una CPU de núcleo IP en un FPGA, sin embargo es muy difícil de justificar, porque las razones que han descrito otros[3]. La FPGA y la CPU son opuestos, ambos con sus propias fortalezas y debilidades, y ambos tienen su propio lugar como resultado.
Notas:
1) Una FPGA puede ser diseñado para realizar diferentes tareas, pero incluso entonces sería un número específico de la era pre-diseñado.
2) la Velocidad es también un FPGA de la especificación de diseño. Es realmente un trade-off entre la velocidad y el tamaño.
3) Poner una CPU en un FPGA es de hecho muy a menudo, sin embargo se hace en un caso por caso, dependiendo de las aplicaciones específicas. Por ejemplo, si usted necesita un pequeño microcontrolador y tener más espacio para FPGA.
Y por último: Esta respuesta es un gran simplifcation - los FPGAs son utilizados en enormemente variadas y complejas formas y este es un muy breve resumen sobre la forma en que se utilizan en general.
Como Olin dice, algo así como un micro es más eficiente para muchas tareas, y usted encontrará casi siempre un micro utilizar siempre un FPGA aparece. La superficie de silicio (que se traduce en un costo de un modo no lineal) y el consumo de energía es mucho menor. Por esa razón, no es raro que la implementación de un "suave" MCU en un FPGA - pero el coste y el rendimiento de un micro es decepcionante.
Algunos modernos FPGAs contener uno o más 'duro' núcleos como el omnipresente BRAZO de la serie. También, pueden contener dedicado bloques de memoria ya que es muy ineficiente para hacer memoria de las puertas. Una de 32 bits micro núcleo ocupa un poco de silicon área en un típico FPGA, lo que da una idea de los costos relativos.
El desarrollo es mucho más difícil, y la IP tiende a no ser tan accesibles como para micros y dedicado SOC soluciones - por ejemplo LCD controladores, interfaces PCI, Ethernet Mac. La razón es en parte que por la divulgación de la HDL lógica de descripciones se están transfiriendo el diseño no sólo de la ejecución del diseño. Otra razón es que el rendimiento es dependiente de diseño de la lógica en la FPGA, el cual requiere de un gran esfuerzo durante el desarrollo.
Una complicación adicional es que la mayoría de los complejos de los FPGAs son basados en RAM para la configuración y los costos del proceso son tales que la externa no volátil memoria necesaria para almacenar la configuración y de la memoria de programa para cualquier MCU a bordo. Esta memoria tiene que ser cargado en la memoria RAM en el arranque.
Los FPGAs son herramientas muy útiles en el cuadro de herramientas, pero no van a ser la sustitución de Mcu o ASICs universalmente cualquier momento pronto.
El mejor uso de silicio para un puesto de trabajo es un ASIC, nada se desperdicia, pero que tienen una enorme curva de aprendizaje, NRE, y la inflexibilidad.
Hay dos formas de crear flexibilidad en un chip. a) Tener un espacio optimizado para la ALU, y utilizar una y otra vez sobre los datos almacenados. Esto se llama una MCU, y requiere una gran área de silicio que 'no hace nada', el programa de la memoria, el ancho de los autobuses de la ejecución de la unidad de unidad de bus de switches de acceso. b) Han de grano fino de la lógica, con un par opcional espacio optimizado partes como multiplicadores, pequeñas Carneros, y simple de la Cpu. Esto se llama un FPGA, y requiere una gran área de silicio que 'no hace nada', conmutadores programables y líneas de conexión.
Obviamente con las estructuras, Mcu funcionan mejor para las tareas que se pueden descomponer en serie de trozos, y los FPGAs mejor para tareas que necesitan de alta velocidad de operación en paralelo. Cuando la aplicación es pesado, y el costo es dominado por el costo de silicio, que es cómo los dos tipos naturalmente va a ser utilizado.
Cuando la aplicación es ligera pero de gran volumen, el costo es dominado por los envases en lugar de silicio, y cualquier tipo es viable. Altera tiene algunas muy pequeñas de muy baja potencia FPGAs para competir con un-dólar-un puñado Mcu.
Para aplicaciones de bajo volumen, el costo de desarrollo tiende a dominar, y no Mcu ganar, asumiendo que la velocidad
En términos de consumo de energía y de silicio de la utilización de un FPGA es muy pobre en comparación con un microprocesador.
Un FPGA consume gran parte de su área de silicio en la configuración de la lógica de circuitos de algo que no se aplica a un micro. Tiene que haber muchos más interconexiones disponible que la que sería necesaria en una sección especial de la implementación de un microprocesador.
El FPGA consume más energía que un dedicado ASIC como un microprocesador como la lógica no está implementada como de manera eficiente.
Cualquier función que pueda ser implementado en un FPGA se puede hacer de manera más eficiente, más barato, con menor consumo de energía, menor espacio en la placa etc en un ASIC. Esto es suponiendo que los volúmenes son lo suficientemente grandes como para compensar el NRE.