Was kann der dsPIC, was der bescheidene PIC-Mikrocontroller nicht kann?

Ich habe noch keinen DSP-Chip verwendet. Ich weiß nur, dass ihre Architektur so beschaffen ist, dass sie Berechnungen ziemlich schnell durchführen können, normalerweise innerhalb eines Taktzyklus, sie haben Anweisungen zum Multiplizieren und Akkumulieren in ihrem Befehlssatz und sie haben DMAs, sodass die CPU keine wertvolle Zeit mit dem Verschieben von Daten verschwenden muss um. Ich denke, da steckt noch mehr dahinter, aber das sind ein paar grundlegende Punkte.

Ich kann sehen, dass Microchip dsPIC hat, was ihre DSP-Chip-Linie ist. Können wir nicht einfach einen PIC18 oder PIC32 verwenden, der auch eingebaute Multiplikatoren hat, um auch DSP zu machen? Wie unterscheidet sich der dsPIC vom normalen PIC?

Meine Hauptfrage lautet: Warum brauchen wir einen separaten und eigenständigen DSP-Chip und integrieren nicht hochpräzise Berechnungsfunktionen für Gleitkommaeinheiten auf allen Mikrocontrollern? Mit den Prozesstechnologien, die wir jetzt haben, sollte dies sicherlich nicht viel Platz einnehmen.

Woher weiß ich auch, dass ich in meinem Projekt einen DSP-Chip anstelle eines normalen Mikrocontrollers verwenden muss>

Gute Antworten auf die ähnliche Frage gibt es hier: electronic.stackexchange.com/questions/3067/…
Ein PIC32 ist eine völlig andere Architektur (MIPS) als andere PICs, sein Name hat wahrscheinlich mehr mit Marketing zu tun als mit allem anderen. Es ist wesentlich leistungsfähiger als andere PIC-Geräte, einschließlich des dsPIC.

Antworten (4)

Im Allgemeinen bedeutet "DSP ..." "relevantere Leistung und/oder relevantere Hardware zum Zeitpunkt der Einführung des Produkts ".
Verallgemeinerte Prozessoren neigen dazu, ältere Spezialgeräte einzuholen.
DSPIC ist wahrscheinlich über 10 Jahre alt - Olin wird es wissen.

[Einträge in Klammern beziehen sich auf einige DSPIC-Beispiele – nicht vollständig].

Bei DSP-Produkten erwarten Sie eine Mischung aus:
Erwarten Sie Dinge wie Barrel-Shifter,
breite schnelle Pipelines und schnelle Einzelzyklus-Ausführungszeiten,
breite Einzelzyklus-Befehle,
DMA [6 oder 8 Kanäle, Dual-Port-RAM-Puffer] große lineare Speicheradressierungsbereiche [4-Mword-Programm , 64 kB Daten] spezialisierte arithmetisch orientierte Funktionen
Vielleicht:
spezielle Peripheriegeräte wie Motorsteuerung,
Hardware für verschiedene Kommunikationsstandards [CAN, IIC, UART, IIS, AC97, ...] tiefer als gewöhnliche Kommunikationspuffer [4 Bytes] schneller und /oder breiter als übliche ADCs [2 Msps, 10 oder 12 Bit]

Die meisten davon finden Sie in der DSPIC-Familie – und zunehmend auch in GP-Prozessorfamilien.
In extremen Fällen erhalten Sie Benutzer-Mikrocodierung und mehr.

Wenn ich mich recht erinnere, habe ich 1999 zum ersten Mal von den dsPIC-Designanstrengungen gehört, erste Muster wurden Anfang 2002 mit Produktionsteilen Ende 2002 oder Anfang 2003 herausgegeben. Ich habe immer noch irgendwo einen handgelöteten 30F2010 in einem 28-Pin-Keramik-DIP-Gehäuse wurde versehentlich als 30F6010 gekennzeichnet. Es lief nur mit 1/3 der letztendlichen Höchstgeschwindigkeit und war von Hand als Nr. 55 oder so gekennzeichnet.
Sie können auch auf bis zu 200 oder 260 MHz getaktet werden, während die PIC-Leitung nur bis zu 4 bis 20 MHz unterstützt. Mehr als 10 Mal schneller zu sein, ist definitiv ein Punkt, den es zu berücksichtigen gilt.
@Havenard - Beachten Sie, dass dies eine Frage und Antwort von 2014 ist: Er erwähnte PIC32 als mögliche Alternative zum DSPIC. Der 2007er PIC32MX hat eine Cmax (maximale Taktfrequenz) von 80 MHz. Der 2013er PIC32MZ hat eine Cmax von 252 MHz. || Nützlicher, wenn auch unvollständiger Vergleich hier {Wikipedia}.

