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?
microcontroller
fpga
design
James C
la source
la source
Réponses:
Avantages:
Inconvénients:
la source
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.
la source
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:
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:
la source
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.
la source
Il existe plusieurs raisons valables pour instancier un microprocesseur ou un microcontrôleur dans un FPGA. En voici trois:
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.
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.
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.
la source
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
la source