Quelles sont les utilisations typiques d'un processeur logiciel tel que MicroBlaze?

8

Je sais que la combinaison FPGA-DSP est généralement utilisée pour l'électronique de puissance haut de gamme / ultrasons / IRM / etc. Est-il possible que le processeur logiciel remplace complètement le DSP même sur les FPGA bas de gamme tels que Spartan 3/6?

Ajouté: Quelle serait la raison d'avoir plusieurs processeurs softcore dans un FPGA?

SunnyBoyNY
la source
Cela dépend de la façon dont votre application est gourmande en DSP.
Fizz
Les winmodems détestés me viennent à l'esprit, bien que là-bas, un processeur à usage général fasse le DSPing.
Fizz
Apparemment, vous pouvez faire de la radio définie par logiciel sur un Virtex 5 et également sur l'Altera Stratix .
Fizz
Et apparemment, certains l'ont essayé sur un Spartan 6 LX45. Quelle application avez-vous en tête?
Fizz
Le principal problème que j'ai vu dans ce fil est le logiciel Vivado utile (basé sur PC) qui fonctionne pour générer des filtres, etc. pour le Virtex ne vous permet pas de cibler le Spartan. Je ne sais pas si c'était juste une décision de marketing [segmentation] ou si le matériel Spartan est trop bas.
Fizz

Réponses:

11

N'hésitez pas à parcourir la lecture ou à la fin. Je réalise que j'ai continué un peu!


En général, vous n'utiliseriez pas de processeur logiciel pour remplacer les éléments DSP. Le matériel dédié peut généralement gérer plus rapidement des volumes de données plus élevés, car vous le concevriez pour faire une tâche spécifique très bien, plutôt que d'être un processeur à usage général.

Lorsque les processeurs mous entrent dans leur élément, c'est le contrôle et la coordination.

Si vous deviez concevoir un système qui devait traiter un grand volume de données, disons l'acquisition d'images à haute fréquence d'images, il ne serait pas possible d'utiliser un processeur soft-core pour gérer toutes les données, il y aurait simplement trop de surcharge dans le CPU. Ce que vous feriez serait de concevoir un micrologiciel dédié pour effectuer la tâche d'acquisition spécifique requise (par exemple filtrer les données, les stocker dans la mémoire, etc.).

Cependant, vous avez toujours besoin d'un moyen de lui indiquer quand faire des choses - quand voulez-vous capturer, l'appareil a-t-il été chargé de décharger les données, etc. Ces choses ne sont pas très faciles à faire dans du matériel dédié, pas s'il y a des séquences d'événements avec une entrée utilisateur, essentiellement des tâches qui ne font pas la même chose encore et encore. Dans ce cas, vous utiliseriez un processeur soft-core car il est beaucoup plus facile d'écrire du code procédural pour certaines tâches.

Un autre exemple (réel), j'ai travaillé sur un système d'acquisition à ultrasons qui diffuse des données via PCIe. Les tâches qu'il effectue sont communiquées par l'utilisateur et diverses parties du système doivent être configurées. La coordination du système ne nécessite pas de grands volumes de données, mais a plutôt besoin de flexibilité, il est donc bien adapté à un CPU soft-core programmé avec dans ce cas C. Pour faire la même chose dans le matériel physique, il faudrait de grandes quantités de ressources dont la plupart seraient rarement utilisés et ne verraient donc aucun avantage par rapport à un processeur.

Il convient de noter que certaines tâches peuvent varier en fonction de l'entrée de l'utilisateur, mais sont toujours meilleures dans le matériel dédié. En fait, une partie du code (programmation des contrôleurs DMA pour stocker les données sur le déclencheur) a été initialement effectuée dans le processeur en environ 15 lignes de code, mais parce que ce bit doit être fait au moment où un déclencheur se produit, en utilisant un processeur qui peut être occupé avec d'autres choses n'est pas idéal. La tâche est plutôt programmée dans un module Verilog, mais dans le processus devient une énorme machine à états de 500 lignes avec environ 15 états et toute une charge de logique de support - pas vraiment. Mais même s'il utilise beaucoup plus de ressources, il est critique en termes de temps, tout comme une nécessité.

De même, j'ai besoin d'une génération de déclencheur précise pour le cycle d'horloge, donc un module pour effectuer cette tâche fait partie du système plutôt que de le faire dans un CPU. Ce noyau et celui ci-dessus sont des exemples de la façon dont vous pouvez utiliser un CPU pour effectuer certaines tâches, mais pour d'autres critiques, vous pouvez développer du matériel pour compléter le CPU - de la même manière que vous avez des minuteries, etc. dans un microcontrôleur.


