Zum Inhalt springen

„Digitaler Signalprozessor“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[ungesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Position des DSP auf Platine ergänzt, sonst muss der Leser erst suchen
 
(178 dazwischenliegende Versionen von mehr als 100 Benutzern, die nicht angezeigt werden)
Zeile 1: Zeile 1:
[[Datei:KL Motorola DSP XSP56001ZL.jpg|mini|Der Motorola [[Motorola 56001|XSP56001]] ist ein DSP aus der 56K-Familie.]]
'''Digitale Signalprozessoren''' (engl. ''digital signal processor'', '''DSP''') dienen der kontinuierlichen digitalen Bearbeitung analoger Signale (z. B. Audio- oder Videosignale).
[[Datei:NeXTcube motherboard.jpg|mini|Der [[NeXTcube]]-Computer von 1990 mit [[Motorola 68040]] (25 MHz) wies auch einen digitalen Signalprozessor Motorola 56001 mit 25 MHz auf (mittig, goldfarbenes IC), der über eine Schnittstelle von außen zugänglich war.]]
Ein '''digitaler Signalprozessor''' (englisch ''digital signal processor'', '''DSP''') ist ein [[Integrierter Schaltkreis|elektronischer Baustein]] und dient der kontinuierlichen [[digitale Signalverarbeitung|Bearbeitung digitaler Signale]], z. B. [[Audiosignal]]e oder [[Videosignal]]e. Zur Verarbeitung [[Analoges Signal|analoger Signale]] wird der DSP in Verbindung mit [[Analog-Digital-Umsetzer]]n und [[Digital-Analog-Umsetzer]]n eingesetzt. Einige DSP-Chips enthalten diese Umsetzer bereits. Der Begriff DSP wird darüber hinaus auch nur für die rechnende Komponente innerhalb einer [[Software]] und [[Elektronik]] verwendet.


== Anwendungen ==
Sie dienen nicht nur als Ersatz für aufwendige analoge Filtertechnik, sondern können darüberhinaus Aufgaben ausführen, die analog nur schwer oder überhaupt nicht lösbar sind:
Digitale Signalprozessoren dienen nicht nur als Ersatz für aufwendige analoge [[Filter (Elektrotechnik)|Filtertechnik]], sondern können darüber hinaus Aufgaben ausführen, die analog nur schwer oder überhaupt nicht lösbar wären:
* Frequenzfilter hoher Ordnung mit geringem Phasenfehler, z. B. Klangbeeinflussung beim Abmischen und in [[Mischpult]]en
* [[Kompressor (Signalverarbeitung)|Dynamikkompression]] und [[Rauschunterdrückung]] mit dynamischen ([[Adaptive Regelung|adaptiven]]) Parametern
* [[Störaustastung]] unter Berücksichtigung des Charakters des Signales
* Implementierung von Effekten wie [[Echo]], [[Nachhall#Typen von Nachhallgeräten|Hall]] oder Verfremdung von Stimmen
* [[Echokompensation|Echounterdrückung]]
* [[Datenkomprimierung]] zur digitalen Weiterverarbeitung
* [[Spracherkennung]] und [[Sprachsynthese]]
* [[Signalanalyse]] und Protokollanalyse in [[Oszilloskop]]en
* Schnelle [[Bildverarbeitung#Beispiele|digitale Bildbearbeitung]]
In Anwendungen eingebettete digitale Signalprozessoren werden häufig in [[Mobiltelefon]]en, [[Festplattenlaufwerk]]en, [[Fernseher]]n, [[Digitalkamera]]s, [[Radio]]s, [[Drucker (Gerät)|Druckern]], [[Medizingerät]]en, [[MP3-Player]]n und anderen [[Elektronik|elektronischen]] Geräten verwendet. Diese [[Prozessor]]en werden in vielen Anwendungsbereichen eingesetzt und sind sehr kostengünstig. Die [[Softwareentwicklung]] für digitale Signalprozessoren wurde durch speziell entwickelte [[Software]] erleichtert. DSPs können vor Ort neu [[Programmierung|programmiert]] werden, um das Produkt zu aktualisieren oder [[Softwarefehler]] zu beheben. Dazu gehören nützliche integrierte Tools für die Softwareentwicklung, z. B. eine [[integrierte Entwicklungsumgebung]], ein [[Quelltext]]-[[Editor (Software)|Editor]], ein [[Compiler]], ein [[Debugger]], ein [[Profiler (Programmierung)|Profiler]] und ein [[Echtzeit]]-[[Betriebssystem]]. Digitale Signalprozessoren bieten die Vorteile von [[Mikroprozessor]]en, sind einfach zu bedienen, flexibel und kostengünstiger.


Digitale Signalprozessoren sind spezialisierte [[Prozessor]]en, die zu einem festen Bestandteil moderner Signalverarbeitungssysteme geworden sind. DSPs ähneln größtenteils Universalprozessoren. Sie können mit einer [[Programmiersprache]] wie [[C (Programmiersprache)|C]] oder [[C++]] [[Programmierung|programmiert]] werden und ein [[Betriebssystem]] ausführen. Der Hauptunterschied zwischen DSPs und herkömmlichen Prozessoren liegt im [[Befehlssatz]] und in der [[Speicherverwaltung]]. Der Befehlssatz eines DSP ist an bestimmte [[Anwendungssoftware]] angepasst.<ref>ScienceDirect: [https://www.sciencedirect.com/topics/computer-science/digital-signal-processor Digital Signal Processor]</ref>
*Frequenzfilter hoher Ordnung mit geringem Phasenfehler (z.&nbsp;B. Klangbeeinflussung beim Abmischen und in [[Mischpult]]en)
*Dynamikkompression und Rauschunterdrückung mit dynamischen (adaptiven) Parametern
*[[Störaustastung]] unter Berücksichtigung des Charakters des Signales
*Implementierung von Effekten wie Echo, Hall oder Verfremdung der Singstimme
*Datenkomprimierung zur digitalen Weiterverarbeitung


== Funktionsweise ==
DSPs enthalten hierzu am Ein- und Ausgang meist auch die erforderlichen A/D- und [[D/A-Wandler]] sowie stets einen auf relevante mathematische Operationen geschwindigkeitsoptimierten Prozessor ([[CPU]]).
Digitale Signalprozessoren sind spezialisierte [[Prozessor]]en, die für die Ausführung von DSP-Funktionen in [[Echtzeit]] optimiert sind, die auf sich wiederholenden [[Multiply-Accumulate]] (MAC) Operationen basieren, die häufig bei der [[Digitales Filter|digitalen Filterung]], z.&nbsp;B. [[Filter mit endlicher Impulsantwort]], und der [[Schnelle Fourier-Transformation|schnellen Fourier-Transformation]] (FFT) verwendet werden. Die DSPs integrieren einen [[Programmierung|programmierbaren]] [[Mikroprozessor]], der normalerweise in eine [[Harvard-Architektur]] integriert ist. Sie bieten eine schnelle Datenverarbeitung durch Implementierung von Einzelbefehlen, SIMD-Operationen (siehe [[Flynnsche Klassifikation#SIMD (Single Instruction, Multiple Data)|Single Instruction, Multiple Data]]), speziellen Befehlen für Kerne mit superskalaren Architekturen, MAC-Berechnungen mit einem Zyklus oder [[Fused multiply-add|Fused Multiply-Add]], parallele Berechnung in mehreren MAC-Einheiten und schnelles [[Datenstrom|Data Streaming]] mit [[Speicherdirektzugriff]], [[Digitaler Ringspeicher|digitale Ringspeicher]], hardwaregesteuertem Loop ohne Overhead und schnellen und erweiterten Präzisionsberechnungen in [[Festkommazahl|Festkomma-]] oder [[Gleitkommaoperation]]en. Sie integrieren auch einige [[Peripheriegerät]]e und [[Datenspeicher]] auf dem Chip für einen eigenständigen Betrieb.


Es gibt viele DSPs auf dem aktuellen Markt, die aufgrund der Fortschritte und Verbesserungen der Halbleitertechnologie in den DSP-Architekturen eine hohe Leistung liefern. Preise und Leistung variieren stark zwischen den wichtigsten DSP-Herstellern und [[IP-Core]]-Anbietern.<ref>Arnaldo Mendez, Mohamad Sawan, in Implantable Biomedical Microsystems, 2015, ScienceDirect: [https://www.sciencedirect.com/topics/engineering/digital-signal-processor Signal processing hardware]</ref>
== Echtzeitfähigkeit ==


== Echtzeitfähigkeit ==
Ein DSP muss eine bestimmte Datenmenge pro Zeiteinheit sicher verarbeiten können. Dies ergibt sich aus der Forderung einer meist fixen und von aussen vorgegebenen [[Abtastrate]] mit welcher die Eingangsdaten in den DSP gelangen bzw. die verarbeiteten Daten wieder geschrieben werden müssen. Ein Art "Handshake" oder zeitliches Anhalten bei der Datenverarbeitung ist bei dieser echtzeitfähigen Verarbeitung nicht möglich, da dies im digitalen Signal zu Ausfällen führen würde.
Ein DSP muss eine bestimmte [[Datenmenge]] pro [[Zeitspanne]] sicher verarbeiten können. Dies ergibt sich aus der Forderung einer meist fixen und von außen vorgegebenen [[Datenrate]], mit der die Eingangsdaten in den DSP gelangen bzw. die verarbeiteten Daten wieder ausgegeben werden müssen. Eine Art ''[[Handshake]]'' oder zeitliches Anhalten bei der [[Datenverarbeitung]] ist bei dieser echtzeitfähigen Verarbeitung meistens nicht möglich.


Folgende Maßnahmen dienen dem Erhöhen der Verarbeitungsgeschwindigkeit:
DSPs werden durch folgende Einrichtungen echtzeitfähig:
* Spezielle synchrone, serielle Schnittstellen für die Ein- und Ausgabe der digitalen Signale
* Spezielle synchrone, serielle Schnittstellen für die Ein- und Ausgabe der [[Digitales Signal|digitalen Signale]].
* Sogenannte [[Multiply-Accumulate|MAC-Befehle]] für die gleichzeitige Multiplikation und Addition in einem Maschinenbefehl.
* Sogenannte [[Multiply-Accumulate|MAC-Befehle]] für die gleichzeitige Multiplikation und Addition in einem Maschinenzyklus.
* Adressgeneratoren für die Implementierung von Schleifen und Ringbufferstrukturen mit keinem softwareseitigen Overhead.
* Adressgeneratoren für die Implementierung von [[Schleife (Programmierung)|Schleifen]] und [[Ringpuffer]]strukturen ohne softwareseitigen Overhead.
* Implementierung des Prozessors ausschließlich in [[Harvard-Architektur]].
* Implementierung des [[Prozessor]]s in [[Harvard-Architektur]].
* Existenz eines dedizierten Hardware-[[Stapelspeicher|Stack]]s.
* Existenz eines dedizierten Hardware-[[Stapelspeicher|Stacks]].
* Mehrmaliger Zugriff auf den [[Datenspeicher|Speicher]] in einem Zyklus.
* Kein [[Multitasking]]
* [[Very Long Instruction Word|Very-Long-Instruction-Word]]-Anweisungen.
* schnelle Ausführung von Schleifen
* mehrmaligen Zugriff auf den Speicher in einem Zyklus


== Befehlssatz ==
== Befehlssatz ==
=== Zahlenformate ===
=== Zahlenformate ===
Unterteilt werden Signalprozessoren und deren Befehlssatz nach der Fähigkeit, Rechenoperationen entweder mittels
Unterteilt werden Signalprozessoren und deren Befehlssatz nach der Fähigkeit, Rechenoperationen
* [[Festkommaarithmetik]] (engl. ''fixed point'')
* entweder ausschließlich mittels [[Festkommaarithmetik]] (englisch ''fixed point'')
* oder zusätzlich auch als [[Gleitkommaarithmetik]] (englisch ''floating point'')
oder mittels
ausführen zu können.
* [[Gleitkommaarithmetik]] (engl. ''floating point'')
ausführen zu können.


Signalprozessoren mit Festkommaarithmetik sind im Aufbau meist einfacher und haben eine geringen Stromverbrauch. Dafür ist die Implementierung von bestimmten Algorithmen komplizierter, da bei jeder Berechnung vom Programmierer kontrolliert werden muss, ob es zu möglichen Überläufen in der Zahlendarstellung kommen kann und auf welcher Stelle sich der Kommapunkt befindet. Typische Vertreter von Signalprozessoren mit Festkommaarithmek ist die DSP-Serie [[ADSP218x]] und [[Blackfin]] BF53x von Analog Devices.
Signalprozessoren mit Festkommaarithmetik sind im Aufbau meist einfacher und haben einen geringeren Stromverbrauch. Dafür ist das Implementieren bestimmter [[Algorithmus|Algorithmen]] komplizierter, da bei jeder Berechnung vom Programmierer bedacht werden muss, ob es möglicherweise zu Überläufen in der Zahlendarstellung kommen kann und auf welcher Stelle sich das Binärkomma befindet. Ein typisches Anwendungsfeld von Festkomma-DSPs ist beispielsweise das Verarbeiten von Audiosignalen. Typische Vertreter von Signalprozessoren mit Festkommaarithmetik ist die DSP-Serie [[ADSP218x]] und [[Blackfin]] BF53x von [[Analog Devices]] sowie die [[Texas Instruments TMS320|TMS320VC5x]] von [[Texas Instruments]].


Signalprozessoren mit Gleitkommaarithmetik sind komplexer im Aufbau, da ihre Rechenwerke die kompliziertere Darstellung der Gleitkommazahlen verarbeiten können. Damit ist bei gleicher Rechenleistung meist ein höherer Stromverbrauch verbunden. Der Vorteil liegt in der meist einfachen Implementierung von komplizierten Algorithmen. Typische Vertreter von Signalprozessoren mit Gleitkommaarithmetik sind die als [[ADSP21k_(DSP)|Sharc]] bezeichneten Bausteine von Analog Devices.
Signalprozessoren mit Gleitkommaarithmetik sind komplexer im Aufbau, da ihre Rechenwerke die kompliziertere Darstellung der Gleitkommazahlen verarbeiten können. Damit ist bei gleicher Rechenleistung meist ein höherer Stromverbrauch verbunden. Der Vorteil liegt in der meist einfachen Implementierung komplizierter Algorithmen. Ein typisches Anwendungsfeld von Gleitkomma-DSPs ist beispielsweise das Verarbeiten von Videosignalen. Typische Vertreter von Signalprozessoren mit Gleitkommaarithmetik sind die als [[Super-Harvard-Architektur#Analog Devices|SHARC]] bezeichneten Bausteine von Analog Devices und die TMS320VC67x von Texas Instruments.


=== Operationen ===
=== Operationen ===
* Es existieren mehrere Rechenwerke ([[Arithmetic Logical Unit|ALUs]]), darunter ein Multiply-Accumulate-Rechenwerk ([[Multiply-Accumulate|MAC]]). Dieses Rechenwerk ermöglicht die Operation '''A* = A + B x C''' in einem einzigen Prozessorzyklus und dient vornehmlich der Geschwindigkeitserhöhung der für spektrale Operationen, etwa der für die [[schnelle Fourier-Transformation]] oder der [[Faltung (Mathematik)|Faltung]] erforderlichen Berechnungen.
* Es existieren mehrere Rechenwerke ([[Arithmetisch-logische Einheit|ALUs]]), darunter ein Multiply-Accumulate-Rechenwerk ([[Multiply-Accumulate|MAC]]). Dieses Rechenwerk ermöglicht die Operation ''A* = A + B · C'' in einem einzigen Prozessorzyklus und dient vornehmlich der Geschwindigkeitserhöhung der für spektrale Operationen etwa der für die [[schnelle Fourier-Transformation]] oder der [[Faltung (Mathematik)|Faltung]] erforderlichen Berechnungen.
* Auf [[Boolesche Algebra|Boolesche Operationen]] beschränkte [[Rechenwerk]]e werden in einigen DSPs (z.&nbsp;B. [[Texas Instruments|TI]] TMS320Cxx) zur unabhängigen Datenmanipulation eingesetzt (PLU = ''Parallel Logic Unit'').
* Es werden auch Adress Generation Units (AGU) eingesetzt. Die AGU besteht aus programmierbaren Zählern (Counter), Shiftern und anderen logischen Elementen. Dadurch können die Speicheradressen z.B. für die Operanden parallel zu arithmetischen Operationen ausgeführt werden um auch die Speicherbandbreite nicht zu verkleinern. Einige AGUs unterstützen die Register-Indirekte Adressierung mit nachträglicher Inkrementierung. Anwendung finden sie in Berechnungen, wo Daten wiederholt berechnet werden, die sequentiell im Speicher angeordnet sind. Für den [[schnelle Fourier-Transformation]] (FFT) Algorithmus wird auch eine bitreversed Adressierung eingesetzt.
* Es werden auch ''Address Generation Units'' (AGU) eingesetzt. Die AGU besteht aus programmierbaren Zählern (Counters), Shiftern und anderen logischen Elementen. Dadurch können die Adressberechnungen zum Beispiel für die Operanden parallel zu arithmetischen Operationen ausgeführt werden, um die Speichertransferrate nicht zu verkleinern. Einige AGU unterstützen die Register-indirekte Adressierung mit nachträglicher Inkrementierung. Anwendung finden sie bei Berechnungen, wo Daten wiederholt berechnet werden, die sequentiell im Speicher angeordnet sind. Für den Algorithmus zur schnellen Fourier-Transformation (FFT) wird auch eine [[Bitreversed-Adressierung]] eingesetzt.
* Die Execution Unit (EXU) hat die Aufgabe der Datenmanipulation. Jeder Cluster darf die Register des Nachbar Clusters auslesen. Bsp.: TI TMS320C6201
* Die ''Execution Unit'' (EXU) hat die Aufgabe der Datenmanipulation. Jeder Cluster darf die Register des Nachbarclusters auslesen. Beispiel: TI TMS320C6201
* [[VLIW]]- Anweisung


=== Programmablauf ===
=== Programmablauf ===
* Verschachteltes no-overhead Hardware-Looping mittels eines dedizierten Loop-Stacks.
* Verschachteltes No-overhead-Hardware-Looping mittels eines dedizierten Loop-Stacks.
* Die heutigen DSPs sind darüberhinaus oft massiv-parallel programmierbar, das heißt in einem einzigen Prozessorzyklus können mehrere Rechen- und/oder Speichertransferoperationen gleichzeitig durchgeführt werden.
* Die heutigen DSP sind darüber hinaus oft massiv-parallel programmierbar, das heißt in einem einzigen Prozessorzyklus können mehrere Rechen- und/oder Speichertransferoperationen gleichzeitig durchgeführt werden.
* Prefetch und Predecoding der [[Instruktion]]en ([[Pipeline-Architektur|Pipelining]]) für eine extrem hohe Ausführungsgeschwindigkeit der Befehle.
* [[Prefetch]] und Predecoding der [[Instruktion]]en ([[Pipeline (Prozessor)|Pipelining]]) für eine sehr hohe Ausführungsgeschwindigkeit der Befehle.
* Schleifenbefehle beschleunigen die Ausführung von Schleifen. Diese werden Hardware kontrolliert ausgeführt. Einige DSPs verwenden Pipelines ([[Pipelining]]) und Instruction [[Cache]]s um die Ausführung von Schleifen zu beschleunigen. Man unterscheidet 2 Arten von Schleifenbefehlen:
* Schleifenbefehle beschleunigen die Ausführung von Schleifen. Diese werden hardwarekontrolliert ausgeführt. Einige DSPs verwenden Pipelines ([[Pipeline (Prozessor)|Pipelining]]) und Instruction [[Cache]]s, um die Ausführung von Schleifen zu beschleunigen. Man unterscheidet zwei Arten von Schleifenbefehlen:
**Single Instruction Hardware Loop versteht man die Wiederholung einer Operation
** ''Single Instruction Hardware Loop'' Wiederholung einer Operation
**Multi Instruction Loop versteht man die Wiederholung des ganzen Anweisungsblockes
** ''Multi Instruction Loop'' Wiederholung eines ganzen Anweisungsblockes


== Kommunikation ==
=== Beispiel ===
Der [[Super-Harvard-Architektur#Analog Devices|SHARC]] ADSP-21065L von [[Analog Devices]] erlaubt etwa folgenden einzyklischen [[Assemblersprache]]n-Befehl:
=== Kommunikation ===
* mehrere serielle bzw. parallele I/O-[[Interface]]s
* [[Interrupt]]ausführung mit geringem Overhead oder DMA ([[Direct Memory Access]])
* [[A/D-Wandler]] und [[D/A-Wandler]]


F0=F3*F7, F1=F11+F15, F2=F11–F15, DM(I0,M1)=F2, F3=PM(I8,M9);

in dem quasi-gleichzeitig eine [[Gleitkommazahl|Gleitkomma]]-Multiplikation, eine Gleitkomma-Addition, eine Gleitkomma-Subtraktion, ein Schreibzugriff auf den Speicher mit [[modulo]]-zyklischem Postincrement/-decrement sowie ein Lesezugriff auf den Speicher mit modulo-zyklischem Postinkrement/-dekrement stattfindet.

== Kommunikation ==
* Mehrere serielle bzw. parallele I/O-[[Schnittstelle]]n;
* [[Interrupt]]ausführung mit geringem Overhead oder DMA ([[Direct Memory Access]]);
* [[A/D-Wandler]] und [[D/A-Wandler]].


== Geschichte ==
== Geschichte ==
In den frühen 1970er-Jahren entstand im [[Lincoln Laboratory]] der Lincoln FDP (''Fast Digital Processor'') mit Von-Neumann-Struktur als der erste dedizierte digitale Signalprozessor. Anschließend wurde mit der besser geeigneten Harvard-Architektur der LSP/2 gefertigt. Allerdings bestand dieser Rechner noch aus mehreren 1000 diskreten ICs.
Der ADSP-21065L von [[Analog Devices]] erlaubt etwa folgenden einzyklischen [[Assemblersprache]]n-Befehl:


Die ersten Einzelchip-DSPs kamen in den frühen 1980ern auf den Markt. Typische Vertreter waren der Intel 2920, TMS32010 von Texas Instruments oder der NEC µPD7720.
F0=F3*F7, F1=F11+F15, F2=F11–F15, DM(I0,M1)=F2, F3=PM(I8,M9);


== Gegenwart ==
in welchem quasi-gleichzeitig eine [[Gleitkommazahl|Gleitpunkt]]multiplikation, eine Gleitpunktaddition, eine Gleitpunktsubtraktion, ein Schreibzugriff auf den Speicher mit [[modulo]]-zyklischem Postincrement/-decrement sowie ein Lesezugriff auf den Speicher mit modulo-zyklischem Postincrement/-decrement stattfindet.
Elemente von DSPs finden sich auch zunehmend in Desktop-CPUs wieder, wie zum Beispiel in den [[AltiVec]]-Erweiterungen des [[PowerPC]] oder (abgeschwächt) in den [[SIMD]]-Erweiterungen von [[Intel]] und [[AMD]]. Dies liegt an der zunehmenden Verbreitung von [[Multimedia]]-Inhalten; Datenformate wie das [[JPEG File Interchange Format|JPEG-Format]], [[MP3]] oder [[Moving Picture Experts Group|MPEG2]] erfordern eine [[Diskrete Kosinustransformation|DCT]]-Kodierung beziehungsweise -Dekodierung, deren Berechnung eigentlich eine klassische DSP-Aufgabe ist. Auch die Berechnung der immer weiter verbreiteten Verschlüsselung profitiert von diesen Befehlssatz-Erweiterungen. Auch im Bereich der Embedded Systeme werden die Microcontroller durch DSP-Funktionalitäten ergänzt, wodurch die Rechenleistung gesteigert und der Stromverbrauch gesenkt werden kann. Typische Beispiele sind der [[Arm Cortex-M4]], die Erweiterung NEON bei den großen Arm Cortex-Cores, der dsPIC von Microchip sowie die XS1-Serie von [[XMOS]].


== Zukunft ==
Jedoch finden sich auch zunehmend in Desktop-CPUs Elemente von DSPs wieder, wie zum Beispiel in den [[AltiVec]]-Erweiterungen des [[PowerPC]] oder (abgeschwächt) in den [[SIMD]]-Erweiterungen von [[Intel]] und [[Advanced Micro Devices|AMD]]. Dies liegt an der zunehmenden Verbreitung von Datenformaten wie [[JPEG]], [[MP3]] oder [[Moving Picture Experts Group|MPEG2]], deren [[Diskrete Kosinustransformation|DCT]]-Kodierung beziehungsweise -Dekodierung eigentlich eine klassische DSP-Aufgabe ist.
Der generische DSP bekommt zusehends Konkurrenz durch RISC/CISC-CPUs, die mit speziellen Erweiterungen komplexe Rechenaufgaben wie RSA/AES/3DES hoch optimiert abarbeiten können. Darüber hinaus werden Aufgaben zur schnellen Signalverarbeitung vermehrt in flexible parallele digitale Strukturen verlagert, wie sie z.&nbsp;B. in immer leistungsfähigeren Field Programmable Gate Arrays ([[FPGA]]s) zunehmend und kostengünstig zur Verfügung stehen.

== Anwendungsgebiete ==
Digitale Signalprozessoren finden heute unter anderem in den folgenden Bereichen bzw. Geräten Anwendung:
* [[Mischpulte]] zur Klangbeeinflussung ([[Frequenzspektrum]], [[Tonhöhe]]nanpassung, Hall etc.)
* digitale [[Equalizer]]
* [[FM-Soundprocessing]]
* [[MP3-Player]]
* [[Modem]]s<ref>{{Internetquelle|hrsg=AlgoTron|url=http://www.algotron.com/modems/modems_sum.htm|sprache=englisch|titel=Modem Data Pump DSP Software|zugriff=2013-05-08}}</ref>
* [[Amateurfunkstelle|Amateurfunkgeräte]]
* [[Software Defined Radio|Hochfrequenz Sender und Empfänger, die über Software konfiguriert werden können]]
* Moderne Empfangsgeräte des [[Kurzwellenrundfunk]]s
* Erzeugung und Demodulation von [[Einseitenbandmodulation]]
* [[Spektrumanalysator]]en
* [[Audiobeschleuniger]] und [[Soundkarte]]n in Personalcomputern
* Bordelektronik in Kraftfahrzeugen (speziell [[Motorsteuerung]])
* [[Festplatten]]
* [[Frequenzweiche (Lautsprecher)|Frequenzweiche]] für [[Lautsprecher]]
* [[Radar]]
* [[Leistungselektronik]] (z.&nbsp;B. Erzeugung spezieller Signalformen zur Ansteuerung von Elektromotoren)
* elektronische Klangerzeuger (z.&nbsp;B. virtuell Analoge [[Synthesizer]])


== Literatur ==
== Literatur ==
* Texas Instruments: ''[http://focus.ti.com/lit/ds/sprs064d/sprs064d.pdf TMS320F243, TMS320F241 DSP Controllers (Rev. D).] (PDF; 1,5&nbsp;MB)''
* [http://ieeexplore.ieee.org/iel5/8985/28526/01277572.pdf] - Yang Yu; Mao Zhigang; Lai Fengchang; Zhao Bin; Xia Yifei,Design and implementation of a reconfigurable architecture for DSP, ASIC, 2003.
* {{Literatur |Autor=Helmut Bähring |Titel=Beispiele für Digitale Signalprozessoren |Hrsg=Helmut Bähring |Sammelwerk=Anwendungsorientierte Mikroprozessoren |Verlag=Springer |Ort=Berlin/Heidelberg |Datum=2010 |Sprache=de |ISBN=978-3-642-12291-0 |DOI=10.1007/978-3-642-12292-7_10}}
* [http://ieeexplore.ieee.org/iel5/5814/15501/00715815.pdf] - Owen, R.E.; Martin, D., A uniform analysis method for DSP architectures and instructionsets with a comprehensive example, Signal Processing Systems
* [http://ieeexplore.ieee.org/iel5/6/20014/00925269.pdf] - Eyre, J., The digital signal processor Derby
* [http://ieeexplore.ieee.org/iel4/6110/16342/00758306.pdf] - OWeiss, M.H.; Engel, F.; Fettweis, G.P, A new scalable DSP architecture for system on chip (SoC) domains, Acoustics, Speech, and Signal Processing, 1999.
* [http://focus.ti.com/lit/ds/sprs064d/sprs064d.pdf-1.52Mb] - Texas Instruments, TMS320F243, TMS320F241 DSP Controllers (Rev. D)


== Weblinks ==
== Weblinks ==
* {{DNB-Portal|4054943-4|TYP=Literatur zum Thema}}
* [http://www.e-dsp<!-- -->.com/ E-DSP] – Grundkenntnisse für DSP, DSP auf dem MCU und Bücher
* ''[http://www.computerhistory.org/semiconductor/timeline/1979-DSP.html Computer History Museum timeline/1979-DSP].'' In: ''computerhistory.org.''
* [http://wwwex.physik.uni-ulm.de/lehre/physikalischeelektronik/phys_elektr/phys_elektrse9.html Erläuterungen zu DSPs Uni Ulm]
* [https://www.ibr.cs.tu-bs.de/courses/ws9798/seminar/haverkamp/seminar.html Schrifttum Technisches Seminar zu DSPs]


== Einzelnachweise ==
<references />


{{Normdaten|TYP=s|GND=4054943-4|LCCN=|NDL=|VIAF=}}
[[Kategorie:Digitaltechnik]]


[[Kategorie:Digitaltechnik]]
[[ca:Processador Digital del Senyal]]
[[Kategorie:Prozessorarchitektur nach Verwendung]]
[[cs:Digitální signální procesor]]
[[en:Digital signal processor]]
[[es:Procesador digital de señal]]
[[fi:Digitaalinen signaaliprosessori]]
[[fr:Digital signal processor]]
[[it:Digital Signal Processor]]
[[ja:デジタルシグナルプロセッサ]]
[[nds:Digital Signalperzesser]]
[[nl:Digitale signaal processor]]
[[pl:Procesor sygnałowy]]
[[pt:DSP]]
[[ro:DSP]]
[[ru:Цифровой сигнальный процессор]]
[[sk:Digitálny signálny procesor]]
[[zh:数字信号处理器]]

Aktuelle Version vom 4. März 2023, 12:49 Uhr

Der Motorola XSP56001 ist ein DSP aus der 56K-Familie.
Der NeXTcube-Computer von 1990 mit Motorola 68040 (25 MHz) wies auch einen digitalen Signalprozessor Motorola 56001 mit 25 MHz auf (mittig, goldfarbenes IC), der über eine Schnittstelle von außen zugänglich war.

Ein digitaler Signalprozessor (englisch digital signal processor, DSP) ist ein elektronischer Baustein und dient der kontinuierlichen Bearbeitung digitaler Signale, z. B. Audiosignale oder Videosignale. Zur Verarbeitung analoger Signale wird der DSP in Verbindung mit Analog-Digital-Umsetzern und Digital-Analog-Umsetzern eingesetzt. Einige DSP-Chips enthalten diese Umsetzer bereits. Der Begriff DSP wird darüber hinaus auch nur für die rechnende Komponente innerhalb einer Software und Elektronik verwendet.

Digitale Signalprozessoren dienen nicht nur als Ersatz für aufwendige analoge Filtertechnik, sondern können darüber hinaus Aufgaben ausführen, die analog nur schwer oder überhaupt nicht lösbar wären:

In Anwendungen eingebettete digitale Signalprozessoren werden häufig in Mobiltelefonen, Festplattenlaufwerken, Fernsehern, Digitalkameras, Radios, Druckern, Medizingeräten, MP3-Playern und anderen elektronischen Geräten verwendet. Diese Prozessoren werden in vielen Anwendungsbereichen eingesetzt und sind sehr kostengünstig. Die Softwareentwicklung für digitale Signalprozessoren wurde durch speziell entwickelte Software erleichtert. DSPs können vor Ort neu programmiert werden, um das Produkt zu aktualisieren oder Softwarefehler zu beheben. Dazu gehören nützliche integrierte Tools für die Softwareentwicklung, z. B. eine integrierte Entwicklungsumgebung, ein Quelltext-Editor, ein Compiler, ein Debugger, ein Profiler und ein Echtzeit-Betriebssystem. Digitale Signalprozessoren bieten die Vorteile von Mikroprozessoren, sind einfach zu bedienen, flexibel und kostengünstiger.

Digitale Signalprozessoren sind spezialisierte Prozessoren, die zu einem festen Bestandteil moderner Signalverarbeitungssysteme geworden sind. DSPs ähneln größtenteils Universalprozessoren. Sie können mit einer Programmiersprache wie C oder C++ programmiert werden und ein Betriebssystem ausführen. Der Hauptunterschied zwischen DSPs und herkömmlichen Prozessoren liegt im Befehlssatz und in der Speicherverwaltung. Der Befehlssatz eines DSP ist an bestimmte Anwendungssoftware angepasst.[1]

Digitale Signalprozessoren sind spezialisierte Prozessoren, die für die Ausführung von DSP-Funktionen in Echtzeit optimiert sind, die auf sich wiederholenden Multiply-Accumulate (MAC) Operationen basieren, die häufig bei der digitalen Filterung, z. B. Filter mit endlicher Impulsantwort, und der schnellen Fourier-Transformation (FFT) verwendet werden. Die DSPs integrieren einen programmierbaren Mikroprozessor, der normalerweise in eine Harvard-Architektur integriert ist. Sie bieten eine schnelle Datenverarbeitung durch Implementierung von Einzelbefehlen, SIMD-Operationen (siehe Single Instruction, Multiple Data), speziellen Befehlen für Kerne mit superskalaren Architekturen, MAC-Berechnungen mit einem Zyklus oder Fused Multiply-Add, parallele Berechnung in mehreren MAC-Einheiten und schnelles Data Streaming mit Speicherdirektzugriff, digitale Ringspeicher, hardwaregesteuertem Loop ohne Overhead und schnellen und erweiterten Präzisionsberechnungen in Festkomma- oder Gleitkommaoperationen. Sie integrieren auch einige Peripheriegeräte und Datenspeicher auf dem Chip für einen eigenständigen Betrieb.

Es gibt viele DSPs auf dem aktuellen Markt, die aufgrund der Fortschritte und Verbesserungen der Halbleitertechnologie in den DSP-Architekturen eine hohe Leistung liefern. Preise und Leistung variieren stark zwischen den wichtigsten DSP-Herstellern und IP-Core-Anbietern.[2]

Echtzeitfähigkeit

[Bearbeiten | Quelltext bearbeiten]

Ein DSP muss eine bestimmte Datenmenge pro Zeitspanne sicher verarbeiten können. Dies ergibt sich aus der Forderung einer meist fixen und von außen vorgegebenen Datenrate, mit der die Eingangsdaten in den DSP gelangen bzw. die verarbeiteten Daten wieder ausgegeben werden müssen. Eine Art Handshake oder zeitliches Anhalten bei der Datenverarbeitung ist bei dieser echtzeitfähigen Verarbeitung meistens nicht möglich.

Folgende Maßnahmen dienen dem Erhöhen der Verarbeitungsgeschwindigkeit:

Unterteilt werden Signalprozessoren und deren Befehlssatz nach der Fähigkeit, Rechenoperationen

ausführen zu können.

Signalprozessoren mit Festkommaarithmetik sind im Aufbau meist einfacher und haben einen geringeren Stromverbrauch. Dafür ist das Implementieren bestimmter Algorithmen komplizierter, da bei jeder Berechnung vom Programmierer bedacht werden muss, ob es möglicherweise zu Überläufen in der Zahlendarstellung kommen kann und auf welcher Stelle sich das Binärkomma befindet. Ein typisches Anwendungsfeld von Festkomma-DSPs ist beispielsweise das Verarbeiten von Audiosignalen. Typische Vertreter von Signalprozessoren mit Festkommaarithmetik ist die DSP-Serie ADSP218x und Blackfin BF53x von Analog Devices sowie die TMS320VC5x von Texas Instruments.

Signalprozessoren mit Gleitkommaarithmetik sind komplexer im Aufbau, da ihre Rechenwerke die kompliziertere Darstellung der Gleitkommazahlen verarbeiten können. Damit ist bei gleicher Rechenleistung meist ein höherer Stromverbrauch verbunden. Der Vorteil liegt in der meist einfachen Implementierung komplizierter Algorithmen. Ein typisches Anwendungsfeld von Gleitkomma-DSPs ist beispielsweise das Verarbeiten von Videosignalen. Typische Vertreter von Signalprozessoren mit Gleitkommaarithmetik sind die als SHARC bezeichneten Bausteine von Analog Devices und die TMS320VC67x von Texas Instruments.

  • Es existieren mehrere Rechenwerke (ALUs), darunter ein Multiply-Accumulate-Rechenwerk (MAC). Dieses Rechenwerk ermöglicht die Operation A* = A + B · C in einem einzigen Prozessorzyklus und dient vornehmlich der Geschwindigkeitserhöhung der für spektrale Operationen – etwa der für die schnelle Fourier-Transformation oder der Faltung – erforderlichen Berechnungen.
  • Auf Boolesche Operationen beschränkte Rechenwerke werden in einigen DSPs (z. B. TI TMS320Cxx) zur unabhängigen Datenmanipulation eingesetzt (PLU = Parallel Logic Unit).
  • Es werden auch Address Generation Units (AGU) eingesetzt. Die AGU besteht aus programmierbaren Zählern (Counters), Shiftern und anderen logischen Elementen. Dadurch können die Adressberechnungen zum Beispiel für die Operanden parallel zu arithmetischen Operationen ausgeführt werden, um die Speichertransferrate nicht zu verkleinern. Einige AGU unterstützen die Register-indirekte Adressierung mit nachträglicher Inkrementierung. Anwendung finden sie bei Berechnungen, wo Daten wiederholt berechnet werden, die sequentiell im Speicher angeordnet sind. Für den Algorithmus zur schnellen Fourier-Transformation (FFT) wird auch eine Bitreversed-Adressierung eingesetzt.
  • Die Execution Unit (EXU) hat die Aufgabe der Datenmanipulation. Jeder Cluster darf die Register des Nachbarclusters auslesen. Beispiel: TI TMS320C6201
  • Verschachteltes No-overhead-Hardware-Looping mittels eines dedizierten Loop-Stacks.
  • Die heutigen DSP sind darüber hinaus oft massiv-parallel programmierbar, das heißt in einem einzigen Prozessorzyklus können mehrere Rechen- und/oder Speichertransferoperationen gleichzeitig durchgeführt werden.
  • Prefetch und Predecoding der Instruktionen (Pipelining) für eine sehr hohe Ausführungsgeschwindigkeit der Befehle.
  • Schleifenbefehle beschleunigen die Ausführung von Schleifen. Diese werden hardwarekontrolliert ausgeführt. Einige DSPs verwenden Pipelines (Pipelining) und Instruction Caches, um die Ausführung von Schleifen zu beschleunigen. Man unterscheidet zwei Arten von Schleifenbefehlen:
    • Single Instruction Hardware Loop – Wiederholung einer Operation
    • Multi Instruction Loop – Wiederholung eines ganzen Anweisungsblockes

Der SHARC ADSP-21065L von Analog Devices erlaubt etwa folgenden einzyklischen Assemblersprachen-Befehl:

F0=F3*F7, F1=F11+F15, F2=F11–F15, DM(I0,M1)=F2, F3=PM(I8,M9);

in dem quasi-gleichzeitig eine Gleitkomma-Multiplikation, eine Gleitkomma-Addition, eine Gleitkomma-Subtraktion, ein Schreibzugriff auf den Speicher mit modulo-zyklischem Postincrement/-decrement sowie ein Lesezugriff auf den Speicher mit modulo-zyklischem Postinkrement/-dekrement stattfindet.

In den frühen 1970er-Jahren entstand im Lincoln Laboratory der Lincoln FDP (Fast Digital Processor) mit Von-Neumann-Struktur als der erste dedizierte digitale Signalprozessor. Anschließend wurde mit der besser geeigneten Harvard-Architektur der LSP/2 gefertigt. Allerdings bestand dieser Rechner noch aus mehreren 1000 diskreten ICs.

Die ersten Einzelchip-DSPs kamen in den frühen 1980ern auf den Markt. Typische Vertreter waren der Intel 2920, TMS32010 von Texas Instruments oder der NEC µPD7720.

Elemente von DSPs finden sich auch zunehmend in Desktop-CPUs wieder, wie zum Beispiel in den AltiVec-Erweiterungen des PowerPC oder (abgeschwächt) in den SIMD-Erweiterungen von Intel und AMD. Dies liegt an der zunehmenden Verbreitung von Multimedia-Inhalten; Datenformate wie das JPEG-Format, MP3 oder MPEG2 erfordern eine DCT-Kodierung beziehungsweise -Dekodierung, deren Berechnung eigentlich eine klassische DSP-Aufgabe ist. Auch die Berechnung der immer weiter verbreiteten Verschlüsselung profitiert von diesen Befehlssatz-Erweiterungen. Auch im Bereich der Embedded Systeme werden die Microcontroller durch DSP-Funktionalitäten ergänzt, wodurch die Rechenleistung gesteigert und der Stromverbrauch gesenkt werden kann. Typische Beispiele sind der Arm Cortex-M4, die Erweiterung NEON bei den großen Arm Cortex-Cores, der dsPIC von Microchip sowie die XS1-Serie von XMOS.

Der generische DSP bekommt zusehends Konkurrenz durch RISC/CISC-CPUs, die mit speziellen Erweiterungen komplexe Rechenaufgaben wie RSA/AES/3DES hoch optimiert abarbeiten können. Darüber hinaus werden Aufgaben zur schnellen Signalverarbeitung vermehrt in flexible parallele digitale Strukturen verlagert, wie sie z. B. in immer leistungsfähigeren Field Programmable Gate Arrays (FPGAs) zunehmend und kostengünstig zur Verfügung stehen.

Anwendungsgebiete

[Bearbeiten | Quelltext bearbeiten]

Digitale Signalprozessoren finden heute unter anderem in den folgenden Bereichen bzw. Geräten Anwendung:

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. ScienceDirect: Digital Signal Processor
  2. Arnaldo Mendez, Mohamad Sawan, in Implantable Biomedical Microsystems, 2015, ScienceDirect: Signal processing hardware
  3. Modem Data Pump DSP Software. AlgoTron, abgerufen am 8. Mai 2013 (englisch).