30 votos

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

He leído este puesto y no responde a mi pregunta en su totalidad:

Pienso en un microcontrolador como cualquier cosa que tiene algo de memoria, registra y puede procesar un conjunto de instrucciones como CARGAR, ALMACENAR y AGREGAR. Contiene puertas lógicas y demás para cumplir su función, pero su principal tarea es ser un procesador universal de bits. Pienso en un Microntrolador como un sistema de diseños ASIC interconectados para crear la capacidad de almacenar y procesar instrucciones.

Pienso en un dispositivo ASIC como un circuito que ha sido específicamente construido usando componentes lógicos y eléctricos para realizar una sola tarea, sin ninguna otra tarea en mente ni hardware extra incluido.

Pienso en un dispositivo FPGA como un dispositivo ASIC (un dispositivo de bajo nivel) + un montón de cosas sin usar que sobran, usado para implementar una tabla de verdad particular.

A pesar de su nombre, un FGPA se siente muy "específico de la aplicación", ya que debe ser recableado para realizar una tarea nueva y diferente. Esto lleva a la confusión con el ASIC. Aunque, en el caso de recablear un FPGA, todo el hardware necesario debe estar presente. Además, las FPGAs están pensadas para ser programables, pero ¿no es eso para lo que está pensado un microcontrolador?

El post anterior al que me referí también menciona a HDL, con el que estoy familiarizado. ¿No se puede usar HDL tanto para ASIC como para FPGA, y por proxy para diseñar un microcontrolador entero?

34voto

Simon Puntos 31

ASIC VS FPGA

Un Conjunto de Puertas Programables en Campo puede ser visto como la etapa de prototipo de los Circuitos Integrados de Aplicación Específica: Los ASIC son muy caros de fabricar, y una vez fabricados no hay vuelta atrás (ya que el coste fijo más caro es el de las máscaras [una especie de "stencil" de fabricación] y su desarrollo). Los FPGAs son reprogramables muchas veces, sin embargo, debido al hecho de que se conecta un conjunto genérico de puertas para lograr su objetivo, no se optimiza como los ASIC. Además, las FPGAs son dispositivos dinámicos nativos en el sentido de que si se apagan, no sólo se pierde el estado actual sino también la configuración. Sin embargo, ahora existen placas que añaden un chip FLASH y/o un microcontrolador para cargar la configuración en el arranque, por lo que este suele ser un argumento menos importante. Tanto los ASIC como las FPGAs pueden ser configurados con Lenguajes de Descripción de Hardware, y a veces se utilizan FPGAs para el producto final. Pero generalmente los ASICs se activan cuando el diseño es fijo.

Microcontrolador FPGA VS

En cuanto a la diferencia entre un microcontrolador y una FPGA, se puede considerar que un microcontrolador es un ASIC que básicamente procesa el código en FLASH/ROM de forma secuencial. Se pueden hacer microcontroladores con FPGAs aunque no esté optimizado, pero no al contrario. Los FPGA están cableados como los circuitos electrónicos, por lo que se pueden tener circuitos realmente paralelos, no como en un microcontrolador, donde el procesador salta de una pieza de código a otra para simular un paralelismo suficientemente bueno. Sin embargo, debido a que las FPGAs han sido diseñadas para tareas paralelas, no es tan fácil escribir código secuencial como en un microcontrolador.

Por ejemplo, típicamente si se escribe en pseudocódigo "que C sea A XOR B", en una FPGA que se traducirá en "construir una puerta XOR con los ladrillos de lego que contiene (tablas de búsqueda y cerrojos), y conectar A/B como entradas y C como salida" que se actualizará cada ciclo de reloj independientemente de si se utiliza C o no. Mientras que en un microcontrolador que se traducirá en "leer instrucción - es un XOR de variables en la dirección A y la dirección B de la RAM, resultado para almacenar en la dirección C. Cargar los registros de las unidades aritméticas lógicas, luego pedir a la ALU que haga un XOR, y luego copiar el registro de salida en la dirección C de la RAM". En el lado del usuario, sin embargo, ambas instrucciones eran de una línea de código. Si hiciéramos 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" (sintonización y salida en realidad) de un microcontrolador, tendrías que 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 un pequeño número de productos (más barato para grandes volúmenes), pero más optimizado.

Microcontrolador ASIC VS: ciertamente como comparar una herramienta con un martillo.

Microcontrolador FPGA VS: no está optimizado para el procesamiento de código secuencial, pero también puede hacer tareas paralelas muy fácilmente. Generalmente Los FPGAs están programados en HDL, los microcontroladores en C/Assembly

Siempre que la velocidad de las tareas paralelas sea un problema, toma una FPGA, evoluciona tu diseño y finalmente convertirlo en un ASIC si es más barato para ti en el a largo plazo (producción en masa). Si las tareas secuenciales están bien, toma un microcontrolador. Supongo que podrías hacer un CI aún más específico de la aplicación de esto si es más barato para ti a largo plazo también. La mejor solución probablemente será un poco de ambas.

Qué rápida búsqueda después de escribir esto me dio: enter image description here enter image description here

FPGA VS Microcontroladores, en este mismo foro

17voto

Stephen Denne Puntos 218

Los FPGAs pueden ser "recableados" mediante la reprogramación. Una FPGA carga su configuración en sus células lógicas configurables cuando se alimenta . Esto significa que puede ser reprogramado sin cambios en el hardware.

