J'ai lu ce post et il ne répond pas à ma question dans son intégralité:
Je pense à un microcontrôleur comme tout ce qui a de la mémoire, des registres et peut traiter un ensemble d'instructions telles que LOAD, STORE et ADD. Il contient des portes logiques et autres pour remplir son rôle, mais sa tâche principale est d'être un processeur universel de bits. Je pense à un microcontrôleur comme un système de conceptions ASIC interconnectées pour créer la capacité de stocker et de traiter des instructions.
Je pense à un périphérique ASIC comme un circuit qui a été spécifiquement construit à l'aide de composants logiques et électriques pour effectuer une seule tâche, sans autre tâche à l'esprit ni matériel supplémentaire inclus.
Je pense à un périphérique FPGA comme un périphérique ASIC (un périphérique de bas niveau) + un tas de trucs inutilisés, utilisés pour implémenter une table de vérité particulière.
Malgré son nom, un FGPA se sent très "spécifique à l'application", car il doit être recâblé pour effectuer une tâche nouvelle et différente. Cela conduit à une confusion avec l'ASIC. Cependant, dans le cas du recâblage d'un FPGA, tout le matériel nécessaire doit être présent. De plus, les FPGA sont censés être programmables, mais n'est-ce pas à cela que sert un microcontrôleur?
Le post ci-dessus que j'ai référencé mentionne également HDL, que je connais bien. Le HDL ne peut-il pas être utilisé à la fois pour ASIC et FPGA, et par proxy pour concevoir un microcontrôleur complet?
la source
Réponses:
ASIC vs FPGA
Un réseau de portes programmables sur site peut être considéré comme l'étape de prototypage de circuits intégrés spécifiques à une application: les ASIC sont très chers à fabriquer, et une fois fabriqués, il n'y a pas de retour en arrière (car le coût fixe le plus cher est les masques [sorte de fabrication ") "] et leur évolution). Les FPGA sont reprogrammables plusieurs fois, mais du fait qu'un tableau générique de portes est connecté pour atteindre votre objectif, il n'est pas optimisé comme les ASIC. De plus, les FPGA sont des périphériques nativement dynamiques en ce sens que si vous l'éteignez, vous perdez non seulement l'état actuel mais également votre configuration. Il existe désormais des cartes qui ajoutent une puce FLASH et / ou un microcontrôleur pour charger la configuration au démarrage, ce qui tend à être un argument moins important. Les ASIC et les FPGA peuvent être configurés avec les langages de description du matériel, et parfois des FPGA sont utilisés pour le produit final. Mais généralement, les ASIC interviennent lorsque la conception est fixée.
FPGA vs microcontrôleur
Quant à la différence entre un microcontrôleur et un FPGA, vous pouvez considérer un microcontrôleur comme un ASIC qui traite fondamentalement le code en FLASH / ROM séquentiellement. Vous pouvez fabriquer des microcontrôleurs avec des FPGA même s'ils ne sont pas optimisés, mais pas l'inverse. Les FPGA sont câblés comme des circuits électroniques afin que vous puissiez avoir des circuits véritablement parallèles, pas comme dans un microcontrôleur où le processeur passe d'un morceau de code à un autre pour simuler un parallélisme suffisant. Cependant, comme les FPGA ont été conçus pour des tâches parallèles, il n'est pas aussi facile d'écrire du code séquentiel que dans un microcontrôleur.
Par exemple, généralement si vous écrivez en pseudocode "soit C soit A XOR B", sur un FPGA qui sera traduit en "construisez une porte XOR avec les briques lego contenues (tables de recherche et verrous), et connectez A / B comme entrées et C en sortie "qui sera mis à jour à chaque cycle d'horloge, que C soit utilisé ou non. Alors que sur un microcontrôleur qui sera traduit en "instruction de lecture - c'est un XOR de variables à l'adresse A et à l'adresse B de la RAM, résultat à stocker à l'adresse C. Charger les registres des unités logiques arithmétiques, puis demander à l'ALU de faire un XOR, puis copier le registre de sortie à l'adresse C de la RAM ". Côté utilisateur, les deux instructions étaient constituées d'une ligne de code. Si nous devions faire cela, PUIS autre chose, en HDL, nous aurions à définir ce qu'on appelle un processus pour faire artificiellement des séquences - distinct du code parallèle. Alors que dans un microcontrôleur, il n'y a rien à faire. D'un autre côté, pour obtenir le "parallélisme" (accordage et déconnexion vraiment) d'un microcontrôleur, vous devrez jongler avec des threads, ce qui n'est pas anodin. Différentes façons de travailler, différentes finalités.
En résumé:
Quelle recherche rapide après avoir écrit ceci m'a donné:
FPGA vs Microcontrollers, sur ce même forum
la source
Les FPGA peuvent être «recâblés» par reprogrammation. Un FPGA charge sa configuration dans ses cellules logiques configurables lorsqu'il est alimenté . Cela signifie qu'il peut être reprogrammé sans modification du matériel.
Les ASIC ne peuvent être recâblés qu'en modifiant les masques photolitographiques de la fonderie de silicium.
Un microcontrôleur est un type d'ASIC, qui exécute un programme et peut donc faire des choses génériques. Cependant, si vous souhaitez modifier le jeu d'instructions ou faire quelque chose de similaire, vous devez modifier la disposition réelle du circuit intégré de silicium.
La différence entre un FPGA et un MCU est plus floue. Fondamentalement, ce qu'est un FPGA, au niveau matériel, c'est beaucoup de petites cellules SRAM, toutes connectées à une matrice dense de multiplexeurs. Fondamentalement, un FPGA est un tas de logique discrète qui peut être «recâblé» électroniquement ** simplement en reprogrammant les multiplexeurs et les cellules SRAM.
En tant que tel, vous pouvez réellement implémenter un MCU dans un FPGA, car un MCU n'est qu'une certaine configuration de cellules logiques. En fait, les FPGA sont très couramment utilisés dans le processus de conception des microcontrôleurs.
Un microcontrôleur est une implémentation d'une certaine configuration logique. La raison pour laquelle nous les avons est qu'en implémentant un MCU directement dans le silicium, la quantité globale d'espace de puce de silicium requise peut être considérablement optimisée, et certaines optimisations de performances peuvent être apportées que la «génériquesité» requise d'un FPGA interdit. Cela permet de réduire considérablement les coûts de production d'un MCU et, par conséquent, le MCU commun est beaucoup moins cher qu'un FPGA capable de contenir la logique équivalente.
Les FPGA sont utiles dans certaines applications, car ils peuvent implémenter des structures logiques d'une manière que les MCU ne peuvent pas. Par exemple, si vous devez ajouter X1 + Y1, X2 + Y2, X3 + Y3 et X4 + Y4, le MCU devra effectuer chaque opération dans l'ordre *. Un FPGA peut simplement avoir 4 ALU distinctes en même temps , il peut donc effectuer la même opération en un quart de temps (en supposant que les deux appareils sont cadencés au même rythme).
C'est là que les FPGA (ou ASIC conçus pour la même tâche) peuvent vraiment briller, dans le fait que vous pouvez faire beaucoup, beaucoup de choses simultanément , ce qu'un seul processus ne peut faire que séquentiellement.
* (note: j'ignore certaines choses comme SIMD ici)
la source
C'est une bonne question,
Fondamentalement, un microcontrôleur et un ASIC ont du matériel (souvent appelé silicium) qui est gravé dans la pierre et ne peut pas être changé. Un FPGA peut être configuré pour représenter de nombreux types de matériel différents (cela peut inclure des microcontrôleurs).
Vous pouvez penser qu'un microcontrôleur peut être fait pour faire beaucoup de choses différentes, mais cela se fait en exécutant différents programmes - techniquement des logiciels mais parfois appelés micrologiciels - le matériel lui-même ne change pas essentiellement, il fait les mêmes opérations mais dans un ordre différent avec différentes entrées.
Les FPGA sont généralement utilisés pour générer les conceptions qui sont dédiées aux ASIC, la différence entre eux est que si vous vouliez mettre à jour le fonctionnement interne d'un FPGA ou ajouter / supprimer des blocs fonctionnels, tout ce que vous avez à faire est de mettre à jour son firmware, cela ne peut pas être fait sur les ASIC car le fonctionnement interne a été engagé sur le silicium, il n'est pas reconfigurable.
Donc, en bref, avec un microprocesseur, vous utilisez le même matériel pour exécuter différents programmes, avec un FPGA, vous reconfigurez le matériel pour effectuer différentes fonctions et les ASIC sont comme un microcontrôleur en ce sens que le matériel ne peut pas être changé mais est généralement conçu pour fonctionner une seule fonction extrêmement efficace.
Les ASIC et les FPGA peuvent contenir des micro-contrôleurs et s'ils le font, vous pouvez écrire des programmes pour eux comme vous le feriez pour un micro-contrôleur autonome, un exemple de ceci est le processeur intégré NIOS II d'Altera.
Si cela prête toujours à confusion, faites-moi savoir ce qui n'est pas clair et je ferai de mon mieux pour clarifier ma réponse.
gitan
la source
Eh bien, aucun FPGA n'est programmé par des signaux électriques s'il se comporte comme une collection spécifique de portes, certains FPGA incluent une mémoire flash pour stocker cette configuration, d'autres non et doivent être reprogrammés après chaque réinitialisation de l'alimentation.
Un ASIC sort de la ligne de production déjà configuré.
Les bugs FPGA peuvent être corrigés avec une mise à niveau du firmware, les bugs ASIC ne peuvent pas être réparés économiquement.
la source
C'est l'opposé de ce que signifie "spécifique à l'application". Vous pouvez utiliser un FPGA pour plusieurs applications en le recâblant. Vous ne pouvez pas modifier un ASIC, il ne peut donc être appliqué qu'à une seule tâche (cette tâche peut implémenter un microcontrôleur).
Je ne sais pas ce que cela signifie. Il existe généralement une interface logicielle pour reprogrammer un FPGA. C'est un ASIC qui nécessite des millions de [unités monétaires] de matériel.
Un microcontrôleur vous permet de programmer un logiciel séquentiel pour un matériel fixe. Tout comme un ordinateur normal, mais très petit et aux ressources limitées. Un FPGA vous permet de programmer tout matériel que vous souhaitez en utilisant un HDL.
la source