Pourquoi implémenter un microcontrôleur dans FPGA?


16

J'étudie actuellement les FPGA, ce qu'ils peuvent faire, comment ils le font, etc.

Dans plus d'un endroit ( par exemple ici ), j'ai vu des projets qui implémentent un simple microcontrôleur avec FPGA.

Donc ma question:
je voudrais savoir, quel est le but de faire de telles implémentations? Pourquoi utiliser un microcontrôleur implémenté en FPGA au lieu d'avoir un micro à bord? Quels sont les avantages? Et peut-être aussi quels sont les inconvénients?


Beaucoup d'entre eux utilisent des cœurs IP en conserve, mais le fait de rouler le vôtre peut être une excellente expérience d'apprentissage.
Chris Stratton

1
@ChrisStratton - Pouvez-vous en dire plus ou publier un lien sur les cœurs IP en conserve? Oui, je suis sûr que cela peut être une excellente expérience d'apprentissage. Mais c'est l'une des raisons pour lesquelles je pose cette question. Je me demande s'il s'agit de quelque chose de plus qu'une simple expérience d'apprentissage.
James C

1
La plupart des gens qui le font utilisent quelque chose comme un Microblaze, Picobloze, Nios II, etc. - ce sont essentiellement des conceptions de processeur "dans une boîte" (bibliothèque) que vous pouvez mettre sous licence et mettre dans votre projet. Le contraste serait d'en développer un vous-même dans la source HDL, peut-être à partir du schéma fonctionnel présenté dans votre conférence CS101 typique. Il y a un certain nombre de fonctionnalités intéressantes à gérer pour transformer le dessin de cours en matériel de travail.
Chris Stratton

1
Voir Open Cores pour de nombreux exemples de cœurs CPU open source.
RBerteig

3
J'ai un exemple. Nous avions un microcontrôleur devenu obsolète pour un ancien produit. Nous n'avons pas pu trouver un microcontrôleur de remplacement approprié avec la bonne combinaison de périphériques. L'utilisation d'un FPGA avec un processeur intégré nous a permis d'implémenter notre mélange idéal de périphériques sur le FPGA.
kkrambo

Réponses:


24

Avantages:

  • Interface extrêmement rapide entre le microcontrôleur et toute interface personnalisée ou logique d'E / S sur puce.
  • processeur personnalisable et interfaces de débogage
  • aussi, une logique de contrôle souvent plus facile que d'écrire le code de contrôle avec, par exemple, VHDL

Inconvénients:

  • Un FPGA peut-être plus cher est nécessaire pour s'adapter à la fois au microcontrôleur et à la logique personnalisée, par rapport au simple fait d'avoir la logique personnalisée sur le FPGA
  • Peut-être plus difficile à mettre en œuvre, en particulier avec des mémoires et si le cœur est complexe, qu'un microcontrôleur prêt à l'emploi sur une puce séparée.

3
Avantage supplémentaire: conception plus simple, une puce de moins.
DoxyLover

4
Inconvénient supplémentaire: octroi de licences pour plus d'IP
Mikhail

Que diriez-vous de la consommation d'énergie comme inconvénient?
Craig McQueen

@CraigMcQueen Il est théoriquement possible de générer un microcontrôleur dans un FPGA qui n'a pas encore été produit en tant que matériel autonome. Dans ce cas, il n'y a pas de consommation d'énergie à comparer. Dans tous les cas, c'est trop spécifique à l'appareil pour être un avantage / inconvénient général.
Mât

Tous de très bons commentaires. Et bien, je dirais que généralement les FPGA ont une grande consommation d'énergie, car l'utilisation logique est généralement très loin de 100% au sein d'une macrocellule. Ceci est un peu compensé par le fait que les FPGA peuvent utiliser des techniques sophistiquées de minimisation de la puissance. Les processus de fabrication (technologies) peuvent être assez similaires entre un FPGA et un processeur de la même époque. Les processeurs ont des blocs de mémoire dédiés, ainsi que des FPGA. Que cela corresponde à vos besoins, cela dépend de la chance que vous avez de trouver un FPGA qui correspond exactement à vos besoins.
PkP

26

