Um ehrlich zu sein, ist die Grenze zwischen den beiden heute fast verschwunden und es gibt Prozessoren, die als beides klassifiziert werden können (zum Beispiel AD Blackfin).
Allgemein gesagt:
Mikrocontroller sind ganzzahlige mathematische Prozessoren mit einem Interrupt-Subsystem. Einige verfügen möglicherweise über Hardware-Multiplikationseinheiten, andere über keine usw. Sie wurden speziell für einfache Berechnungen und hauptsächlich zur Steuerung anderer Geräte entwickelt.
DSPs sind Prozessoren, die für die Streaming-Signalverarbeitung optimiert sind. Sie verfügen häufig über spezielle Anweisungen, die häufige Aufgaben beschleunigen, z. B. das Multiplizieren und Akkumulieren in einer einzigen Anweisung. Sie haben auch oft andere Vektor- oder SIMD-Anweisungen. In der Vergangenheit waren sie keine Interrupt-basierten Systeme und wurden mit Nicht-Standard-Speichersystemen betrieben, die für ihren Zweck optimiert waren, wodurch ihre Programmierung erschwert wurde. Sie wurden normalerweise für den Betrieb in einer großen Schleife entwickelt, die einen Datenstrom verarbeitet. DSPs können als Ganzzahl-, Festkomma- oder Gleitkommaprozessoren ausgeführt werden.
Wenn Sie in der Vergangenheit Audiostreams und Videostreams verarbeiten und eine schnelle Motorsteuerung ausführen wollten, sollten Sie sich einen DSP zulegen.
Wenn Sie einige Tasten steuern, eine Temperatur messen, ein Zeichen-LCD ausführen und andere ICs steuern möchten, die Dinge verarbeiten, würden Sie einen Mikrocontroller verwenden.
Heutzutage gibt es meistens Allzweckprozessoren mit Mikrocontrollern, die entweder DSP-ähnliche Befehle enthalten oder mit On-Chip-Co-Prozessoren, um mit Streaming-Daten oder anderen DSP-Operationen umzugehen. Reine DSPs werden nur noch in bestimmten Branchen verwendet.
Der Prozessormarkt ist viel breiter und verschwommener als früher. Zum Beispiel betrachte ich einen ARM cortex-A8 SoC kaum als Mikrocontroller, aber er passt wahrscheinlich zur Standarddefinition, insbesondere in einem PoP-Paket.
BEARBEITEN: Ich habe mir vorgenommen, ein wenig zu erklären, wann / wo ich DSPs verwendet habe, selbst in den Tagen der Anwendungsprozessoren.
Ein kürzlich von mir entwickeltes Produkt war die Audioverarbeitung mit X Eingangskanälen und X Ausgangskanälen pro 'Zone'. Die beabsichtigte Verwendung des Produkts bedeutete, dass es oft dort saß und jahrelang die Audiokanäle verarbeitete, ohne dass jemand es berührte. Die Audioverarbeitung bestand aus verschiedenen akustischen Filtern und Funktionen. Das System war auch "hot-plug-fähig" mit der Möglichkeit, einige unabhängige "Zonen" in einer Box hinzuzufügen. Es wurden insgesamt 3 PCB-Designs (Hauptplatine, Rückwandplatine und Einsteckmodul) und die Rückwandplatine 4 Einsteckmodule unterstützt. Ein ziemlich lustiges Projekt, da ich es alleine gemacht habe, musste ich das Systemdesign, den Schaltplan, das PCB-Layout und die Firmware machen.
Jetzt hätte ich das Ganze mit einem einzigen sperrigen ARM-Kern erledigen können. Ich benötigte nur etwa 50 MIPS DSP-Arbeit für 24-Bit-Festkommazahlen pro Zone. Aber weil ich wusste, dass dieses System extrem lange funktionieren würde, war es wichtig, dass es niemals klickt oder knallt oder ähnliches. Ich entschied mich für die Implementierung mit einem DSP mit geringem Stromverbrauch pro Zone und einem einzelnen PIC-Mikrocontroller, der die Rolle des Systemmanagements spielte. Auf diese Weise würde der DSP, selbst wenn eine der uC-Funktionen abstürzt, möglicherweise ein DDOS-Angriff auf seinen Ethernet-Port, einfach weiter tuckern und es ist wahrscheinlich, dass niemand etwas davon merkt.
Der Mikrocontroller spielte also die Rolle des zweizeiligen LCD, einiger Tasten, der Temperaturüberwachung und der Lüftersteuerung (es gab auch einige Audioverstärker mit relativ hoher Leistung auf jeder Platine) und bediente sogar eine AJAX-artige Webseite über Ethernet. Es verwaltete auch die DSPs über eine serielle Verbindung.
Das ist eine Situation, in der selbst in den Tagen, in denen ich einen einzelnen ARM-Kern für alles hätte verwenden können, das Design einen dedizierten Signalverarbeitungs-IC vorschrieb.
Andere Bereiche, in denen ich auf DSPs gestoßen bin:
* High-End-Audio - Sehr hochwertige Receiver und Misch- und Verarbeitungsgeräte in Konzertqualität
* Radarverarbeitung - Ich habe auch ARM-Kerne für diese in Low-End-Apps verwendet.
* Sonar-Verarbeitung
* Echtzeit-Computer Vision
Die unteren und mittleren Bereiche des Audio- / Video- / ähnlichen Bereichs wurden größtenteils von Anwendungsprozessoren übernommen, die eine Allzweck-CPU mit Co-Proc-Offload-Engines für verschiedene Anwendungen kombinieren.