J'ai récemment assemblé un convertisseur de tension de haute puissance pour un client, et tout au long de la conception, j'ai essayé d'éviter l'utilisation d'un MCU. Une fois que le client a voulu ajouter un variateur à la carte, j'ai été contraint d'ajouter un petit composant avec une EEPROM de 100 000 cycles. Pour moi, cela n'était pas un si gros problème car il était simple de dépenser 0,33 $ par carte pour ajouter cette fonction, tout en permettant également au système d'être reconfiguré plus tard. Cela m'a fait réfléchir à une question intéressante : quand devriez-vous choisir un FPGA plutôt qu'un MCU ?
Les concepteurs avec lesquels je travaille vivent et respirent les modules/SoC MCU d'Arm, STM, TI et Nordic, principalement grâce au soutien des fabricants à travers les SDK. Qu'en est-il des FPGA ? Peut-on s'attendre au même niveau de soutien, et devriez-vous choisir d'utiliser un FPGA pour un composant embarqué ? La réponse à ce type de question n'est pas toujours simple. Voici ce que vous devriez considérer lors de la sélection d'un FPGA par rapport à un MCU et où vous pouvez trouver de nouveaux composants pour vos cartes.
Je me souviens quand j'ai commencé à travailler sérieusement dans la conception électronique et à lire la soupe d'acronymes pour différents composants. Au début, il était difficile de voir les différences entre certains processeurs numériques, mais comprendre les limites de chaque composant pour différentes applications m'a bien servi. Les limites de ce que vous pouvez programmer dans ces processeurs ont également été cruciales pour comprendre quand choisir chaque type de composant.
Je vais aborder ces aspects dans un instant, mais je reçois encore parfois la question occasionnelle d'un jeune concepteur : qu'est-ce que les FPGA et les MCU ? Ils fournissent tous les deux de la puissance de calcul, donc ils doivent être des remplacements parfaits, n'est-ce pas ? Cela dépend de l'application que vous devez effectuer.
Pour avoir une idée des différences entre les composants FPGA et MCU, il est utile de les comparer avec les ASIC. Le "A" dans ASIC vous indique que le composant est conçu pour une application spécifique au sein d'un système plus large. Les exemples incluent :
La liste ne s'arrête pas là. Tout ASIC fournira des fonctions très spécifiques, parfois programmables, pour une gamme étroite de tâches. Le niveau d'intégration dans un ASIC varie également selon la puce. Un microcontrôleur est également programmable dans une certaine mesure, bien que les tâches qui peuvent être effectuées soient plus larges que ce qui est intégré dans le firmware d'un ASIC. Les MCU sont conçus pour être adaptables et effectuer toute tâche que vous pouvez programmer dans l'appareil avec le SDK du fabricant.
Le plaisir et la complication viennent avec les FPGA. J'aime penser aux FPGA comme à des ASIC personnalisables. Si l'oxymore vous dérange, sachez simplement que vous pourriez utiliser un FPGA dans le cadre du prototypage lors de la conception d'un ASIC. Cela est dû au fait que tous les blocs logiques d'un FPGA sont configurables (ce sont essentiellement des cellules SRAM). Vous construisez le firmware à partir de zéro, et vous pouvez définir comment les tâches sont exécutées sur le dispositif au niveau matériel. C'est quelque chose que vous ne pouvez pas faire avec un MCU ou un ASIC.
FPGA vs. MCU vs. ASICs : le spectre spécifique vs. générique.
Le côté amusant des SoCs est qu'ils peuvent aller du spécifique au générique en termes de capacités de calcul. Les fabricants de composants vont attacher le terme « SoC », « SoM », ou « SiP » à un nouveau circuit intégré qui effectue une gamme de tâches, tant que ces tâches nécessitaient auparavant plusieurs circuits intégrés séparés. Ces composants sont hautement intégrés, et ils peuvent se situer n'importe où sur le spectre spécifique vs. générique.
Quelque part à droite du FPGA dans le graphique ci-dessus se trouveraient les MPUs. Ces dispositifs exécutent un système d'exploitation, interagissent avec de multiples périphériques, et sont les bêtes de somme de l'informatique à usage général. Certains pourraient arguer que le MCU et le FPGA devraient échanger leurs places en termes de généralité (voir pourquoi ci-dessous), mais ni un FPGA ni un MCU ne sont conçus pour le même type de calcul général qu'un MPU.
Le tableau ci-dessous montre une brève comparaison de certains des aspects les plus importants des MCUs et des FPGAs. Chaque type de composant a ses avantages, et il appartient au concepteur de déterminer lequel est le meilleur pour leur système. Personnellement, je préfère les MCUs car j'ai une certaine expérience de travail en C et je n'ai jamais appris le HDL. Cependant, les FPGAs peuvent être programmés pour avoir certaines des mêmes fonctions que les ASICs spécialisés, tant que vous savez comment les coder.
| | FPGA | MCU | | ---------- | ---------- | ---------- | | Reprogrammation| Entièrement reprogrammable au niveau matériel | Varie : dépend du système d'exploitation embarqué, dynamique | | Temps de programmation | Plus long : nécessite de recoder et de recompiler tout en code machine | Plus court : aidé par les SDKs et bibliothèques du fabricant | | Facilité de programmation | Considéré comme ayant une courbe d'apprentissage plus abrupte | Facile : toute personne familière avec les langages courants peut coder | | Consommation d'énergie | Plus élevée | Plus faible | | Parallélisation | Peut être configurée lors de la programmation | Limitée par l'architecture matérielle | | Point fixe vs. point flottant | Configuré pour le point fixe, mais le point flottant peut être implémenté lors de la programmation | Les deux sont accessibles | | Langages | Langage de description matériel (HDL) | Langage C/Assembleur, autres si pris en charge par RTOS (par ex. Python) |
Parce que les FPGA sont souvent considérés comme difficiles à programmer par les nouveaux développeurs, un MCU est généralement vu comme le meilleur processeur pour un dispositif embarqué. Cela a été largement aidé par la communauté open source, et certains projets open source peuvent être utilisés comme l'architecture de base ou la preuve de concept pour un nouveau produit. Ajoutez à cela le soutien des fabricants, et vous disposez de nombreux outils disponibles pour la programmation des MCU.
Malgré la courbe d'apprentissage dans la programmation des FPGA, ils sont beaucoup plus configurables en termes d'architecture de firmware. La parallélisation peut être programmée dans le dispositif, en fonction du nombre de LUTs et d'ALUs disponibles. Cela fait des FPGA un excellent choix lorsque votre firmware doit être conçu pour des applications très spécifiques. Les exemples incluent l'inférence en IA, le traitement d'image, les algorithmes de contrôle matériel, et d'autres tâches qui nécessitent un calcul répétitif (ou parallèle).
Votre prochain système embarqué n'ira nulle part sans les bons composants, et vous pouvez trouver les composants dont vous avez besoin avec lorsque vous utilisez un moteur de recherche de pièces électroniques comme Octopart. Les fonctions de filtration avancées vous aident à affiner votre recherche pour les composants dont vous avez besoin et peuvent vous aider à choisir rapidement entre un FPGA vs. MCU pour votre prochain système. Vous pouvez trouver des FPGA et des MCU sur Octopart.
Restez à jour avec nos derniers articles en vous inscrivant à notre newsletter.