ASIC vs FPGA
Una matriz de puertas programable de campo se puede ver como la etapa de creación de prototipos de los Circuitos Integrados Específicos de la Aplicación: los ASIC son muy caros de fabricar, y una vez que están hechos no hay vuelta atrás (ya que el costo fijo más costoso son las máscaras fabricación "plantilla"] y su desarrollo). Los FPGA son reprogramables muchas veces, sin embargo, debido al hecho de que un conjunto genérico de puertas está conectado para lograr su objetivo, no está optimizado como los ASIC. Además, los FPGA son dispositivos dinámicos de forma nativa, ya que si lo apagas, perderás no solo el estado actual sino también tu configuración. Ahora existen placas que agregan un chip FLASH y / o un microcontrolador para cargar la configuración en el inicio, por lo que este suele ser un argumento menos importante.
Tanto los ASIC como los FPGA pueden configurarse con lenguajes de descripción de hardware y, a veces, los FPGA se utilizan para el producto final. Pero, en general, los ASIC se activan cuando se arregla el diseño.
FPGA vs microcontrolador
En cuanto a la diferencia entre un microcontrolador y un FPGA, puede considerar que un microcontrolador es un ASIC que básicamente procesa el código en FLASH / ROM de forma secuencial. Puede hacer microcontroladores con FPGA incluso si no está optimizado, pero no al contrario. Los FPGA están conectados como circuitos electrónicos, por lo que puede tener circuitos verdaderamente paralelos, no como en un microcontrolador donde el procesador salta de un fragmento de código a otro para simular un paralelismo suficientemente bueno. Sin embargo, como los FPGA se han diseñado para tareas paralelas, no es tan fácil escribir código secuencial como en un microcontrolador.
Por ejemplo, por lo general, si escribe el pseudocódigo "sea C sea A XOR B", en un FPGA que se traducirá en "compile una compuerta XOR con los ladrillos lego contenidos (tablas de búsqueda y cierres), y conecte A / B como entradas y C como salida ", que se actualizará en cada ciclo de reloj independientemente de si se usa o no C. Mientras que en un microcontrolador que se traducirá en "instrucción de lectura - es un XOR de variables en la dirección A y una dirección B de RAM, el resultado se almacena en la dirección C. Cargue los registros de unidades lógicas aritméticas, luego pida a la ALU que haga un XOR, luego Copie el registro de salida en la dirección C de RAM ". En el lado del usuario, sin embargo, ambas instrucciones eran 1 línea de código. Si tuviéramos que hacer esto, ENTONCES otra cosa, en HDL tendríamos que definir lo que se llama un Proceso para hacer secuencias artificialmente, separado del código paralelo. Mientras que en un microcontrolador no hay nada que hacer. Por otro lado, para obtener el "paralelismo" (sintonizar y desconectar realmente) de un microcontrolador, debe hacer malabares con hilos que no son triviales. Diferentes formas de trabajar, diferentes propósitos.
En resumen:
ASIC vs FPGA: fijo, más caro para una pequeña cantidad de productos (más barato para grandes volúmenes), pero más optimizado.
ASIC vs microcontrolador: desde luego, me gusta comparar una herramienta con una
martillo.
FPGA vs microcontrolador: no está optimizado para el procesamiento de código secuencial,
Pero también puede hacer tareas verdaderamente paralelas muy fácilmente. Generalmente los FPGA están programados en HDL, los microcontroladores en C / Ensamblado
Cuando la velocidad de las tareas paralelas es un problema, tome un FPGA, evolucione
su diseño y, finalmente, conviértalo en un ASIC si es más barato para usted en el
largo plazo (producción en masa). Si las tareas secuenciales están bien, tome un microcontrolador. supongo
usted podría hacer un IC aún más específico de la aplicación de esto si es
Más barato para usted a largo plazo también. La mejor solución probablemente sea un poco de ambas.
Lo que me dio una búsqueda rápida después de escribir esto:
FPGA vs Microcontrollers, en este mismo foro