Contrairement aux processeurs à usage général, les processeurs DSP intègrent des multiplicateurs matériels, des basculeurs à barils et des bus à mémoire multiples pour gérer efficacement des tâches en temps réel telles que l'encodage audio, la modulation des télécommunications, le traitement radar et la fusion de capteurs. Le développement de logiciels pour ces puces exige plus qu'un compilateur standard; il nécessite un kit de développement logiciel (SDK) et un environnement de développement intégré dédié (IDE) qui comprennent l'architecture matérielle sous-jacente et peuvent optimiser le code pour la puissance et les performances. Cet article fournit un examen approfondi des processeurs DSP SDK et des environnements de développement, couvrant leurs composants de base, les fournisseurs leaders, les critères de sélection et les tendances émergentes.

Quels sont les SDK des processeurs DSP?

Un SDK de processeur DSP est une collection complète d'outils, de bibliothèques, de composants d'exécution et de documentation assemblés pour aider les ingénieurs à créer, déboguer et déployer des applications pour une famille spécifique de DSP. Le SDK résume les détails matériels de bas niveau – comme les étapes de pipeline, les hiérarchies de mémoire et les registres périphériques – afin que les développeurs puissent se concentrer sur l'implémentation d'algorithmes.

Au-delà du compilateur et des bibliothèques, un SDK fournit souvent un noyau de système d'exploitation en temps réel (RTOS), des pilotes de périphériques pour périphériques sur puce (I2S, SPI, UART, DMA) et des outils de configuration pour l'allocation de mémoire et la manipulation d'interruption. Certains SDK intègrent également des modèles de simulation du matériel dans la boucle afin que les développeurs puissent tester des algorithmes sur une cible virtuelle avant que le matériel soit disponible.

Composantes de base d'un SDK DSP

Comprendre les éléments constitutifs d'un SDK typique aide les ingénieurs à évaluer quels outils correspondent le mieux à leurs exigences de projet. Bien que les implémentations spécifiques varient, la plupart des SDK DSP contiennent les éléments suivants:

Optimisation des compilateurs et des assemblages

Le compilateur est au cœur de tout SDK. Les compilateurs DSP utilisent des techniques telles que la pipeline logicielle, la détection de déroulement de boucle et la détection de parallélisme au niveau de l'instruction pour générer un code machine efficace. Beaucoup prennent également en charge des fonctions intrinsèques qui permettent aux développeurs d'invoquer des fonctionnalités matérielles spécifiques (p. ex., multi-accumulation, opérations de données multiples à une seule instruction) directement à partir du code C sans recourir à l'assemblage.

Bibliothèques spécifiques au domaine

Les bibliothèques de fonctions pré-optimisées sont une caractéristique des SDK DSP. Ces bibliothèques fournissent des primitives de traitement de signaux couramment utilisés, tels que les transformées de Fourier rapide (FFT/DFT), la réponse par impulsion finie (FIR) et les filtres de réponse par impulsion infinie (IIR), la convolution, la corrélation et les matrix mathématiques, qui ont été adaptées à l'architecture cible.

Débogueurs et outils d'analyse en temps réel

Les SDK DSP s'attaquent à cela avec des débogueurs assistés par du matériel qui prennent en charge les points d'arrêt, les points de veille et le monophasage même lorsque le processeur fonctionne à plein régime. De nombreux environnements incluent une fonction de trace de données en temps réel qui capture la mémoire ou enregistre les valeurs sans arrêter l'exécution. Certains SDK offrent également des outils d'optimisation guidés par profil qui identifient les chemins chauds, les caches manquants et les décrochages de pipelines, permettant aux ingénieurs d'affiner leur code de manière itérative.

Environnements de simulation et d'émulation

Les simulateurs de série d'instructions et les émulateurs de cycle précis qui modélisent le comportement du noyau DSP. Les simulateurs permettent aux développeurs d'exécuter le code, d'inspecter les registres et de vérifier l'exactitude sans matériel. Les émulateurs – souvent groupés avec des sondes de débogage JTAG ou similaires – fournissent un pont à la puce réelle pour le débogage sur cible. Les meilleurs SDK permettent un passage sans faille entre la simulation et l'exécution matérielle.

Intégration du Middleware et RTOS

Les applications complexes DSP ont souvent besoin de planification des tâches, de communication interprocessus et de gestion de la mémoire.De nombreux SDK comprennent un système d'exploitation léger en temps réel (p. ex. TI SYS/BIOS, Analog Devices uC/OS pour SHARC) qui gère ces services avec un minimum de frais généraux.