Donc, pour résumer:

Les FPGA sont d'excellents outils flexibles, mais la plupart des conceptions nécessitent une combinaison de CPU à noyau souple, de modules configurables (par exemple, des minuteries) et du matériel dédié à une seule tâche.

Les processeurs sont parfaits pour l'interaction utilisateur, le contrôle de l'ordre des événements, la configuration des contrôleurs. Ils sont comme le coordinateur, le cerveau.

Certaines conceptions peuvent nécessiter des tâches assez répétitives qui peuvent être configurées pour s'adapter à différentes entrées - modules de minuterie, affichage des caractères, rebond des boutons, etc. Cela peut facilement être fait avec un processeur, mais si vous voulez en faire plusieurs avec précision à une fois que cela devient plus délicat - ils partagent les mêmes ressources CPU. Donc, ce que vous pouvez faire est de les déplacer vers du matériel dédié qui est étroitement connecté au CPU - donnez au CPU la chance de faire d'autres tâches. Ceux-ci aident le CPU à faire son travail et à interagir avec son environnement, comme ses sens.

DSP dédié, transfert de données (DMA) - essentiellement n'importe quelle tâche qui fera la même chose encore et encore à des vitesses élevées - peut vraiment bénéficier d'une logique dédiée en termes de vitesse, et éventuellement de puissance. Ce sont comme les muscles de l'appareil, ils font tout le travail lourd.

Vous devrez excuser un peu la randonnée, mais j'aime ce domaine de l'EE. J'espère que ce qui précède est compréhensible et vous donne un aperçu supplémentaire du monde merveilleux des FPGA.

Tom Carpenter
la source
@tcrosley Je comprends votre argument, mais si vous voulez ajouter deux nombres 128 bits sur un processeur 32 bits, cela prendra plusieurs cycles. L'accent était mis sur la puissance . Mais en réalité, cela dépend entièrement de ce que vous faites dans son ensemble. Si tout ce que vous vouliez faire était l'ajout, avoir un processeur entier serait inutile dans un FPGA - instanciez simplement un additionneur. Je pense donc que je vais supprimer ce morceau.
Tom Carpenter
1

Comme Tom l'a mentionné, le MicroBlaze ne consiste pas tant à remplacer un DSP, mais à remplacer un microcontrôleur traditionnel qui pourrait autrement être sur la carte.

En effet, le cœur du processeur logiciel MicroBlaze n'est pas un substitut particulièrement bon pour un DSP car il ne dispose pas de fonctionnalités DSP spéciales telles qu'une instruction MAC (multiplier et accumuler), des tampons circulaires, un adressage inversé par bit et une logique de saturation.

Un noyau souple DSP séparé, tel que celui décrit dans cet article pour le Xilinx Virtex-4, serait donc un meilleur choix.

De nombreuses conceptions DSP gagneraient à avoir les deux cœurs souples, car la plupart, sinon la plupart des conceptions numériques qui incluent un FPGA ont également besoin d'un microcontrôleur général d'une certaine sorte. Tant qu'il y a suffisamment de ressources disponibles dans le FPGA (voir ci-dessous), les processeurs logiciels tels que le MicroBlaze éliminent non seulement une partie de la nomenclature (et bien sûr son coût associé), mais libèrent également des broches sur le FPGA car il y a pas besoin d'interconnecter le FPGA avec un microcontrôleur. L'espace requis pour les traces entre les deux parties est également libéré.

Le MicroBlaze peut fonctionner à 210 MHz sur un Virtex-5. Les versions avec MMU peuvent exécuter Linux. Un MicroBlaze minimum a besoin d'environ 600 LUT et peut atteindre 4000 si un FPU, MMU, cache et autres goodies sont ajoutés. Le processeur logiciel DSP mentionné ci-dessus utilisait 1700 LUT.

Étant donné qu'un FPGA Virtext-5 peut avoir entre 30 000 et plus de 200 000 LUT, même inclure ces deux cœurs mous ne représente qu'une fraction de la puce. L'intégration des deux permet que les opérations conventionnelles et DSP se déroulent en parallèle, si vous le souhaitez, au prix d'une complexité supplémentaire pour la synchronisation entre les deux.

L'IP du MicroBlaze est gratuite tant que vous l'utilisez sur un FPGA Xilinx et que vous avez sous licence l'édition intégrée ISE Design Suite (ou équivalent).

tcrosley
la source