Los ASIC sólo pueden ser recableados modificando las máscaras fotolitográficas en la fundición de silicio.

Un microcontrolador es un escriba de ASIC, que ejecuta un programa y puede hacer cosas genéricas como resultado. Sin embargo, si quieres alterar el conjunto de instrucciones, o hacer algo similar, tienes que modificar el diseño del CI de silicio.


La diferencia entre una FPGA y una MCU es más difusa. Básicamente, lo que es una FPGA, a nivel de hardware, es un montón de pequeñas células SRAM, todas conectadas a una densa matriz de multiplexores. Básicamente, una FPGA es un montón de lógica discreta que puede ser electrónicamente "recableado" **simplemente reprogramando los multiplexores y las células SRAM.

Como tal, puedes implementar un MCU dentro de una FPGA, ya que una MCU es sólo una cierta configuración de células lógicas. De hecho, las FPGAs se utilizan muy comúnmente en el proceso de diseño de las MCU.

Un microcontrolador es una implementación de una cierta configuración lógica. La razón por la que los tenemos es que implementando un MCU directamente en el silicio, la cantidad total de espacio de la matriz de silicio requerida puede ser considerablemente optimizada, y se pueden hacer ciertas optimizaciones de rendimiento que la "genocidad" requerida de una FPGA prohíbe. Esto permite reducir drásticamente los costos de producción de una MCU, y como resultado, la MCU común es mucho más barata que una FPGA que es capaz de contener la lógica equivalente.


FPGAs son útil en ciertas aplicaciones, porque pueden implementar estructuras lógicas de una manera que las MCU no pueden. Por ejemplo, si se necesita añadir 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 separado ALUs al mismo tiempo para que pueda hacer la misma operación en una cuarta parte del tiempo (suponiendo que los dos dispositivos se registren a la misma velocidad).

Aquí es donde los FPGAs (o ASICs diseñados para la misma tarea) pueden realmente brillar, en el hecho de que puedes hacer muchas, muchas cosas simultáneamente que un solo proceso sólo puede hacer de forma secuencial.

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

6voto

Gipsy Danger Puntos 141

Es una buena pregunta,

Básicamente un micro controlador y un ASIC tienen un hardware (a menudo llamado silicio) que está grabado en piedra y no puede ser cambiado. Una FPGA puede ser configurado para representar muchos tipos diferentes de hardware (esto puede incluir microcontroladores).

Se puede pensar que un microcontrolador puede ser hecho para hacer muchas cosas diferentes, pero todo esto se hace ejecutando diferentes programas - técnicamente software pero a veces referido como firmware - el hardware en sí mismo no cambia esencialmente hace las mismas operaciones pero en un orden diferente con diferentes entradas.

Las FPGAs se utilizan normalmente para generar los diseños que están comprometidos con los ASICs la diferencia entre ellos es que si se quiere actualizar el funcionamiento interno de una FPGA o añadir/quitar bloques funcionales todo lo que hay que hacer es actualizar su firmware, esto no se puede hacer en los ASICs ya que el funcionamiento interno ha sido comprometido con el silicio, no es reconfigurable.

Así que, en resumen, con un microprocesador se utiliza el mismo hardware para ejecutar diferentes programas, con una FPGA se reconfigura el hardware para realizar diferentes funciones y los ASIC son como un microcontrolador en el sentido de que el hardware no se puede cambiar pero normalmente están diseñados para realizar una única función de forma extremadamente eficiente.

Tanto los ASIC como los FPGAs pueden contener microcontroladores y, si lo hacen, puedes escribir programas para ellos como si se tratara de un microcontrolador autónomo, un ejemplo de ello es el procesador integrado NIOS II de Altera.

Si esto sigue siendo confuso, hágame saber que no está claro y haré lo posible por aclarar mi respuesta.

Gipsy

4voto

Chad Johnson Puntos 248

bueno, no hay una FPGA que se programe por señales eléctricas si se comportan como una colección específica de puertas, algunas FPGAs incluyen memoria flash para almacenar esta configuración, otras no y deben ser reprogramadas después de cada reinicio de energía.

Un ASIC sale de la línea de producción ya configurada.

Los fallos de la FPGA se pueden arreglar con una actualización de firmware, los fallos del ASIC no se pueden reparar económicamente.

2voto

Brian Lacy Puntos 243

A pesar de su nombre, un FGPA se siente muy "específico de la aplicación", ya que debe ser recableado para realizar una tarea nueva y diferente.

Eso es lo contrario de lo que significa "específico de la aplicación". Puedes usar una FPGA para más de una aplicación recableando. No se puede cambiar un ASIC, por lo que sólo se puede aplicar a una tarea (esa tarea puede ser la implementación de un microcontrolador).

Aunque, en el caso de recablear una FPGA, todo el hardware necesario debe estar presente.

No estoy seguro de lo que esto significa. Normalmente hay una interfaz de software para reprogramar una FPGA. Es un ASIC que requiere millones de [unidades monetarias] de hardware.

Las FPGA están pensadas para ser programables, pero ¿no es eso para lo que está pensado un microcontrolador?

Un microcontrolador permite programar software secuencial para un hardware fijo. Igual que un ordenador normal, pero muy pequeño y con recursos limitados. Una FPGA te permite programar cualquier hardware que quieras usando un HDL.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X