Principaux environnements de développement du PSD

Alors que des dizaines de fournisseurs de DSP fournissent SDKs, quelques environnements dominent le marché en raison de leur maturité, qualité des outils et soutien de l'écosystème.

Texas Instruments Code Compositeur Studio (CCS)

Code Composer Studio est le IDE phare pour les familles C6000, C5000 et C2000 DSP, ainsi que leur architecture KeyStone multicore. CCS est construit sur la plate-forme Eclipse et intègre TI=s optimisant le compilateur C/C++, un débogueur avancé avec trace matérielle (y compris TI=s Embedded Trace Buffer) et une gamme de plugins d'analyse. Les principales caractéristiques comprennent:

  • Bibliothèques DSP optimisées: Le DSPLIB et l'IMGLIB offrent des fonctions de traitement de signaux et d'images hautement optimisées.
  • Analyseur de système:[ Un outil graphique pour visualiser la charge CPU, la planification des tâches et l'utilisation de la mémoire en temps réel.
  • VectorMathLib: Tire profit des cœurs VLIW à point flottant C66x pour les opérations vectorielles.
  • Emulation de l'Hardware:[ Le support des sondes de débogue XDS permet une surveillance et une trace non intrusives.

Le CCS comprend également un outil d'analyse de code statique[ qui vérifie la conformité avec la MISRA-C et d'autres normes de sécurité, ce qui en fait un choix fort pour les applications critiques de la mission dans le contrôle automobile et industriel. Texas Instruments fournit la dernière version du CCS ici].

Appareils analogiques CrossCore Embedded Studio (CCES)