Einige der Vorteile eines dsPIC gegenüber PICs früherer Architektur, wie den PIC 16- und 18-Familien:

  1. 16 Bit breite Datenpfade und ALU, im Gegensatz zu 8.

  2. Möglichkeit, mehr Datenspeicher direkt anzusprechen (spätere Versionen beider Architekturen erweiterten dies auf verschiedene klobige Weise). Ein Basis-PIC 16 kann 128 Bytes direkt adressieren, 512 mit Banking. Die neueren PIC 16F1xxx haben erweitertes Banking, um mehr Datenspeicher adressieren zu können. Die Architektur des PIC 18 ist auf 4 kByte begrenzt. Die dsPIC-Architektur kann 64k Bytes oder 32k 16-Bit-Wörter direkt adressieren, obwohl aus verschiedenen Gründen in der Basisarchitektur nur die Hälfte davon für RAM zur Verfügung steht. Ein Banksystem in einigen der späteren Modelle hat dies erweitert.

  3. Schneller. Der ursprüngliche 30F konnte mit 30 MIPs laufen, wobei 40 MIPs jetzt die Norm sind. Die neue E-Serie kann bis zu 70 MIPs ausführen, obwohl es mehr Gründe gibt, warum sie auf etwas warten könnte, als die früheren langsameren Modelle. Sie sind im Durchschnitt immer noch deutlich schneller.

  4. DSP-Fähigkeit. Die DSP-Engine verfügt über zwei 40-Bit-Akkumulatoren und die übliche Hardware, um eine Folge von MAC-Operationen auf Arrays auszuführen, einen MAC pro Befehlszyklus (siehe Antwort von Dave Tweed). Der MAC und verwandte Befehle überlappen die Array-Indizierung und Schleifenterminierung mit dem tatsächlichen Multiplizieren-Akkumulieren.

  5. 15 softwarenutzbare 16-Bit-"Arbeitsregister" anstelle des einzelnen 8-Bit-W-Registers der 8-Bit-PIC-Architekturen.

  6. Barrel-Shifter.

  7. Einzelzyklus 16x16 -> 32-Bit-Multiplikation.

  8. Hardware-Teilung. Eine 32 div 16 -> 16-Bit-Operation dauert 18 Zyklen.

  9. Viele 3-Operanden-Befehle. Sie können zum Beispiel in einem einzigen Zyklus den Inhalt von zwei Arbeitsregistern addieren und das Ergebnis in ein drittes schreiben. Dies gilt für die meisten mathematischen, logischen und Verschiebungsoperationen.

  10. Insgesamt regelmäßigerer und symmetrischerer Befehlssatz.

  11. Vektorisierte Interrupts. Der PIC 16 hat einen einzigen Unterbrechungsvektor und der PIC 18 hat zwei. Auf den 16-Bit-Teilen (PIC 24, dsPIC 30 und 33) hat jede Unterbrechungsquelle ihren eigenen Vektor. Dies reduziert die Latenz in der Interrupt-Routine, da sie keine Zyklen damit verbringen muss, herauszufinden, welcher Interrupt bedient werden soll.

    Dies ermöglicht auch eine bessere Softwarearchitektur. Die Unterbrechungsroutine für ein bestimmtes Peripheriegerät kann sich in demselben Modul befinden wie der andere Code, der dieses Peripheriegerät handhabt, anstatt eine globale Unterbrechungsroutine haben zu müssen.

  12. Verschiedene andere Vorteile, die sich aus der breiteren Architektur ergeben.

Normalerweise besteht das Hauptunterscheidungsmerkmal eines DSP im Vergleich zu einer Allzweck-CPU darin, dass der DSP bestimmte Signalverarbeitungsvorgänge mit wenigen, wenn überhaupt, CPU-Zyklen ausführen kann, die für Befehle verschwendet werden, die keine Ergebnisse berechnen.

Eine der grundlegendsten Operationen in vielen wichtigen DSP-Algorithmen ist die MAC-Operation (Multiply-Accumulate), die der grundlegende Schritt ist, der in Matrix-Punkt- und -Kreuzprodukten, FIR- und IIR-Filtern sowie FFTs verwendet wird. Ein DSP verfügt typischerweise über eine Register- und/oder Speicherorganisation und einen Datenpfad, der es ihm ermöglicht, mindestens 64 MAC-Operationen an eindeutigen Datenpaaren hintereinander durchzuführen, ohne dass Takte für Loop-Overhead oder Datenbewegung verschwendet werden. Allzweck-CPUs haben im Allgemeinen nicht genügend Register, um dies zu erreichen, ohne zusätzliche Befehle zum Verschieben von Daten zwischen Registern und Speicher zu verwenden.

