He leído esta publicación y no responde mi pregunta en su totalidad:
Pienso en un microcontrolador como cualquier cosa que tenga algo de memoria, se registre y pueda procesar un conjunto de instrucciones como LOAD, STORE y ADD. Contiene puertas lógicas y demás para realizar su función, pero su tarea principal es ser un procesador universal de bits. Pienso en un Microntroller 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 se ha construido específicamente utilizando componentes lógicos y eléctricos para realizar una sola tarea, sin otra tarea en mente ni hardware adicional incluido.
Pienso en un dispositivo FPGA como un dispositivo ASIC (un dispositivo de bajo nivel) + un montón de cosas sobrantes sin usar, utilizadas 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 volver a cablearse para realizar una tarea nueva y diferente. Esto lleva a confusión con ASIC. Aunque, en el caso de recablear un FPGA, todo el hardware necesario debe estar presente. Además, los FPGA están destinados a ser programables, pero ¿no es eso para lo que está destinado un microcontrolador?
La publicación anterior a la que hice referencia también menciona HDL, con la que estoy familiarizado. ¿Se puede usar «t HDL para ASIC y FPGA, y por proxy para diseñar un microcontrolador completo?
Comentarios
- It ‘ no está muy claro cuál es su pregunta. ¿Ha leído preguntas relacionadas sobre FPGA vs ASIC? HDL se usa realmente para diseñar implementaciones de ASIC y FPGA, y puede diseñar un microcontrolador en HDL.
- Altera ofrece un libro electrónico gratuito llamado FPGAs for Dummies , que explica bien la diferencia entre FPGA, ASIC y microcontroladores.
- @kkrambo ¿Me llamas ‘ yo un tonto? 🙂 Lo siento, no pude ‘ resistir … lo comprobaré.
- Agregué la palabra ‘ similitudes ‘ al título de la pregunta, porque parece que hay detalles minuciosos de la jerga técnica que pueden confundir la relación entre los tres dispositivos diferentes: por ejemplo, un dispositivo puede contener uno de los otros dos dispositivos, o puede contener muchos componentes similares pero diferir en algún aspecto importante. Esto ya ha sido abordado por algunas de las respuestas existentes. Gracias.
Respuesta
ASIC vs FPGA
Una matriz de puerta programable en campo puede verse como la etapa de creación de prototipos de circuitos integrados específicos de aplicación: los ASIC son muy costosos de fabricar y una vez que se fabrican allí no hay vuelta atrás (ya que el costo fijo más caro son las máscaras [tipo de «plantilla» de fabricación] y su desarrollo). Los FPGA se pueden reprogramar muchas veces, sin embargo, debido al hecho de que se conecta un conjunto genérico de puertas 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 apagas, pierdes no solo el estado actual sino también tu configuración. Ahora existen placas que agregan un chip FLASH y / o un microcontrolador a 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, los FPGA son utilizado 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 han sido diseñados 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 «construir 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á en cada ciclo de reloj independientemente de si se usa C 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 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, en el 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 es como comparar una herramienta con un martillo.
FPGA vs microcontrolador: no optimizado para el procesamiento de código secuencial, pero también puede realizar tareas realmente paralelas con mucha facilidad. Generalmente 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 es más barato para usted a largo plazo . La mejor solución probablemente sea un poco de ambos.
Qué búsqueda rápida me dio después de escribir esto:
Respuesta
Los FPGA se pueden «volver a cablear» mediante la reprogramación. Un 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 tipo 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, es una gran cantidad de pequeñas celdas SRAM, todas conectadas a una matriz densa de multiplexores. Básicamente, un FPGA es un montón de lógica discreta que puede ser electrónicamente «reconfigurada» ** simplemente reprogramando los multiplexores y las celdas SRAM.
Como tal, puede realmente implemente una MCU dentro de una FPGA, ya que una MCU es solo una cierta configuración de celdas lógicas. De hecho, los 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, el La MCU tendrá que realizar cada operación en secuencia *. Una FPGA simplemente puede tener 4 ALU separadas 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 simultáneamente , que un solo proceso solo puede hacer secuencialmente.
* (nota: aquí estoy ignorando algunas cosas como SIMD)
Comentarios
- No ‘ No creo que la distinción FPGA / ASIC sea borrosa; en una FPGA, los circuitos cuyo » cableado » pueden cambiarse operan simultánea e independientemente. Una MCU tiene una gran cantidad de circuitos cuyo cableado no se puede cambiar, cuyo comportamiento se controla a través de información a la que se accede por partes desde una matriz de memoria programable. En cualquier momento, una CPU generalmente solo podrá realizar una operación de una lista de unos pocos miles a unos miles de millones de opciones, pero la MCU se diseñará de modo que la combinación de tales operaciones en secuencia permita hacer trabajo útil.
- Gracias. MUY cerca de convertirse en la respuesta … aunque 10 meses después. +1 para hacer enmiendas.
Respuesta
Esta es una buena pregunta,
Básicamente un microcontrolador y un Los ASIC tienen hardware (a menudo denominado silicio) que está grabado en piedra y «no se puede cambiar. Un FPGA se puede configurar para representar muchos tipos diferentes de hardware (esto puede incluir microcontroladores).
Puede pensar que un microcontrolador se puede hacer para hacer 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 se puede hacer en ASIC como el trabajo interno Los reyes se han comprometido con el silicio, no es reconfigurable.
En resumen, con un microprocesador usas el mismo hardware para ejecutar diferentes programas, con una FPGA estás reconfigurando el hardware para realizar diferentes funciones y los ASIC son como un microcontrolador en el que el hardware no puede ser cambiado, pero generalmente están diseñados para realizar una sola función de manera 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 este es el procesador integrado NIOS II de Altera.
Si esto todavía es confuso, déjeme saber qué es lo que no está claro y haré todo lo posible para aclarar mi respuesta.
Gipsy
Respuesta
bueno, no un FPGA está programado por señales eléctricas si se comporta como una colección específica de puertas, algunos FPGA incluyen flash memoria para almacenar esta configuración, algunos no lo hacen y deben ser reprogramados después de cada reinicio de energía.
Un ASIC ya sale de la línea de producción c configurado.
Los errores de FPGA se pueden corregir con una actualización de firmware, los errores de ASIC no se pueden reparar de forma económica.
Respuesta
A pesar de su nombre, una FGPA se siente muy» específica de la aplicación «, ya que debe volver a cablearse para realizar una tarea nueva y diferente.
Eso es lo contrario de lo que significa «específico de la aplicación». Puede utilizar un FPGA para más de una aplicación reconectándolo. No puede cambiar un ASIC, por lo que solo se puede aplicar a una tarea (esa tarea puede ser la implementación de un microcontrolador).
Aunque, en el caso de recableando un FPGA, todo el hardware necesario debe estar presente.
No estoy seguro de lo que esto significa. Por lo general, existe una interfaz de software para reprogramar una FPGA. Es un ASIC que requiere millones de [unidades monetarias] de hardware.
FPGA «s están destinados a ser programables, pero ¿no es para eso para lo que está diseñado un microcontrolador?
Un microcontrolador le permite programar software secuencial para un hardware fijo. Como una computadora normal, pero muy pequeña y con recursos limitados. Una FPGA le permite programar cualquier hardware que desee utilizando una HDL.