CrossCore Embedded Studio est un environnement de développement unifié pour leurs processeurs SHARC, Blackfin et SigmaDSP. CCES est également basé sur Eclipse et prend en charge le développement nu-métal et RTOS en utilisant le noyau VDK (VisualDSP++) ou des noyaux tiers.

  • Capacités avancées de débogage: CCES offre le débogage multi-core, la trace d'instruction et l'échange de données en temps réel (RTDX) via un émulateur USB.
  • SHARC+ Library: Une collection de routines optimisées pour l'assemblage de l'architecture à point flottant SHARC, qui est largement utilisée dans les onduleurs professionnels audio et industriels.
  • Support pour les bus I$^2$S et AXI:[ Simplifie l'intégration avec les codecs audio externes et les FPGA.
  • Permet le placement fin de code et de données dans le cache interne SRAM, L2 ou SDRAM externe.

La chaîne d'outils ADI="s comprend un mode de simulation [ matériel dans la boucle qui utilise des cartes de processeur réelles pour le prototypage rapide. En savoir plus sur CrossCore Embedded Studio chez Analog Devices.

Xilinx Vivado Design Suite (pour le DSP basé sur le FPGA)

Lorsque les algorithmes DSP sont mis en œuvre dans une logique programmable (FPGA), la Xilinx Vivado Design Suite (qui fait maintenant partie de AMD) offre un mélange unique de développement matériel et logiciel. Bien que non un SDK de processeur traditionnel, Vivado inclut des outils de synthèse de haut niveau (HLS) qui compilent des algorithmes C/C++ dans RTL, ainsi que la plate-forme logicielle unifiée Vitis pour la programmation de processeurs intégrés (par exemple, MicroBlaze ou ARM Cortex intégré dans le tissu FPGA).

  • Générateur de système pour DSP: Un outil de conception basé sur le modèle qui s'intègre à MATLAB/Simulink et génère automatiquement des cœurs IP DSP optimisés.
  • HLS Compiler: Convertit les fonctions DSP C++ en pipelines matériels avec des compromis de surface et de débit.
  • IP Integrator:[ Permet aux concepteurs de connecter des blocs DSP préconstruits (FFT, FIR, CORDIC) avec des processeurs souples et des contrôleurs mémoire.
  • Débogueur de logiciels :[ Vivado=s analyseur logique et analyseur série I/O permettent aux ingénieurs de surveiller les signaux FPGA internes en temps réel.

Pour les projets qui nécessitent l'accélération parallèle des FPGA combinés à la flexibilité d'un processeur DSP, Xilinx offre une approche hybride. Visitez la page Vivado Design Suite pour plus de détails.

Autres milieux notables

Au-delà des trois poids lourds, plusieurs autres SDK DSP méritent d'être mentionnés:

  • NXP MCUXpresso (pour les familles DSC comme le 56F800): Combine Eclipse avec l'outil NXP=S Processor Expert et l'intégration FreeRTOS. Il comprend une bibliothèque de contrôleur de signal numérique (DSC) optimisée pour la commande moteur et la conversion de puissance.
  • CEVA Toolbox: Conçu pour les cœurs DSP de CEVA (utilisés dans le Wi-Fi, Bluetooth et bande de base cellulaire). La boîte à outils comprend un compilateur hautement parallélisant et une plate-forme basée sur SystemC pour l'exploration architecturale.
  • STMicroelectronics STM32Cube (avec bibliothèque DSP):[ Tout en ciblant les cœurs Cortex‐M, l'écosystème ST= comprend une bibliothèque CMSIS-DSP qui peut transformer un microcontrôleur en un processeur de signal capable pour des applications audio et des capteurs sensibles aux coûts.

Principales caractéristiques et capacités en profondeur

Les SDK DSP modernes vont au-delà de la compilation et du débogage de base. Les capacités les plus précieuses pour les développeurs professionnels comprennent:

Vectorisation automatique et intrinsèque

Les compilateurs DSP prennent souvent en charge la vectorisation automatique pour exploiter les unités d'exécution SIMD ou VLIM. Par exemple, le compilateur TI=s peut automatiquement vectorialiser les boucles qui effectuent des opérations par éléments sur des tableaux. Lorsque le contrôle manuel est nécessaire, les développeurs peuvent utiliser des fonctions intrinsèques comme ou pour accéder directement aux opérations Natives de DSP=s tout en restant en C. Cet équilibre entre productivité et performance est essentiel pour respecter les délais en temps réel.

Analyse de puissance et thermique

Pour les appareils alimentés par batterie (par exemple, les appareils auditifs, les capteurs IoT), les outils d'estimation et d'optimisation de la puissance SDKS sont indispensables. Les environnements comme CCS incluent un plugin d'estimation de la puissance qui modélise l'activité de commutation et prédit la consommation de courant.

Taille du code vs vitesse compromis

Les applications DSP ont souvent des budgets de mémoire serrés. Les SDK fournissent des drapeaux de compilateur et des scripts de linker pour optimiser la taille du code ou la vitesse d'exécution. Par exemple, le drapeau dans le compilateur TI=2 déroule agressivement les boucles et les fonctions d'inlines pour une vitesse maximale, tandis que produit un code plus petit au prix de certaines performances.

RTOS Intégration et planification de la visualisation

Les systèmes d'exploitation en temps réel tels que TI SYS/BIOS et ADI VDK fournissent une programmation déterministe avec des priorités de tâches, des sémaphores et des drapeaux d'événements. Les IDE modernes offrent un visionneur d'objets en temps réel (ROV) qui affiche graphiquement les états de tâches, l'utilisation de la pile et la communication intertâches.

Sélection du bon SDK pour votre projet

Choisir un environnement de développement DSP n'est pas seulement une question de préférence personnelle. Les ingénieurs devraient évaluer les critères suivants pour s'assurer que le jeu d'outils s'harmonise avec les objectifs du produit :

  • Compatibilité des logiciels :[ Le SDK doit supporter le modèle DSP exact et toutes les puces de compagnon (FPGA, MCU) sur le tableau. Vérifiez que la sonde de débogage (JTAG, SWD) est prise en charge.
  • Couverture de la bibliothèque: Le SDK inclut-il des routines optimisées pour les algorithmes que vous prévoyez mettre en œuvre (codecs audio, formage de faisceaux, contrôle moteur FOC, etc.)? Le développement de bibliothèque personnalisée est coûteux et sujet à erreur.
  • Écosystème et Communauté: Une base d'utilisateurs importante signifie un meilleur dépannage, plus de bibliothèques tierces, et plus de projets d'exemple.
  • Toolchain Maturity and Support:[ Évaluer la conformité des normes compilateurs (C11, C++14, MISRA-C), la fréquence des mises à jour et l'engagement à long terme du fournisseur.
  • Coût et licences: Certains SDK sont libres avec des fonctionnalités limitées, tandis que d'autres nécessitent une licence par siège. Considérez les licences de verrouillage de nœuds par rapport aux licences flottantes et si la formation ou le soutien est inclus.
  • Intégration avec d'autres outils:[ Si votre workflow utilise MATLAB, Simulink ou LabVIEW, vérifiez si le SDK fournit une génération de code automatique (p. ex., codeur embarqué pour TI).

Les défis du développement du PSD et la façon dont les PSD les abordent

La programmation du PSD présente des obstacles uniques que les SDK aident à atténuer :

Contraintes en temps réel

Les SDK fournissent une programmation déterministe, une manipulation précise des interruptions et un profilage précis du cycle pour aider les ingénieurs à vérifier que toutes les tâches se déroulent dans les fenêtres de temps qui leur sont attribuées. Les points d'arrêt du matériel peuvent déclencher des analyseurs logiques pour saisir le contexte d'une violation de calendrier.

Gestion de la hiérarchie de la mémoire

Les DSP comportent souvent plusieurs niveaux de mémoire avec différentes vitesses d'accès (Cache L1, L2 SRAM, SDRAM externe). Le compilateur et le linker doivent placer les données pour minimiser les erreurs de cache. Les SDK incluent des outils de configuration du cache et des fonctions de copie de mémoire ( peuvent être spécialisés pour le brouillage DSP=s octet) pour déplacer efficacement les données entre les niveaux.

Synchronisation de la comptabilisation et de la comptabilisation des actifs

Les DSP multicores (p. ex. TI , TMS320C6678 avec 8 cœurs) nécessitent une synchronisation minutieuse et une gestion partagée des ressources. Les SDK fournissent des sémaphores matériels, des interruptions de boîte aux lettres et des pilotes IPC (communication interprocesseurs).

Échanges entre points flottants et points fixes

Si le point flottant simplifie le développement de l'algorithme, l'arithmétique fixe donne souvent une meilleure efficacité de puissance et une vitesse plus élevée dans les conceptions sensibles aux coûts. Les SDK comprennent des bibliothèques arithmétiques fixes et des outils de conversion pour simuler l'effet de la quantification et du dépassement.

Tendances futures des environnements de développement du PSD

Le paysage du développement du PSD évolue rapidement. Plusieurs tendances façonnent la prochaine génération de PSD :

AI et apprentissage automatique des PSD

Les fournisseurs ajoutent des bibliothèques réseau neuronales (par exemple, TI=s Deep Learning SDK pour C66x, ARM CMSIS-NN pour Cortex-M) qui mapperont les couches de convolution et d'activation sur les unités SIMD de DSP=s. Les futurs SDK peuvent intégrer des outils de taille et de quantification automatiques pour compresser les modèles pour la mémoire sur puce.

Co-conception de l'informatique et du matériel et logiciel hétérogènes

De nombreux SoC modernes combinent des DSP avec des cœurs ARM, des FPGA et des GPU. Les environnements de développement fusionnent pour fournir un flux de travail unique pour des systèmes hétérogènes. Xilinx Vitis, par exemple, supporte la programmation à la fois du tissu FPGA et des processeurs embarqués d'un IDE.

Développement basé sur le cloud et intégration CI/CD

Les versions IDE basées sur le cloud (comme TI Cloud Tools) permettent aux équipes de configurer des constructions automatisées, de réaliser des tests de simulation et même des dispositifs flash via des laboratoires distants. Cette tendance réduit le besoin de postes de travail de développeurs avec des configurations matérielles spécifiques.

Conception basée sur le modèle et génération automatique de code

Plutôt que de coder manuellement les algorithmes DSP, les ingénieurs utilisent de plus en plus MATLAB, Simulink ou Scilab pour modéliser le système et ensuite générer du code déployable. Les SDKs principaux s'intègrent désormais aux générateurs de code (Coder embarqué pour TI, Coder Simulink pour Xilinx) qui produisent des C ou VHDL de qualité de production.

Conclusion

Les SDK des processeurs DSP et leurs environnements de développement sont indispensables pour construire des systèmes de traitement de signaux efficaces et fiables. Ils encapsulent des années d'optimisation matérielle spécifique aux outils accessibles, permettant aux développeurs de se concentrer sur la différenciation plutôt que sur des détails de bas niveau. De TI=s complet Code Composer Studio à ADI=s CrossCore Embedded Studio et Xilinx Vivado pour DSP centré sur FPGA, chaque environnement offre un mélange unique de bibliothèques, de débogueurs et de utilitaires de configuration. En évaluant soigneusement la compatibilité matérielle, la couverture de la bibliothèque, le soutien écosystémique et les tendances futures comme l'intégration AI, les ingénieurs peuvent sélectionner le SDK qui accélère le mieux leur développement tout en assurant des performances en temps réel et l'efficacité énergétique.