Digitaler Signalprozessor

Ein Digitaler Signalprozessor (engl. digital signal processor, DSP) dient der kontinuierlichen Bearbeitung von digitalen Signalen (z. B. Audio- oder Videosignale) durch die Digitale Signalverarbeitung. Zur Verarbeitung von analogen Signalen wird der DSP in Verbindung mit Analog-Digital-Umsetzern und Digital-Analog-Umsetzern eingesetzt.
Funktion
DSPs dienen nicht nur als Ersatz für aufwändige analoge 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 Mischpulten)
- 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 von Stimmen
- Echounterdrückung
- Datenkomprimierung zur digitalen Weiterverarbeitung
- Spracherkennung und Sprachsynthese
- Messungen in Oszilloskopen
DSPs enthalten im Vergleich zu Standard-CPUs einen auf häufig benötigte mathematische Operationen hin geschwindigkeitsoptimierten Prozessor. Einige DSPs enthalten darüber hinaus am Ein- und Ausgang bereits die erforderlichen A/D- und D/A-Wandler.
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 außen vorgegebenen Datenrate, mit der die Eingangsdaten in den DSP gelangen bzw. die verarbeiteten Daten wieder geschrieben 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 der Erhöhung der Verarbeitungsgeschwindigkeit:
- Spezielle synchrone, serielle Schnittstellen für die Ein- und Ausgabe der digitalen Signale.
- Sogenannte MAC-Befehle für die gleichzeitige Multiplikation und Addition in einem Maschinenzyklus.
- Adressgeneratoren für die Implementierung von Schleifen und Ringpufferstrukturen ohne softwareseitigen Overhead.
- Implementierung des Prozessors in Harvard-Architektur.
- Existenz eines dedizierten Hardware-Stacks.
- Mehrmaliger Zugriff auf den Speicher in einem Zyklus.
- Very-Long-Instruction-Word-Anweisungen.
Befehlssatz
Zahlenformate
Unterteilt werden Signalprozessoren und deren Befehlssatz nach der Fähigkeit, Rechenoperationen entweder mittels
- Festkommaarithmetik (engl. fixed point)
oder mittels
- Gleitkommaarithmetik (engl. floating point)
ausführen zu können.
Signalprozessoren mit Festkommaarithmetik sind im Aufbau meist einfacher und haben einen geringeren Stromverbrauch. Dafür ist die Implementierung von bestimmten 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 die Verarbeitung 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 von komplizierten Algorithmen. Ein typisches Anwendungsfeld von Gleitkomma-DSPs ist beispielsweise die Verarbeitung von Videosignalen. Typische Vertreter von Signalprozessoren mit Gleitkommaarithmetik sind die als SHARC bezeichneten Bausteine von Analog Devices und die TMS320VC67x von Texas Instruments.
Operationen
- 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
Programmablauf
- 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
Beispiel
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 Gleitpunktmultiplikation, 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.
Kommunikation
- Mehrere serielle bzw. parallele I/O-Schnittstellen;
- Interruptausführung mit geringem Overhead oder DMA (Direct Memory Access);
- A/D-Wandler und D/A-Wandler.
Geschichte
Der Durchbruch der DSPs erfolgte erst mit der Einführung der MOS-Technik in den 80er Jahren. Die Veteranen waren dabei der S2811 von American Microsystems Inc., der Intel 2900 sowie der μPD7720 von NEC. Dieses waren einfache 8 Bit-Prozessoren mit zusätzlichem Hardwaremultiplizierer. Im Jahre 1982 folgte Texas Instruments mit dem TMS320C10 (16 Bit), der bereits einen internen Speichercontroller beinhaltete. Dieser DSP legte den Grundstein für zahlreiche Varianten und Familien, die heute noch gefertigt werden. Aufgrund der geringen Wortbreiten von 8 bzw. 16 Bit traten bei Berechnungen mit sehr kleinen Koeffizienten (z. B. FIR-Filterkoeffizienten) Rundungsfehler auf, die das Ergebnis verfälschten. Dieses Phänomen wurde als Wortlängeneffekt bekannt und daraufhin zum einen robustere Algorithmen (rauscharme Filter) sowie DSPs mit höherer Wortbreite entwickelt. Einer davon war der DSP56000 von Motorola, welcher 1984 auf den Markt kam. Er konnte bereits 24 Bit Datenwörter nativ verarbeiten und war daher besonders im Pro-Audio-Bereich sehr beliebt.
Ebenso wie Universalprozessoren wurden zu der Zeit auch die DSPs mit maschinennahem Assembler programmiert, um eine bestmögliche Ausnutzung der teilweise schon parallelen Hardware zu erreichen. Dies ist jedoch bis heute sehr zeitaufwändig und fehleranfällig, daher wurde Mitte der 80er Jahre versucht, auch mit Hochsprachen geeignete Programme zu erstellen. Da die Programmiersprache C bereits 1972 von der Firma AT&T entwickelt wurde, waren deren Prozessoren DSP16 und DSP32 auch die ersten, die mit C programmiert werden konnten. Ebenso brachte in den späten 80ern die Firma Analog Devices ihren ersten DSP ADSP2100 auf den Markt, der bereits mit drei getrennten Speichern zum simultanen Auslesen der Operanden sowie separaten Adressgeneratoren ausgestattet war. Weitere Firmen wie NTT, National, OKI oder Thomson entwickelten ihrerseits Chips, die sich jedoch nicht durchsetzen konnten, sodass viele Anbieter bis in die 90er Jahre wieder verschwanden.
Bis dahin waren alle Designs als Festkomma-CPUs ausgelegt, da nur diese aufgrund des einfacheren Aufbaus die hohen Rechengeschwindigkeiten erreichen konnten. Weitere Entwicklungen widmeten sich entsprechend den Gleitkomma-Rechenwerken sowie zusätzlichen Hardware-Erweiterungen wie DMA-Controller (gleichzeitiger Speicherzugriff auf verschiedene Peripherie) und vergrößerten internen Speichern. Beispiele dafür sind der damals sehr populäre TMS320C30 (Gleitkomma) oder die Begründer der Familien TMS320C54xx (Festkomma) und TMS320C6xxx (Gleitkomma) von Texas Instruments.
Aufgrund der oben erwähnten eingeschränkteren Universaleinsetzbarkeit benötigen DSPs in einer komplexen Signalverarbeitungsumgebung meist einen zusätzlichen Chip zur Ansteuerung. Diese Tatsache führte neben den Einzelchip-DSPs zu verschiedenen Symbioseentwicklungen. Zum Beispiel wurden in Mikrocontroller DSP-Kerne integriert und es entstanden die sogenannten Digital Signal Controller (DSC). Zu nennen wären hier die Blackfin-Familie von Analog Devices sowie von Texas Instruments die C2000-Serie und die OMAP-Prozessoren, welche aus einem ARM-Core mit C55xx-DSP als Coprozessor bestehen. Der weitverbreitete Einsatz von Signalverarbeitungsalgorithmen hat jedoch auch vor Universalprozessoren nicht halt gemacht, sodass sich heutzutage in allen aktuellen Modellen Erweiterungen wie MMX, SSE oder AltiVec finden, die speziell für den Multimediabereich Hardwarebeschleunigung bieten. Auch auf ASIC-Seite sind ähnliche Entwicklungen zu finden. So gibt es mehrere Hersteller, die einen individuell konfigurierbaren DSP-Kern als Produktionsmaske anbieten, der dann in ein bestehendes kundenspezifisches Design eingefügt werden kann.
Aktuelle Entwicklungen gehen ebenso wie bei Universalprozessoren in die Richtung mehrere DSPKerne auf einem Chip unterzubringen, wie beispielsweise bei der Starcore-Familie von Freescale oder dem Texas Instruments TMS320VC5421. Analog Devices bietet dagegen mit ihrer TigerSHARCFamilie DSPs an, die speziell für den parallelen Einsatz in Multiprozessorsystemen gedacht sind.[1] 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.
Anwendungsgebiete
Digitale Signalprozessoren finden heute unter anderem in den folgenden Bereichen bzw. Geräten Anwendung:
- Mischpulte zur Klangbeeinflussung (Frequenzspektrum, Tonhöhenanpassung, Hall, etc.)
- digitale Equalizer
- Soundprocessing
- MP3-Player
- Modems[2]
- Amateurfunkgeräte
- Erzeugung und Demodulation von Einseitenbandmodulation
- Spektrumanalysatoren
- Audiobeschleuniger und Soundkarten in Personalcomputern
- Bordelektronik in Kraftfahrzeugen (speziell Motorsteuerung)
- Festplatten
- Frequenzweiche für Lautsprecher
- Radar
- Leistungselektronik (z.B. Erzeugung spezieller Signalformen zur Ansteuerung von Elektromotoren)
Einzelnachweise
- ↑ www.iesk.ovgu.de, Studienarbeit, Entwicklungsgeschichte bei DSP
- ↑ Modem Data Pumps. Algotron, abgerufen am 22. Februar 2011 (englisch).
Literatur
- Texas Instruments: TMS320F243, TMS320F241 DSP Controllers (Rev. D).
Weblinks
- Mixed Signal and DSP Design Techniques (engl.)
- The Scientist & Engineer's Guide to Digital Signal Processing (engl.)
- Computer History Museum timeline/1979-DSP. In: computerhistory.org.