Si je comprends bien, les FPGA sont des circuits à porte logique entièrement configurables. Cela étant, on peut concevoir n'importe quoi avec eux. On peut tout concevoir de la manière la plus personnalisée possible et, par conséquent, atteindre les mêmes objectifs de manière beaucoup plus efficace, ce qui peut être obtenu à l'aide d'un microcontrôleur. Ayant cela, on dirait qu'un FPGA bat un microcontrôleur à tout moment, n'importe quel jour. Donc, ma question est la suivante: si les FPGA sont vraiment aussi géniaux, qu'est-ce qui les empêche de devenir beaucoup plus répandus que les microcontrôleurs? De ce point de vue, il me semble que les FPGA auraient dû éliminer les microcontrôleurs il y a longtemps. Alors, pourquoi n'est-ce pas le cas? Est-ce le coût, la difficulté de programmer un FPGA ou tout autre chose?
la source
Réponses:
Vous ignorez beaucoup de facteurs qui entrent en compte dans les choix de conception:
Les principaux avantages des FPGA par rapport aux micros sont qu’ils sont plus rapides et peuvent faire plus de choses en parallèle. Autre que cela, vous préférez utiliser un micro. Par conséquent, dans le processus de conception, vous commencez généralement par un micro, puis passez à contrecœur à un FPGA lorsque vous avez vraiment besoin de la vitesse et / ou du fonctionnement simultané à haute vitesse. Même dans ce cas, vous implémentez uniquement les composants critiques pour la vitesse dans un FPGA et laissez les fonctions de contrôle de vitesse inférieure et similaires dans le micro.
la source
Une distinction que je n'ai pas vue développer ici est que les FPGA sont utilisés et se comportent d'une manière complètement différente des processeurs.
Un FPGA est vraiment doué pour effectuer exactement la même tâche, encore et encore. Par exemple, traiter des signaux vidéo, audio ou RF. Ou acheminer des paquets Ethernet. Ou simuler un écoulement de fluide. Toute situation dans laquelle vous recevez très rapidement le même type de données et que vous souhaitez traiter toutes ces informations de la même manière. Ou vous voulez exécuter le même algorithme à plusieurs reprises. Le FPGA n'a pas vraiment de «tâches» qui commencent et qui s'arrêtent [1], tout son travail consiste à faire la même chose pour toutes les données reçues, aussi longtemps qu'elles sont actives. Cela ne change pas de vitesse, cela ne fait rien d'autre. C'est l'ouvrier final de la chaîne de production. Il fera la même chose à plusieurs reprises, aussi vite que possible, pour toujours.
Les processeurs, par contre, sont la quintessence de la flexibilité. Ils peuvent être programmés pour faire n'importe quoi, et pour faire plusieurs choses différentes en même temps. Ils ont des tâches qui démarrent et s’arrêtent, ils changent de vitesse, multitâches, changent constamment de fonctions.
Le FPGA et la CPU sont des opposés complets. La commodité du processeur est le temps - il faut que les choses soient faites plus rapidement. Plus votre application s'exécutera rapidement, mieux ce sera.
La commodité du FPGA est l’espace. Votre FPGA n’est que très grand et il n’ya que peu de portes disponibles pour effectuer la tâche que vous souhaitez. La plupart du temps, le problème est plus grand que la vitesse [2].
Il est possible de faire en sorte qu'un FPGA se comporte comme un processeur. Vous pouvez insérer un noyau IP de processeur dans un FPGA, mais il est très difficile à justifier en raison des raisons avancées par d'autres [3]. Le FPGA et la CPU sont des opposés, chacun ayant ses propres forces et faiblesses, et ayant tous deux leur propre place.
Remarques:
1) Un FPGA peut être conçu pour effectuer différentes tâches, mais même dans ce cas, il s'agirait d'un numéro spécifique pour lequel il a été conçu.
2) La vitesse est également une spécification de conception FPGA. C'est vraiment un compromis entre vitesse et taille.
3) L'installation d'un processeur dans un FPGA est relativement fréquente, mais elle est effectuée au cas par cas, en fonction des applications spécifiques. Par exemple, si vous avez besoin d’un microcontrôleur très petit et d’un espace FPGA supplémentaire.
Et enfin: cette réponse est une grande simplifcation - les FPGA sont utilisés de manière extrêmement variée et complexe et il s’agit d’un très bref aperçu de la façon dont ils sont utilisés en général.
la source
Comme le dit Olin, un micro est plus efficace pour de nombreuses tâches et vous trouverez presque toujours un micro utilisé partout où un FPGA apparaît. La superficie de silicium utilisée (ce qui se traduit par un coût non linéaire) et la consommation d'énergie sont bien moindres. Pour cette raison, il n'est pas rare d'implémenter un MCU «souple» sur un FPGA, mais le coût et les performances d'un tel micro sont décevants.
Certains FPGA modernes contiennent un ou plusieurs noyaux «durs» tels que la série omniprésente ARM. En outre, ils peuvent contenir des blocs de mémoire dédiés car il est vraiment inefficace de faire de la mémoire à partir de portes. Un micro-coeur 32 bits occupe une infime partie de la surface de silicium d'un FPGA typique, ce qui vous donne une idée des coûts relatifs.
Le développement est beaucoup plus difficile et l’IP a tendance à ne pas être aussi librement disponible que pour les micros et les solutions SOC dédiées - par exemple les contrôleurs LCD, les interfaces PCI, les MAC Ethernet. Cela s'explique en partie par le fait qu'en divulguant les descriptions de logique HDL, ils transfèrent la conception, pas seulement l'instanciation de la conception. Une autre raison est que les performances dépendent de la disposition de la logique dans le FPGA, ce qui nécessite beaucoup d'efforts lors du développement.
Une autre complication réside dans le fait que la plupart des FPGA complexes reposent sur une RAM pour la configuration et que les coûts de processus sont tels qu'une mémoire non volatile externe est nécessaire pour stocker la configuration et la mémoire de programme pour tout MCU embarqué. Cette mémoire doit être chargée dans la RAM lors de la mise sous tension.
Les FPGA sont des outils extrêmement utiles dans la boîte à outils, mais ils ne vont pas remplacer prochainement les MCU ou les ASIC.
la source
La meilleure utilisation du silicium pour un travail est un ASIC, rien ne se perd, mais la courbe d’apprentissage, le NRE et la rigidité sont énormes.
Il existe deux manières de créer de la flexibilité dans une puce. a) Avoir une ALU optimisée en termes d'espace et l'utiliser encore et encore sur les données stockées. C'est ce qu'on appelle une MCU et nécessite une vaste zone de silicium qui «ne fait rien», la mémoire programme, les bus larges fonctionnant d'une unité à l'autre et les commutateurs d'accès au bus. b) Avoir une logique fine, avec quelques éléments optionnels optimisés pour l’espace tels que des multiplicateurs, de petites RAM et des processeurs simples. C'est ce qu'on appelle un FPGA, et nécessite une vaste zone de silicium qui «ne fait rien», des commutateurs programmables et des lignes de connexion.
De toute évidence, avec ces structures, les microcontrôleurs fonctionnent mieux pour les tâches pouvant être décomposées en blocs série, tandis que les FPGA conviennent mieux aux tâches nécessitant un fonctionnement parallèle à grande vitesse. Lorsque l'application est lourde et que le coût est dominé par le coût du silicium, c'est ainsi que les deux types seront naturellement utilisés.
Lorsque l'application est légère mais que le volume est élevé, le coût est dominé par l'emballage plutôt que par le silicium, et l'un ou l'autre type est viable. Altera dispose de très petits FPGA de très faible puissance pour rivaliser avec des MCU coûtant un dollar.
Pour les applications à faible volume, le coût de développement a tendance à dominer et les MCU gagnent, à condition qu’ils aient la vitesse
la source
En termes de consommation d'énergie et d'utilisation du silicium, un FPGA est très médiocre comparé à un microprocesseur.
Un FPGA consomme une grande partie de sa surface de silicium dans les circuits de configuration logique, ce qui ne s’applique pas à un micro. Il doit y avoir beaucoup plus d'interconnexions disponibles qu'il n'en faudrait sur une implémentation dédiée d'un microprocesseur.
Le FPGA consomme plus d'énergie qu'un ASIC dédié, tel qu'un microprocesseur, car la logique n'est pas implémentée aussi efficacement.
Toute fonction pouvant être implémentée dans un FPGA peut être réalisée de manière plus efficace, à moindre coût, avec une consommation d'énergie moindre, un espace de carte réduit, etc. dans un ASIC dédié. Cela suppose que les volumes sont suffisants pour compenser le NRE.
la source
Les systèmes à microprocesseur, et plus tard les microcontrôleurs, ont été en mesure d’atteindre un niveau de fonctionnalité énorme en étant capables d’utiliser un grand nombre de circuits individuels pour réaliser de nombreuses tâches différentes à des moments différents. Je trouve instructif de comparer la machine d'arcade Tank, conçue en 1976, avec le jeu Combat, qui tourne sur la deuxième machine de jeu au monde, Atari 2600, contrôlée par un microprocesseur. mettre en œuvre des jeux comme Tank à un coût minimal; le fait qu'il soit possible de jouer à différents jeux en insérant différentes cartouches de ROM était un avantage appréciable.
Le jeu Tank permet à deux joueurs de piloter des tanks autour de l'écran et de se tirer des coups de feu. Il possède des marqueurs "slip" pour les positions X et Y de chaque char, les positions X et Y des tirs de chaque joueur, les compteurs haut / bas pour l'angle de chaque joueur et l'angle de tir de chaque joueur, un compteur pour le score de chaque joueur, le faisceau tramé X et Y compteurs de position, et beaucoup de circuits de contrôle au-dessus de ces choses. Il dispose d'un matériel permettant d'extraire et d'afficher les données de lecture de la zone de lecture, ainsi que d'un matériel permettant d'extraire des formes pour les chars et les scores de la ROM des deux joueurs et de les afficher.
L'Atari 2600 possède un compteur de glissement pour les positions horizontales de chacun des objets du joueur, chacun des deux objets du missile, et un objet supplémentaire appelé "balle" qui n'est pas utilisé dans le combat mais est utilisé dans d'autres jeux. Pour chacun des objets du lecteur, il dispose d’un matériel permettant de générer un motif stocké dans un verrou à 8 bits, ainsi qu’un verrou "retardé" à huit bits pour chaque lecteur copié dans le verrou principal à 8 bits lorsque le la forme est mise à jour. Il possède également un compteur de position de faisceau horizontal et un verrou en forme de champ de jeu de 20 bits qui est transmis à l'écran deux fois par ligne de balayage, la copie de droite apparaissant sous forme de répétition ou de reflet de gauche. Il dispose de matériel pour détecter les collisions, mais ne rien faire en conséquence. Il ne pas ne possède aucun matériel pour les positions verticales des objets, ni la position verticale du faisceau de trame (!), ni aucun matériel associé à la conservation de score, à l'affichage du score, à la durée de la partie, etc.
Toutes les fonctions pour lesquelles le 2600 omet du matériel sont gérées par un logiciel intégré à la cartouche. Il suffit de vérifier la position verticale de chaque objet par rapport à la position du faisceau tramé une fois par ligne de balayage. Il suffit de mettre à jour le score du joueur et le temps de jeu restant au plus un par image. Les scores des joueurs sont stockés sur des lignes de balayage situées au-dessus du terrain de jeu. et peut donc partager le même matériel que celui utilisé pour le champ de jeu, etc.
L’approche normale pour mettre en œuvre un jeu tel que "Tank" dans un FPGA serait d’utiliser des circuits séparés pour différentes fonctions de la même manière que la machine à arcade de 1976. Une telle approche fonctionnerait, mais utiliserait une quantité importante de matériel. Une approche basée sur un microprocesseur pourrait éliminer plus de la moitié de ce matériel en contrepartie de l'ajout d'un microprocesseur, qui contiendrait probablement moins de circuits que le matériel remplacé (le 2600 pourrait implémenter des jeux bien plus sophistiqués que Tank, ce qui nécessiterait beaucoup plus de matériel s’ils n’utilisaient pas de microprocesseur).
Les FPGA sont excellents dans les cas où vous avez besoin d’un appareil capable d’exécuter simultanément de nombreuses tâches simples . Les systèmes basés sur un microprocesseur (ou sur un microcontrôleur) sont généralement meilleurs, mais dans les cas où de nombreuses tâches doivent être exécutées, mais ne doivent pas être traitées simultanément, car elles facilitent l'utilisation d'une petite quantité de circuits pour atteindre un grand nombre de fins distinctes.
la source
C'est entièrement le coût. Lorsqu'un micro peut être aussi bas que 30 centimes, un FPGA bon marché se situe dans le territoire à 5 $. Le coût ne semble peut-être pas si élevé, mais lorsque vous fabriquez un million de jouets fantaisistes à vendre à 10 $, le prix du FPGA tue vos résultats.
la source
Pour ajouter d’autres très bonnes réponses, j’estime que l’adoption du FPGA relève également du domaine: par exemple, pour les dispositifs neuromorphes, les cartes FPGA sont en train de devenir omniprésentes car il existe un besoin énorme de parallélisme, ce qui est un point fort. de FPGA.
Si vous extrapolez la tendance observée pour les dispositifs neuromorphes, vous pouvez imaginer que d’autres champs basés, ou nécessitant de manière critique, le parallélisme adopteront probablement beaucoup plus les FPGA. Donc, peut-être que les FPGA ne deviendront pas omniprésents pour les produits grand public, mais cela peut l'être pour des domaines spécifiques, car il semble que cela se produit actuellement pour les dispositifs neuromorphes.
la source