Que peut faire le dsPIC que l'humble microcontrôleur PIC ne peut pas faire?

10

Je n'ai pas encore utilisé de puce DSP. Tout ce que je sais, c'est que leur architecture est telle qu'ils peuvent effectuer des calculs assez rapidement, généralement dans un cycle d'horloge, ils ont des instructions de multiplication-accumulation dans leur jeu d'instructions et ils ont des DMA pour que le CPU n'ait pas à perdre un temps précieux à déplacer des données environ. Je pense qu'il y a plus, mais ce sont quelques points de base.

Je peux voir que Microchip a dsPIC qui est leur ligne de puces DSP. Ne pouvons-nous pas simplement utiliser un PIC18 ou PIC32 qui a également des multiplicateurs intégrés pour faire également du DSP? En quoi le dsPIC est-il différent du PIC normal?

Ma principale question est la suivante: pourquoi avons-nous besoin d'avoir quelque chose de séparé et distinct appelé puce DSP et de ne pas intégrer de capacité de calcul d'unité à virgule flottante de haute précision sur tous les microcontrôleurs? Certes, avec les technologies de processus que nous avons actuellement, cela ne devrait pas prendre beaucoup de place.

De plus, comment savoir que je dois utiliser une puce DSP dans mon projet plutôt qu'un microcontrôleur normal>

quantum231
la source
1
Il y a de bonnes réponses à la question similaire ici: electronics.stackexchange.com/questions/3067/…
David

Réponses:

3

Généralement, «DSP ...» signifie «puissance et / ou matériel plus pertinent au moment de l'introduction du produit ».
Les processeurs généralisés ont tendance à rattraper les anciens appareils spécialisés.
DSPIC a p [10 ans et plus de manière robeable - Olin le saura.

[Les éléments entre parenthèses concernent certains exemples DSPIC - non exhaustifs].

Dans les produits DSP, attendez-vous à un mélange de:
Attendez - vous à des choses comme des barillets,
des pipelines rapides et larges et des temps d'exécution
à cycle unique, des instructions à cycle unique large,
DMA [6 ou 8 canaux, tampons RAM à double port] de grandes plages d'adressage de mémoire linéaire [programme de 4 Mword , 64 ko de données] fonctionnalités orientées arithmétiques spécialisées
Peut-être:
des périphériques spécialisés tels que la commande de moteur, du
matériel pour plusieurs normes de communication différentes [CAN, IIC, UART, IIS, AC97, ...] plus profonds que les tampons de communication habituels [4 octets] plus rapidement et / ou ADC plus larges que d'habitude [2 Msps, 10 ou 12 bits]

Vous en trouverez la plupart dans la famille DSPIC - et de plus en plus dans les familles de processeurs gp.
Dans les cas extrêmes, vous obtenez le microcodage utilisateur et plus encore.

Russell McMahon
la source
1
Si je me souviens bien, j'ai entendu parler de l'effort de conception dsPIC en 1999, les premiers échantillons ont été distribués début 2002 avec des pièces de production fin 2002 ou début 2003. J'ai encore quelque part un 30F2010 brasé à la main dans un boîtier DIP en céramique à 28 broches qui a été accidentellement étiqueté comme 30F6010. Il ne fonctionnait qu'à 1/3 de la vitesse maximale, et était marqué à la main comme étant le n ° 55 ou quelque chose.
Olin Lathrop du
1
Ils peuvent également être cadencés jusqu'à 200 ou 260 MHz tandis que la ligne PIC ne prend en charge que jusqu'à 4 à 20 MHz. Être 10 fois plus rapide est définitivement un point à considérer.
Havenard
1
@Havenard - Notant qu'il s'agit d'un Q&R 2014: il a mentionné le PIC32 comme une alternative possible au DSPIC. Le PIC32MX 2007 a une Cmax (fréquence d'horloge maximale) de 80 MHz. Le PIC32MZ 2013 a une Cmax de 252 MHz. || Comparaison utile mais incomplète ici {Wikipedia}.
Russell McMahon
11

