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

10

Ich habe noch keinen DSP-Chip verwendet. Alles was ich weiß ist, dass ihre Architektur so ist, dass sie Berechnungen ziemlich schnell ausführen können, normalerweise innerhalb eines Taktzyklus, sie haben mehrfach akkumulierte Befehle in ihrem Befehlssatz und sie haben DMAs, so dass die CPU keine kostbare Zeit damit verschwenden muss, Daten zu verschieben 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-Chiplinie ist. Können wir nicht einfach einen PIC18 oder PIC32 verwenden, der auch Multiplikatoren für DSP eingebaut hat? Wie unterscheidet sich der dsPIC vom normalen PIC?

Meine Hauptfrage lautet: Warum müssen wir einen separaten und eindeutigen DSP-Chip haben und nicht auf allen Mikrocontrollern hochpräzise Gleitkomma-Berechnungsfunktionen integrieren? Mit den heutigen Prozesstechnologien sollte dies sicherlich nicht viel Platz beanspruchen.

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

quantum231
quelle
1
Es gibt gute Antworten auf die ähnliche Frage hier: electronic.stackexchange.com/questions/3067/…
David

Antworten:

3

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

[Die Angaben in Klammern beziehen sich auf einige DSPIC-Beispiele - nicht erschöpfend].

In DSP-Produkten erwarten Sie eine Mischung aus:
Erwarten Sie Dinge wie Barrel Shifter,
breite, schnelle Pipelines und schnelle Ausführungszeiten für einen Zyklus,
breite Anweisungen für einen einzelnen Zyklus,
DMA [6 oder 8 Kanäle, Dual-Port-RAM-Puffer], große lineare Speicheradressierungsbereiche [4 Mword-Programm , 64 kB Daten] arithmetisch spezialisierte Spezialfunktionen
Möglicherweise:
Spezialperipheriegeräte wie Motorsteuerung,
Hardware für verschiedene Kommunikationsstandards [CAN, IIC, UART, IIS, AC97, ...], die tiefer und üblicher als übliche Kommunikationspuffer [4 Byte] sind, schneller und schneller / 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.

Russell McMahon
quelle
1
Wenn ich mich recht erinnere, hörte ich 1999 zum ersten Mal von den dsPIC-Konstruktionsbemühungen. Die ersten Muster wurden Anfang 2002 mit Produktionsteilen Ende 2002 oder Anfang 2003 ausgegeben. Ich habe immer noch irgendwo einen handgebrannten 30F2010 in einem 28-poligen Keramik-DIP-Gehäuse, das wurde versehentlich als 30F6010 gekennzeichnet. Es lief nur mit 1/3 der eventuellen vollen Geschwindigkeit und wurde von Hand als # 55 oder so markiert.
Olin Lathrop
1
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 zehnmal schneller zu sein, ist definitiv ein zu berücksichtigender Punkt.
Havenard
1
@Havenard - Feststellend, dass dies ein Q & A von 2014 ist: Er erwähnte PIC32 als mögliche Alternative zum DSPIC. Der 2007 PIC32MX hat eine Cmax (maximale Taktfrequenz) von 80 MHz. Der 2013 PIC32MZ hat eine Cmax von 252 MHz. || Nützlicher, wenn auch unvollständiger Vergleich hier {Wikipedia}.
Russell McMahon
11

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 gemäß 8.

  2. Die Möglichkeit, mehr Datenspeicher direkt zu adressieren (spätere Versionen beider Architekturen haben dies auf verschiedene klobige Arten erweitert). Ein Basis-PIC 16 kann 128 Bytes direkt adressieren, 512 mit Banking. Der neuere PIC 16F1xxx verfügt über ein erweitertes Banking, um mehr Datenspeicher adressieren zu können. Die PIC 18-Architektur ist auf 4 KByte begrenzt. Die dsPIC-Architektur kann 64 KByte oder 32 KBit 16-Bit-Wörter direkt adressieren, obwohl aus verschiedenen Gründen nur die Hälfte davon für RAM in der Basisarchitektur verfügbar ist. Ein Bankensystem in einigen der späteren Modelle hat dies erweitert.

  3. Schneller. Der ursprüngliche 30F könnte mit 30 MIPs betrieben werden, wobei 40 MIPs jetzt die Norm sind. Die neue E-Serie kann bis zu 70 MIPs ausführen, obwohl es mehr Gründe gibt, auf etwas zu warten 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 mit einem MAC pro Befehlszyklus auszuführen (siehe Antwort von Dave Tweed). Der MAC und die zugehörigen Anweisungen überlappen die Array-Indizierung und die Schleifenbeendigung mit der tatsächlichen Multiplikationsakkumulation.

  5. 15 von der Software verwendbare 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 teilen. Eine 32-Div-16 -> 16-Bit-Operation dauert 18 Zyklen.

  9. Viele 3-Operanden-Anweisungen. Sie können beispielsweise den Inhalt von zwei Arbeitsregistern hinzufügen und das Ergebnis in einem einzigen Zyklus in ein drittes Register einfügen. Dies gilt für die meisten mathematischen, logischen und Verschiebungsoperationen.

  10. Insgesamt regelmäßiger und symmetrischer Befehlssatz.

  11. Vektor-Interrupts. Der PIC 16 hat einen einzelnen Interruptvektor und der PIC 18 hat zwei. Auf den 16-Bit-Teilen (PIC 24, dsPIC 30 und 33) hat jede Interruptquelle ihren eigenen Vektor. Dies reduziert die Latenz in der Interrupt-Routine, da keine Zyklen erforderlich sind, um herauszufinden, welcher Interrupt zu bedienen ist.

    Dies ermöglicht auch eine bessere Softwarearchitektur. Die Interruptroutine für ein bestimmtes Peripheriegerät kann sich im selben Modul befinden wie der andere Code, der dieses Peripheriegerät verarbeitet, anstatt eine globale Interruptroutine zu haben.

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

Olin Lathrop
quelle
8

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 Anweisungen verschwendet werden, die keine Ergebnisse berechnen.

Eine der grundlegendsten Operationen in vielen wichtigen DSP-Algorithmen ist die MAC-Operation (Multiply-Accumulate), die den grundlegenden Schritt darstellt, der in Matrixpunkt- und Kreuzprodukten, FIR- und IIR-Filtern sowie FFTs verwendet wird. Ein DSP verfügt normalerweise über eine Register- und / oder Speicherorganisation und einen Datenpfad, der es ihm ermöglicht, mindestens 64 MAC-Operationen an eindeutigen Datenpaaren in einer Reihe auszuführen, ohne dass Uhren durch Schleifen-Overhead oder Datenbewegung verschwendet werden. Allzweck-CPUs verfügen im Allgemeinen nicht über genügend Register, um dies zu erreichen, ohne zusätzliche Anweisungen zum Verschieben von Daten zwischen Registern und Speicher zu verwenden.

Dave Tweed
quelle
1
+1 für den Schwerpunkt auf MAC-Operationen. Dies ist ohne Zweifel der Kern der meisten DSP-Operationen.
Matt Young