Comment décider sur quelle plate-forme est la meilleure pour implémenter le traitement audio en temps réel?

15

Lors du développement de produits, je fais toute ma conception d'algorithmes dans Matlab. Ils sont généralement assez basiques, un filtre IIR ou FIR ou deux, quelques FFT, etc. Quand vient le temps de le déplacer vers un environnement intégré, j'ai toujours du mal à décider sur quelle plate-forme le faire fonctionner. Je pense généralement à ces (larges) plateformes:

  • Noyau DSP
  • FPGA
  • Microcontrôleur
  • BRAS

Quels facteurs dois-je prendre en compte lorsque j'essaie de prendre cette décision?

Kellenjb
la source
2
Pourquoi distinguez-vous "ARM" de "Microcontrôleur"? Vous essayez de classer les pièces DSP + ARM de TI? Essayez-vous de séparer les petites choses de faible puissance des microprocesseurs plus gros? (Dans ce dernier cas, vous devriez probablement inclure MIPS et les cœurs 32 bits spécifiques au fournisseur)
Kevin Vermeer
Quand je pense au microcontrôleur, je pense au PIC, à Atmel, etc., mais je suppose que l'ARM peut également en faire partie. Je n'essayais pas de dire que c'était toutes les options, je demandais simplement quels facteurs devraient être pris en considération.
Kellenjb
1
Que déterminez-vous "meilleur"? Êtes-vous limité par le pouvoir? Coût? Facilité de programmation? La flexibilité?
Oliver Charlesworth
@Oli C'est toute la question, quels facteurs doivent être pris en compte lors de la décision.
Kellenjb
3
@Kellen: Pour le moment, cette question est un peu comme "Comment décider quelle voiture est la meilleure?", Sans autres contraintes.
Oliver Charlesworth

Réponses:

13

Si vous vous en tenez aux "algorithmes standard" comme IIR, FIR, radix-2 ou 4 FFT (c'est-à-dire des trucs qui correspondent bien aux architectures DSP sans beaucoup de flux de contrôle), vous pouvez essayer ceci:

Comptez le nombre de "multiplier accumule" dont vous avez besoin par seconde dans tous vos algorithmes.

  • <10 millions, vous pouvez probablement obtenir un microcontrôleur rapide pour faire le travail (ou même un lent si vous êtes <1M)
  • <100M est un territoire DSP facile
  • <1G est susceptible d'être un territoire DSP rapide réalisable
  • 1G-10G est le point de rencontre entre le DSP et le FPGA
  • > 10G est plusieurs DSP ou FPGA
Martin Thompson
la source
2
C'est en fait une très belle liste de référence!
Kellenjb
3
N'oubliez pas de multiplier par 10 tous les deux ans environ :)
Martin Thompson
Pouvez-vous donner un exemple de "microcontrôleur rapide"?
endolith
1
@endolith: avec aucune probabilité de son prochaine fois en cours , nous regardons :) Au début de 2014, peut - être quelque chose comme le LPC1768 (qui horloges à 100MHz - pousser un peu pour deviner 10MMACS I)
Martin Thompson
@MartinThompson: La bibliothèque DSP pour LPC1700 indique que le Cortex-M3 fait "2 cycles (32x32) +32 -> 32 multipliés signés s'accumulent", donc 50 MMAC?
endolite du
11

Pour autant que je sache, ARM devrait être considéré comme une architecture plutôt qu'une plate-forme. Cependant, la question est tout à fait pertinente quant à la plate-forme à utiliser pour le traitement du signal RT (dans ce cas audio).

Vous pouvez commencer par poser les questions suivantes, pas dans un ordre strict:

  • Combien de temps ai-je pour la mise en œuvre?
  • Quelles sont mes contraintes de puissance?
  • De quelles opérations mathématiques ai-je besoin? Vous pourriez finir par exiger beaucoup de multiplicateurs en parallèle et donc limiter votre choix.
  • De combien de mémoire ai-je besoin? (la plupart des MCU sont limités)
  • [Important] Quelle est ma fréquence de fonctionnement? Combien puis-je serrer pendant la période d'échantillonnage en maintenant une fréquence de fonctionnement basse?
  • Quelles bibliothèques sont disponibles pour mon choix d'implémentation?

Je commencerais par regarder l'algorithme d'abord et avant tout. Si, par exemple, vous avez besoin de nombreuses opérations FFT et MAC, vous pouvez probablement exclure la plupart des microcontrôleurs et vous concentrer davantage sur les cœurs DSP. Gardez à l'esprit qu'il existe également des MCU avec des cœurs DSP intégrés.

Une autre considération importante serait votre capacité et votre expertise dans le domaine de la mise en œuvre. La plupart des gens évitent le FPGA car vous devez utiliser un HDL pour la mise en œuvre. Une autre raison de se détourner des FPGA est la puissance requise.

anasimtiaz
la source
2

Avec juste les informations que vous fournissez, le choix est probablement ARM (IIR et FIR simples), mais il y a d'autres facteurs à considérer tels que les exigences d'alimentation, les exigences d'E / S, les fonctionnalités supplémentaires que vous prévoyez de mettre en œuvre: combien de temps de développement économiseriez-vous si cet appareil avait une connexion réseau et une API pour modifier les paramètres DSP sur le terrain?

Avez-vous envisagé d'étendre votre gamme d'options aux smartphones ou aux ordinateurs compacts tels que le Beagle Board? Vous pourriez vous rendre compte que le traitement du signal n'est qu'une petite partie de l'ensemble du problème que vous résolvez.

Aurelio
la source