Si votre projet va utiliser un FPGA pour le travail de grognement et qu'il a la capacité de réserve, pourquoi iriez- vous aux dépens d'une puce supplémentaire alors que vous pouvez simplement l'implémenter dans le FPGA?

Pour de nombreux environnements de contrôle procédural, il peut être considérablement plus facile d'implémenter la configuration requise dans un langage comme C que d'essayer de le faire en VHDL ou Verilog. En ajoutant le microcontrôleur dans le FPGA, vous obtenez le meilleur des deux mondes - la puissance du VHDL / Verilog, etc. pour les systèmes logiques et d'interface, et la simplicité d'un langage procédural pour les systèmes de contrôle et de gestion de base.


10
La première phrase de cette réponse est la raison principale. Cela se fait principalement lorsque vous avez déjà un FPGA avec une certaine capacité disponible sur la carte. (Au moins) une puce de moins et moins de complexité de la carte. Vous ne mettriez pas un FPGA sur une carte juste pour implémenter un microcontrôleur avec, mais quand vous avez déjà un FPGA, c'est une bonne façon de réduire le coût des pièces et la complexité de la carte. C'est du moins pourquoi nous le faisons.
reirab

13

En complément des réponses de Majenko et PkP:

Cette tendance à intégrer un CPU dans la conception FPGA a conduit à plusieurs systèmes hétérogènes comme:

  • Famille Zilq-7000 de Xilinx
  • FPGA SoC Arria / Cyclon / Stratix d'Altera
  • FPGA SmartFusion de MicroSemi

Il existe également une puce Intel Atom + Altera FPGA sur le marché: http://www.altera.com/devices/processor/intel/e6xx/proc-e6x5c.html

La plupart des micro-contrôleurs gratuits pour FPGA souffrent d'un mauvais support de chaîne d'outils. Les processeurs ARM intégrés sont livrés avec une prise en charge de trace / débogage, des compilateurs (chaîne d'outils gcc) et une prise en charge complète de Linux. Voici un sondage présenté au FPL 2014: http://dx.doi.org/10.1109/FPL.2014.6927482

Edit 1:
Il existe également la classe des appareils PSoC (Programmable System on Chip) de Cypress. Ces dispositifs incluent un microcontrôleur (M8C, 8051, ARM Cortex M0 ou Cortex M3) et des contrôleurs ou dispositifs d'E / S intégrés SoC classiques (I²C, SPI, Timer, CAN, DAC, ADC, OpAmp, ...) et un programmable partie. Cette partie n'est pas aussi programmable à grain fin que les FPGA classiques, mais elle peut être utilisée pour implémenter des contrôleurs d'E / S supplémentaires ou des accélérateurs matériels intégrés. PSoC vous permet d'utiliser des composants analogiques dans votre conception.
http://www.cypress.com/psoc/?source=CY-ENG-HEADER

Présentation de PSoC: PSoC


10

Si vous aviez juste besoin d'un microcontrôleur et que vous n'aviez pas de FPGA, il serait inhabituel d'utiliser un FPGA avec le micrologiciel du microcontrôleur. Cependant, tous les projets ne progressent pas dans cette direction. De nombreuses tâches ont clairement besoin d'un FPGA, mais finissent par rencontrer une tâche qui ne convient vraiment pas à une solution VHDL. Parfois, un problème est simplement mieux géré par un CPU à usage général. Ou, parfois, c'est l'inverse: certaines tâches ne sont tout simplement pas adaptées à un CPU à usage général - elles ont besoin de parallélisme.

À ce moment-là, vous avez le choix. Vous pouvez soit ajouter une puce supplémentaire à votre appareil, soit vous rendre compte que vous n'avez pas utilisé un tas de portes de rechange sur le FPGA. Licence un peu IP, et vous pouvez avoir un CPU à usage général en un rien de temps!

Un autre détail intéressant est que vous pouvez personnaliser certains firmwares de microcontrôleurs. Je connais des projets qui ont intégré un Power PC, mais ont supprimé toutes les portes nécessaires pour le support en virgule flottante, et une bonne partie de la prédiction de branche. Cela le rendait assez petit pour s'adapter côte à côte avec le micrologiciel basé sur VHDL.


9

Il existe plusieurs raisons valables pour instancier un microprocesseur ou un microcontrôleur dans un FPGA. En voici trois:

  1. Vous voulez simplement en savoir plus sur le fonctionnement d'un processeur. Les FPGA vous offrent des moyens infinis de sonder ce qui se passe à l'intérieur du processeur lors de l'exécution du code. C'est juste pour apprendre.

  2. Vous implémentez un gros système qui nécessite les vitesses matérielles d'un FPGA (plus rapides que les logiciels s'exécutant sur un microprocesseur) mais votre conception nécessite une machine à états complexes, qui est plus facilement implémentée à l'aide de logiciels exécutés sur un processeur simple comme le Xilinx PicoBlaze que dans un FSM matériel. Notez qu'un PicoBlaze peut fonctionner aussi rapidement que 240 MHz dans les dernières technologies de processus FPGA et que le processeur PicoBlaze exécute une instruction tous les deux cycles d'horloge, de sorte que vous obtenez une machine d'état rapide et cohérente qui est facilement programmée dans le logiciel.

  3. En développant (2), vous avez besoin d'une machine d'état capable de gérer les interruptions. Les processeurs sont vraiment bons pour cela car ils savent déjà comment sauvegarder et restaurer l'état en toute sécurité avant et après l'entretien de l'interruption.

