Saltar al contenido

¿Cuáles son las diferencias y similitudes entre FPGA, ASIC y microcontroladores generales?

Revisamos de forma cada reseñas en nuestra página web con la meta de enseñarte siempre información más veraz y certera.

Solución:

ASIC frente a FPGA

Una matriz de puerta programable en campo puede verse como la etapa de creación de prototipos de circuitos integrados de aplicación específica: los ASIC son muy costosos de fabricar y, una vez que se fabrican, no hay vuelta atrás (ya que el costo fijo más costoso son las máscaras [sort of manufacturing “stencil”] y su desarrollo). Los FPGA se pueden reprogramar muchas veces, sin embargo, debido al hecho de que un array de puertas está conectado para lograr su objetivo, no está optimizado como los ASIC. Además, los FPGA son dispositivos dinámicos nativos en el sentido de que si los apaga, pierde no solo el estado actual sino también su configuración. Sin embargo, ahora existen placas que agregan un chip FLASH y / o un microcontrolador para cargar la configuración al inicio, por lo que este tiende a ser un argumento menos importante. Tanto los ASIC como los FPGA se pueden configurar con lenguajes de descripción de hardware y, a veces, se utilizan FPGA para el producto final. Pero generalmente 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 secuencialmente. Puede hacer microcontroladores con FPGA incluso si no está optimizado, pero no al revés. Los FPGA están conectados como circuitos electrónicos para que pueda 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, debido a que 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 en pseudocódigo “deje que C sea A XOR B”, en un FPGA que se traducirá en “construya una puerta XOR con los ladrillos lego contenidos (tablas de búsqueda y pestillos), y conecte A / B como entradas y C como salida “que se actualizará cada ciclo de reloj independientemente de si C se usa o no. Mientras que en un microcontrolador que se traducirá en “instrucción de lectura – es un XOR de variables en la dirección A y la dirección B de la RAM, el resultado se almacenará 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 la RAM “. Sin embargo, del lado del usuario, ambas instrucciones eran 1 línea de código. Si tuviéramos que hacer esto, ENTONCES algo más, 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 “paralelismo” (sintonizar y desconectar realmente) de un microcontrolador, necesitaría hacer malabarismos con subprocesos 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: ciertamente como comparar una herramienta con un martillo.

FPGA vs microcontrolador: no está optimizado para el procesamiento de código secuencial, pero también puede realizar tareas realmente paralelas con mucha facilidad. En general Los FPGA se programan en HDL, los microcontroladores en C / Ensamblaje

Siempre que la velocidad de las tareas paralelas sea un problema, tome un FPGA, desarrolle su diseño y finalmente conviértalo en un ASIC si es más barato para usted a largo plazo (producción en masa). Si las tareas secuenciales están bien, tome un microcontrolador. Supongo que podría hacer un IC aún más específico de la aplicación a partir de esto si también le resulta más barato a largo plazo. La mejor solución probablemente sea un poco de ambos.

Qué búsqueda rápida después de escribir esto me dio:
ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

FPGA vs Microcontroladores, en este mismo foro

Los FPGA se pueden “volver a cablear” mediante la reprogramación. Una FPGA carga su configuración en sus celdas lógicas configurables cuando se enciende. Esto significa que se puede reprogramar sin cambios en el hardware.

Los ASIC solo se pueden volver a cablear modificando las máscaras fotolitográficas en la fundición de silicio.

Un microcontrolador es un escribe de ASIC, que ejecuta un programa y puede hacer cosas genéricas como resultado. Sin embargo, si desea modificar el conjunto de instrucciones o hacer algo similar, debe modificar el diseño del IC de silicio real.


La diferencia entre una FPGA y una MCU es más difusa. Básicamente, lo que es una FPGA, a nivel de hardware, son muchas celdas SRAM pequeñas, todas conectadas a una matriz densa de multiplexores. Básicamente, un FPGA es un montón de lógica discreta que puede ser electronicamente “recableado” ** simplemente reprogramando los multiplexores y celdas SRAM.

Como tal, realmente puede implementar una MCU dentro una FPGA, ya que una MCU es solo una determinada configuración de celdas lógicas. De hecho, las FPGA se utilizan con mucha frecuencia en el proceso de diseño de MCU.

Un microcontrolador es una implementación de una determinada configuración lógica. La razón por la que los tenemos es que al implementar una MCU directamente en el silicio, la cantidad total de espacio de silicio requerido puede optimizarse considerablemente, y se pueden realizar ciertas optimizaciones de rendimiento que la “genéricaidad” requerida de un FPGA prohíbe. Esto permite que los costos de producción de una MCU se reduzcan drásticamente y, como resultado, la MCU común es mucho más barata que una FPGA que es capaz de contener la lógica equivalente.


FPGA son útiles en ciertas aplicaciones, porque pueden implementar estructuras lógicas de una manera que las MCU no pueden. Por ejemplo, si necesita agregar X1 + Y1, X2 + Y2, X3 + Y3 y X4 + Y4, la MCU tendrá que hacer cada operación en secuencia *. Una FPGA puede tener simplemente 4 separar ALU al mismo tiempo, por lo que puede hacer la misma operación en una cuarta parte del tiempo (suponiendo que los dos dispositivos tengan la misma frecuencia).

Aquí es donde los FPGA (o ASIC diseñados para la misma tarea) realmente pueden brillar, en el hecho de que puedes hacer muchas, muchas cosas simultaneamente, que un solo proceso solo puede hacer de forma secuencial.

* (nota: estoy ignorando algunas cosas como SIMD aquí)

Esta es una buena pregunta,

Básicamente, un microcontrolador y un ASIC tienen hardware (a menudo denominado silicio) que está escrito en piedra y no se puede cambiar. Una FPGA puede ser configurado para representar muchos tipos diferentes de hardware (esto puede incluir microcontroladores).

Puede pensar que se puede hacer que un microcontrolador haga muchas cosas diferentes, pero todo esto se hace ejecutando diferentes programas, técnicamente software, pero a veces se lo denomina firmware, el hardware en sí no cambia esencialmente, realiza las mismas operaciones pero en un orden diferente con diferentes entradas.

Los FPGA se usan generalmente para generar los diseños que están comprometidos con los ASIC, la diferencia entre ellos es que si desea actualizar el funcionamiento interno de un FPGA o agregar / eliminar bloques funcionales, todo lo que necesita hacer es actualizar su firmware, esto no puede hacerse en ASIC ya que el funcionamiento interno se ha comprometido con el silicio, no es reconfigurable.

En resumen, con un microprocesador usas el mismo hardware para ejecutar diferentes programas, con un FPGA estás reconfigurando el hardware para realizar diferentes funciones y los ASIC son como un microcontrolador en el que el hardware no se puede cambiar, pero generalmente están diseñados para funcionar. una sola función extremadamente eficiente.

Tanto los ASIC como los FPGA pueden contener microcontroladores y, si lo hacen, puede escribir programas para ellos como lo haría con un microcontrolador independiente, un ejemplo de esto es el procesador integrado NIOS II de Altera.

Si esto todavía es confuso, avíseme qué es lo que no está claro y haré todo lo posible para aclarar mi respuesta.

gitano

Reseñas y calificaciones

Si posees algún recelo y forma de beneficiar nuestro división eres capaz de dejar una referencia y con mucho placer lo leeremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *