Comparez la mise en œuvre d'une conception d'automatisation simple sur un MCU par rapport à un FPGA / CPLD

8

Je travaille avec les MCU depuis les années 90 et je me suis récemment aventuré sur la scène FPGA avec les puces de la série Spartan6 de Xilinx. En supposant une conception d'automatisation d'usine simple avec des capteurs et des moteurs et une certaine intelligence pour tout relier, sur quel type d'appareil pourrais-je terminer la conception plus rapidement et plus facilement, MCU ou FPGA? Les points petits ou "évidents" sont également appréciés car je suis nouveau dans le FGPA en général.

Kevin Boyd
la source
Même une solution FPGA impliquerait presque certainement un processeur, soit à côté du FPGA, implémenté à l'intérieur de celui-ci, soit dans un ordinateur plus grand connecté. Les structures de programme stockées sont juste beaucoup plus facilement ciblées pour implémenter les parties complexes d'algorithmes que ne le seraient la logique spécialisée ou les machines à états, de sorte que vous n'enregistrez la dernière que pour des choses qui doivent être rapides (ou massivement parallèles) mais simples.
Chris Stratton
Excellentes réponses de Richard et Martin ci-dessous. Il peut être tentant d'essayer d'appliquer une compétence ou une technologie nouvellement acquise au problème suivant, mais dans ce cas (pour les raisons décrites ci-dessus), je pense qu'un MCU est la solution.
Radian

Réponses:

11

Il n'y a aucune raison d'utiliser des FPGA, sauf si vous en avez besoin . Même deux ingénieurs de talent similaire dans les domaines MCU et FPGA utiliseraient un MCU pour une tâche d'automatisation relativement simple.

Pro MCU:

  • Les microcontrôleurs ont généralement tous les périphériques du monde extérieur prêts à l'emploi
  • La compilation prend quelques secondes (les FPGA prennent des minutes à des heures)
  • Il y a un ordre de grandeur (ou deux!) Plus d'ingénieurs qui peuvent vous aider ou reprendre là où vous vous étiez arrêté. (Pour une comparaison amusante, pas nécessairement statistiquement valide, comparez le nombre de questions / réponses sur Stack Overflow pour C vs VHDL ou FPGA )

Utilisez un FPGA si vous le devez car:

  • Le nombre de calculs requis ne peut pas être satisfait dans le budget de puissance, de poids, de taille ou de coût avec un microprocesseur
  • Il y a des délais durs en temps réel qui ne peuvent pas être garantis avec un logiciel (temps de réponse dans le domaine de la microseconde par exemple)
  • L'utilisation de la logique FPGA peut faciliter la formulation d'assertions solides sur les temps de réponse
  • Vous pouvez faire de grosses économies de coûts, d'énergie, etc. en utilisant des types de données personnalisés (comme une virgule flottante 12 bits par exemple)

Ou:

  • Votre mission vous dit que vous devez :)
Martin Thompson
la source
+1 Pour la 3ème puce avec "un ordre de grandeur (ou deux!) Plus d'ingénieurs qui peuvent vous aider". La dernière fois que j'ai utilisé ce critère, c'était pour choisir un langage de programmation.
Nick Alexeev
5

Quelques raisons pour lesquelles je pense que l'utilisation d'un microcontrôleur (MCU) serait plus facile pour vous:

  • Vous avez de l'expérience avec les MCU. Apprendre les tenants et aboutissants de toute nouvelle puce prend du temps.
  • Les MCU ont des périphériques intégrés que vous devrez implémenter vous-même (ou acheter) sur un FPGA. Par exemple, la plupart des MCU ont un port I2C qui vous sera utile si vous lisez à partir d'un capteur I2C. De plus, la plupart des microcontrôleurs disposent d'une sorte de convertisseur analogique-numérique et d'un modulateur de largeur d'impulsion, qui seront probablement nécessaires pour un bon contrôle du moteur.
  • Les algorithmes complexes sont plus faciles à exprimer en C qu'en VHDL (je n'ai aucune expérience de Verilog).
  • Les retards à taille humaine sont faciles dans un MCU, mais prennent des ressources importantes dans un FPGA.
  • Pour une automatisation simple en usine, les largeurs de bits courtes et standard et les vitesses lentes des microcontrôleurs sont probablement suffisantes.

Il est nécessaire dans les deux cas de faire attention au code que vous écrivez, afin qu'il fonctionne correctement dans toutes les situations, en particulier les conditions dangereuses.

richarddonkin
la source