Voici une mise en garde: si vous voulez un processeur rapide avec un ensemble d'instructions standard et un grand écosystème de développement, vous voulez un processeur rapide et dur comme les deux ARM Cortex-A9 dans un SoC Xilinx Zynq. La structure FPGA du SoC Zynq vous permet toujours d'instancier davantage de cœurs de processeur dans une logique programmable, mais les ARM Cortex-A9 peuvent exécuter des systèmes d'exploitation standard tels que Linux et des IDE standard tels que Android.

Entre l'ARM Cortex-A9 et le PicoBlaze, il existe de nombreux processeurs logiciels que vous pouvez implémenter avec une logique programmable disponible à partir de nombreuses sources. Certaines personnes aiment rouler leurs propres processeurs et c'est une excellente activité éducative. Cependant, les microprocesseurs ont besoin d'outils de développement logiciel et la création / le débogage de ces outils nécessite des efforts de l'ordre de grandeur plus importants que la création du processeur lui-même. Vous devez toujours troquer l'avantage possible d'un microprocesseur personnalisé contre le temps et les efforts nécessaires pour créer / déboguer le cœur du processeur et les outils.

Divulgation complète: je travaille pour Xilinx mais je suis à peu près sûr que je n'ai pas déclaré que les FPGA sont toujours la solution. Si un microcontrôleur à 50 cents peut faire le travail, vous feriez mieux de l'utiliser. Les FPGA et les SoC Zynq sont destinés aux projets qui nécessitent des efforts considérables au-delà des capacités des microcontrôleurs.


Bienvenue, Steven!
PkP

1
Bonne réponse, mais qui a besoin d'une machine d'état capable de gérer les interruptions? Les interruptions sont un mal nécessaire pour les processeurs fetch-decode-execute car la gestion du stimulus externe nécessite l'utilisation exclusive du processeur pour exécuter l'ISR. Dans un FPGA, le stimulus externe est géré dans un bloc logique séparé tandis que la machine d'état continue également de fonctionner; pas besoin de sauvegarder et de restaurer l'état. Fondamentalement, les interruptions sont une solution imparfaite à un problème que HDL n'a pas en premier lieu.
Ben Voigt

Vous avez bien sûr raison pour les machines d'état matériellement implémentées, Ben. Vous pouvez toujours câbler la broche "interruption" comme une autre entrée de la machine d'état. Cependant, de nombreuses machines à états complexes sont simplement plus compréhensibles lorsqu'elles sont implémentées avec un processeur exécutant C, ou du moins plus compréhensibles pour certains développeurs. C'est alors que vous avez besoin d'une interruption.
Steven Leibson

2

Parfois, vous pouvez utiliser un FPGA car vous disposez d'un logiciel qui s'exécute sur un processeur physique obsolète et indisponible depuis longtemps que vous souhaitez ressusciter. Bien qu'il ne soit pas compatible avec les broches (bien que des supports de style DIP aient été vus), cela vous permet d'être précis. Il est peu probable qu'une émulation logicielle pure sur un microprocesseur standard soit le cas. Par exemple apple2fpga

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.