Certains des avantages d'un dsPIC par rapport aux PIC à architecture antérieure, comme les familles PIC 16 et 18:

  1. Chemins de données larges de 16 bits et ALU, comme apposé à 8.

  2. Capacité à adresser directement (les versions ultérieures des deux architectures ont étendu cela de diverses manières fastidieuses) plus de mémoire de données. Un PIC 16 de base peut adresser directement 128 octets, 512 avec la banque. Les nouveaux PIC 16F1xxx ont étendu la banque pour permettre l'adressage de plus de mémoire de données. L'architecture PIC 18 est limitée à 4k octets. L'architecture dsPIC peut adresser directement 64k octets ou 32k mots 16 bits, bien que pour diverses raisons seulement la moitié de cela soit disponible pour la RAM dans l'architecture de base. Un système bancaire dans certains des derniers modèles a étendu cela.

  3. Plus rapide. Le 30F d'origine pouvait fonctionner à 30 MIP, avec 40 pièces MIP désormais la norme. La nouvelle série E peut exécuter jusqu'à 70 MIP, bien qu'il y ait plus de raisons pour lesquelles elle pourrait ralentir en attendant quelque chose que les modèles plus lents antérieurs. Ils sont encore nettement plus rapides en moyenne.

  4. Capacité DSP. Le moteur DSP dispose de deux accumulateurs 40 bits et du matériel habituel pour effectuer une séquence d'opérations MAC sur des tableaux un MAC par cycle d'instruction (voir la réponse de Dave Tweed). Le MAC et les instructions associées chevauchent l'indexation de la matrice et la terminaison de boucle avec la multiplication-accumulation réelle.

  5. 15 "registres de travail" 16 bits utilisables par logiciel au lieu du seul registre W 8 bits des architectures PIC 8 bits.

  6. Changeur de barillet.

  7. Mono-cycle 16x16 -> 32 bits multiplier.

  8. Division du matériel. Une opération 32 div 16 -> 16 bits prend 18 cycles.

  9. Beaucoup d'instructions à 3 opérandes. Par exemple, vous pouvez ajouter le contenu de deux registres de travail et placer le résultat dans un troisième, le tout en un seul cycle. Cela s'applique à la plupart des opérations mathématiques, logiques et de décalage.

  10. Ensemble d'instructions globalement plus régulier et symétrique.

  11. Interruptions vectorisées. Le PIC 16 a un seul vecteur d'interruption et le PIC 18 en a deux. Sur les parties 16 bits (PIC 24, dsPIC 30 et 33), chaque source d'interruption a son propre vecteur. Cela réduit la latence dans la routine d'interruption car il n'a pas besoin de passer des cycles à déterminer l'interruption à réparer.

    Cela permet également une meilleure architecture logicielle. La routine d'interruption pour un périphérique particulier peut être dans le même module que l'autre code gérant ce périphérique, au lieu d'avoir à avoir une routine d'interruption globale.

  12. Divers autres avantages qui découlent de l'architecture plus large.

Olin Lathrop
la source
8

Habituellement, la principale caractéristique d'un DSP par rapport à un CPU à usage général est que le DSP peut exécuter certaines opérations de traitement du signal avec peu ou pas de cycles CPU gaspillés sur des instructions qui ne calculent pas les résultats.

L'une des opérations les plus élémentaires de nombreux algorithmes DSP clés est l'opération MAC (multiplication-accumulation), qui est l'étape fondamentale utilisée dans les produits matriciels et croisés, les filtres FIR et IIR ainsi que les FFT. Un DSP aura généralement une organisation de registre et / ou de mémoire et un chemin de données qui lui permet d'effectuer au moins 64 opérations MAC sur des paires de données uniques d'affilée sans que les horloges soient gaspillées sur la surcharge de la boucle ou le mouvement des données. Les processeurs à usage général n'ont généralement pas suffisamment de registres pour y parvenir sans utiliser d'instructions supplémentaires pour déplacer les données entre les registres et la mémoire.

Dave Tweed
la source
1
+1 pour l'accent mis sur les opérations MAC. Ce sont sans aucun doute le cœur de la plupart des opérations DSP.
Matt Young