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.