+1 für die Betonung von MAC-Operationen. Diese sind ohne Zweifel der Kern der meisten DSP-Operationen.
Das ist eine allgemeine Beschreibung von DSP, nicht speziell von dsPIC, das weit weniger fähig ist als das, was Sie beschrieben haben.
@Clifford: Während meine Antwort hauptsächlich zur Beantwortung der allgemeineren Frage "Was ist ein DSP?" geschrieben wurde, enthält sie nichts, was nicht speziell auf den dsPIC zutrifft.
Sie haben " mindestens 64 MAC-Operationen" gesagt, was weit von den beiden des dsPIC entfernt ist . Um fair zu sein, der dsPIC ist ein DSC, kein DSP - dieses Missverständnis in der Frage wird hier nicht angesprochen. Ich schätze auch, dass es lange her ist und wahrscheinlich akademisch - jeder, der sich jetzt mit diesem Thema befasst, täte gut daran, den Markt für geeignete Teile neu zu bewerten.
@Clifford: Ich denke, Sie haben das falsche Ende des Sticks in diesem Fall. Es stimmt, dass der dsPIC nur zwei verschiedene MAC-Befehle hat, aber das war nicht das, wovon ich gesprochen habe. Ich sprach über Leistung – die Fähigkeit, MAC-Anweisungen kontinuierlich auszuführen, ohne dass zusätzliche Zyklen für die Datenbewegung oder Schleifen-Overhead erforderlich sind. Die REPEAT- und DO-Befehle eliminieren den Loop-Overhead, und die X- und Y-Speicher auf dem Chip bieten Zugriff auf Daten, wobei die Hauptbeschränkung ihre Größe ist. Dies begrenzt letztendlich die Anzahl der MACs, die Sie ausführen können, bevor Sie anhalten und Daten verschieben müssen.
Du hast recht. Ich habe deinen Punkt falsch verstanden. Ich dachte, Sie schlagen keinen gleichzeitigen MAC ohne Schleife vor. Der dsPIC hat im Vergleich zu PIC24 tatsächlich eine erweiterte (Mehrfachbefehls-) Hardwareschleife.

Der dsPIC33 ist im Wesentlichen ein PIC24 mit einigen bescheidenen DSP-Fähigkeiten - hauptsächlich ein Dual-MAC. Es zielt auf die Motorsteuerung ab. Ihn als DSP zu bezeichnen, wäre übertrieben - Microchip bezeichnet ihn als digitalen Signalcontroller, was seine Zielanwendung der Motorsteuerung widerspiegelt.

Ich habe es in bescheidenen Signalverarbeitungsanwendungen für die Basisbanddecodierung von GMSK mit niedriger Rate verwendet, aber diese Anwendung wurde später erfolgreich auf einem ARM Cortex-M3 bei 72 MHz implementiert und erweitert. Ich würde freiwillig keine Art von PIC verwenden. Abgesehen von dem eher Nischen-PIC32 sind sie architektonisch seltsam und in der gesamten Bandbreite uneinheitlich. ARM Cortex-M4 oder M7 beispielsweise verfügen über eine weitaus umfassendere DSP-Unterstützung als dsPIC mit einer weitaus größeren Auswahl an Teilen und Leistungsspektrum.

Sie können die Signalverarbeitung durchführen, ohne einen dedizierten DSP zu verwenden. Aktuelle DSPs werden nützlich, wenn mehrere Signale verarbeitet werden oder mit sehr hohen Abtastraten arbeiten, wie zum Beispiel für Software Defined Radio. Zunehmend wird dafür jedoch ein FPGA verwendet.

Warum nicht einfach einen sehr leistungsstarken 32-Bit-Prozessor wählen? Ist ein "DSP"-Prozessor wirklich so wichtig gegenüber einem leistungsstarken 32-Bit-Prozessor? Die Kosten für 32-Bit-Prozessoren sind jetzt ziemlich gesunken.
@ quantum231: Ich habe die Antwort bearbeitet - es gab einen Tippfehler: "mit" -> "ohne"; so sagt das jetzt im Wesentlichen. Außerdem muss es nicht so stark sein; es kommt auf die Anwendung an. Es gibt zum Beispiel Arduino (AVR) basierte Gitarreneffektprojekte. Die Audiosignalverarbeitung erfordert nicht unbedingt viel Pferdestärke. Ein weiterer Tippfehler uns, dass ich uns freiwillig ein PIC „nicht wünsche“. Fett gefingerte Telefonbearbeitung!
@ quantum231 Vermächtnis und Trägheit. Denken Sie wie ein Unternehmen mit bestehenden Produkten und Infrastruktur.