Digitale Signalverarbeitung

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Begriffsdefinition

Als 'Digitale Signalverarbeitung' bezeichnet man allgemein die Analyse und Verarbeitung von digitalisierten Analogwerten mittels digitaler Baugruppen. Dies umfasst nicht nur, wie in früheren Zeiten, das alleinige rechnen mit binären Signalen - sondern heute vor allem die Anwendung abstrakter mathematischer Methoden, wenngleich die Berechnung letztlich weiterhin im Binärsystem erfolgt.

Anwendungsgebiete

  • Extraktion von Daten aus verrauschten Signalen
  • Modulation und Demodulation von Signalen zur Datenübertragung (z. B. Telefonmodem, DSL, GSM)
  • Erzeugung von komplexen Daten mit "Beam Forming" und "Software Defined Radio" (SDR)
  • Multimedia-Daten-Codierung für Bilder und Audiosignale (MP3, H.264, JPEG, MPEG, ACC)
  • Bildverarbeitung (Bildverbesserung, Bildanalyse)
  • Mustererkennung, Objekterkennung, Objektverfolgung
  • Echo- und Störgeräuschunterdrückung bei Telefonen und Headsets sowie Hörgeräten

Algorithmen

Bei der Verarbeitung von technischen Signalen kommen bei vielen Anwendungen oft immer wieder dieselben Algorithmen und Methoden zum Einsatz, von denen die Wichtigsten im Folgenden vorgestellt werden:

FIR- und IIR-Filter

Die häufigste Aufgabe in der DSV ist das Filtern, das heißt, bestimmte Signal- oder Frequenzanteile zu unterdrücken, zu verstärken, zu extrahieren oder in der Phase zu verschieben, um ein Signal zu verändern oder eine neues zu gewinnen.

Man kann grundsätzlich zwischen zwei Filterarten unterscheiden:

Bei den sogenannten FIR-Filtern (Finite Impulse Response) wird jeder Ausgangswert aus der Summe einer begrenzten Anzahl unterschiedlich gewichteter Eingangswerte zusammengesetzt, die dazu in Schieberegistern vorgehalten werden. Dabei bezeichnet man die maximale Anzahl an Werten, die bei der Berechnung berücksichtigt werden, als Ordnung oder auch als Filtertiefe. Je höher diese Ordnungszahl, desto besser nähern sich die Eigenschaften des realen Filters bez. ripple, Steilheit und z.B. Dämpfung dem des theoretischen Ideals an, desto höher ist aber auch der Rechenaufwand.

Werden bei FIR-Filtern zur Bildung des Ausgangswertes zum Zielzeitpunkt nur zurückliegende Werte verwendet, so handelt es sich um ein "look back" - Filter. Dieses ist typisch für real time Anwendungen. Werden aber auch Werte verwendet, die nach dem eigentlichen Bezugzeitpunkt liegen, spricht man von einem look ahead-Filter. Dieses kann naturgemäß nicht in Echtzeit angewendet werden, bzw die Ausgabezeitpunkte müssen um mindestens um die halbe Filtertiefe verzögert werden, womit ein virtueller Bezugspunkt entsteht.

Bei den FIR-Filtern wird demnäch nur ein zeitlich begrenzter Bereich ausgewertet, wodurch das Resultat der Berechnung von Daten nach dem Betrachtungsbereich statisch und Null ist.

Merkmale von FIR-Filtern

  • immer stabil
  • linearer Phasengang -> keine Phasenverzerrungen
  • Ordnungen oft im zwei- bis dreistelligen Bereich

Beispiel

Seien D(0), D(1) ... D(t) die eingehenden Daten, so wäre Y(t) = 1/k * (D(t) + D(t-1) + D(t-2) + ... + D(t-k)) ein einfaches FIR-Filter der Ordnung "k", das als gleitender Mittelwert bezeichnet wird.

Im Gegensatz zu den FIR-Filtern werden bei den sogenannten IIR-Filtern (Infinite Impulse Response) formell alle früheren Eingangswerte in die Berechnung des aktuellen Ausgangswertes mit einbezogen. Dies wird dadurch bewerkstelligt, dass mindestens ein Informationspeicher (entspricht in der Physik einem Energiespeicher) existiert, der mit in die Rechnung einfließt. Im einfachsten Fall ist der Speicher der Ausgangswert selbst. Wie man sich leicht vorstellen kann, kann dadurch die Antwort auf einen Eingangsimpuls theoretisch unendlich lang werden, was die Einordnung dieser Filter in die Gruppe mit unendlicher Antwort erklärt.

Merkmale von IIR-Filtern

  • durch Totzeiten in der Berechnung wie auch durch größere Rundungsfehler kann das Filter instabil werden -> "Aufschaukeln" durch Rückkopplung -> schwierigere Realisierung
  • kein linearer Phasengang -> verschiedene Frequenzanteile werden durch den Filter unterschiedlich lange verzögert -> "Verzerrung"
  • einziger Vorteil gegenüber FIR: Um einen gewünschten Frequenzgang zu erzielen, ist eine sehr viel niedrigere Ordnung ausreichend -> weniger Rechenaufwand
  • Ordnung üblicherweise < 10

Beispiel

Seien D(0), D(1) ... D(t) wieder die eingehenden Daten, wie oben und Y(t-1) der um einen Berechnungsschritt zeitlich verzögerte Wert des Filterausgangswertes Y(t), dann wäre Y(t) = Y(t-1) * (1-k) + D(t) * k ein IIR-Filter erster Ordnung, wobei 1/k die Dämpfung und damit die Grenzfrequenz des Filters bestimmt. Das Verhalten dieses Filters entspricht dem einer Kondensatorladekurve.


Viele nützliche Informationen zur Realisierung gibt es im FIR- und IIR-FAQ auf dspguru.com (der dort erwähnte Sourcecode FirAlgs.c kann hier direkt heruntergeladen werden).

Siehe auch Digitale Filter

Berechnungssoftware:

DFT/FFT und andere Transformationen

Die FFT (Fast Fourier Transform) ist ein schneller Algorithmus zur Berechnung der DFT (Discrete Fourier Transform). Damit bezeichnet man die Transformation eines Zeitsignals (= eine Abfolge von Samples) in den Frequenzbereich (= Frequenzbestandteile des Signals). Die Transformation kann theoretisch auch ohne Verlust umgekehrt durchgeführt werden, also vom Frequenz- in den Zeitbereich (Inverse Discrete Fourier Transform, IDFT). Eine DFT wird praktisch immer mit dem FFT-Algorithmus realisiert, weshalb die Bezeichnungen oft FFT/DFT oft gleichwertig verwendet werden.

Die offensichtlichste Anwendung der FFT ist die Darstellung des Frequenzspektrums eines Signals. Beispiel:

Ein Audiosignal wird mit einer Frequenz von 44,1 kHz abgetastet und mit den erhaltenen Daten eine DFT mit 512 Punkten durchgeführt. Man erhält ein Amplitudenspektrum mit 512 Frequenzwerten von 0 bis 511, wobei die Werte 0 bis 255 zu denen der oberen Hälfte spiegelsymmetrisch sind. Bei der o.g. Abtastfrequenz ergibt sich nach Nyquist ein Frequenzbereich von 0 bis 22,05 kHz, mit einer Auflösung von 44100/512 = 86,13 Hz. Dabei repräsentiert die erste Frequenz 0, den Bereich von 0 Hz bis 86,13 Hz, u.s.w. - die letzte Frequenz 255 den Bereich von 21963,87 bis 22050 Hz.

Die Spektralanalyse ist jedoch nur ein kleiner Teil der Anwendungsmöglichkeiten. Viele Verarbeitungen lassen sich im Frequenzbereich einfacher durchführen als im Zeitbereich, z. B. Korrelationen oder sehr lange FIR-Filter. Das zu verarbeitende Signal wird dazu in den Frequenzbereich transformiert, dort manipuliert, und wieder in den Zeitbereich zurücktransformiert. Das klingt vielleicht umständlich, kann aber in der Praxis sehr viel schneller sein als eine Realisierung im Zeitbereich.

Weitere wichtige Transformationen sind z. B. die in der Bildcodierung (JPEG) verwendete DCT (Discrete Cosine Transform), und die WHT (Welsh-Hadamard-Transformation). Im Gegensatz zur DFT wird das Signal nicht mehr in den Frequenzbereich transformiert, sondern in einen nicht mehr ganz so anschaulichen Transformationsbereich. Der Sinn der Transformation ist z.B. bei der Bildkompression, dass die Signalinformation im Transformationsbereich in nur wenigen Koeffizienten konzentriert ist, und sich somit effizienter codieren lässt.

Goertzel-Algorithmus

Liegt das Interesse bei der Berechnung einer DFT / FFT nur bei wenigen bestimmten Frequenz-Linien, so gibt es eine weniger rechenaufwendige Alternative mit diesem Algorithmus. Die Grenze, ab der Goertzel-Algo nicht mehr effektiv genug ist, liegt grob bei etwa 15% der Spektralfrequenzen.

Das typische Anwendungsgebiet sind DTMF-Dekoder in Software. Hierfür sind sogar die üblichen 8-bit-AVR-Controller ausreichend schnell.

Allgemeine Signalerzeugung

Für die Korrelation von Eingangssignalen mit zuvor ausgesendeten oder bekannten Signalformen zwecks Mustererkennung müssen oftmals eigene Signale generiert werden.

Rechteck-, Sägezahn- und Dreieckssignale lassen sich mit einfachen Zählern realisieren.

Möchte man Sinus- oder beliebige andere Signalformen erzeugen, bietet es sich an, vorausberechnete Funktionswerte im Speicher abzulegen und der Reihe nach auszugeben. Eine variable Frequenzeinstellung kann man durch die Methode der Direkten Digitalen Synthese (DDS) realisieren.

Eine weitere Methode zur Realisierung von (mehr oder weniger beliebigen) Funktionen ist die Polynomapproximation. Dabei nähert man die zu erzeugende Funktion durch ein Polynom an und verwendet das Horner-Schema, um die einzelnen Funktionswerte zu berechnen. Für ein Polynom der Ordnung N benötigt man damit pro Wert N+1 Multiplikationen (N ist üblicherweise <= 10).^

Software Defined Radio

Als SDR bezeichnet man die Signalerzeugung für spezielle Funkanwendungen, bei denen bestimmte Signalformen benötigt werden, mit deren Hilfe z.B. Signalmarkierung und Signalrückgewinnung vereinfacht- oder überhaupt erst möglich werden. Hauptanwendungsfall sind die Objekterkennung mittels Radarsysteme sowie die Objektverfolgung, aber auch die verschlüsselte Kommunikation.

Software

Zur Entwicklung von Signalverarbeitungsverfahren gibt es eine ganze Reihe von Programmen. Neben kleinen Werkzeugen für den Filterentwurf und spezialisierten Bibliotheken zum Einbinden in eigene Programme existieren mehrere Mathematikprogramme, mit denen sich Signale verarbeiten und darstellen lassen. Die drei wichtigsten sind Matlab, Octave und Scilab.

MATLAB

MATLAB ist das Standardprogramm für numerische Mathematik. In der digitalen Signalverarbeitung wird es häufig verwendet, um einen Algorithmus vor der Umsetzung in C-Code oder auf einen DSP zu entwickeln und zu testen. Zum schon recht hohen Preis der Grundsoftware muss man noch einige hundert Euro für diverse Toolboxes einplanen (Signal Processing, Filter Design, Image Processing). Die Studentenversion kostet ca. 80 Euro (die Signal Processing Toolbox und ein paar andere sind bereits enthalten).

MATLAB ist für Windows, Linux, Mac OS X, Solaris und HP-UX erhältlich.

Weblinks:

GNU Octave

GNU Octave ist eine (zum größten Teil zu Matlab (R) kompatible) höhere Programmiersprache, die hauptsächlich für numerische Berechnungen gedacht ist. Sie stellt eine komfortable Kommandozeilenschnittstelle zur numerischen Lösung linearer und nichtlinearer Probleme bereit. Durch den hohen Grad an Matlab-Kompatibilität kann man problemlos die Matlab-Online-Hilfe und Matlab-Einführungen zum Lernen verwenden.

Grundsätzlich ist Octave ein reines Kommandozeilenprogramm es wird aber aktiv an einer GUI auf Basis von Qt entwickelt (siehe http://wiki.octave.org/FAQ#Is_there_a_GUI_for_Octave.3F).

Ideone.com bietet seit einiger Zeit einen online-Interpreter auch für Octave an. Hier kann man die Sprache ohne Installation kurz antesten: Sombrero und "Hallo Mikrocontroller Leser" Beispiel

Zum Plotten unter GNU/Linux kann wahlweise gnuplot oder das neue FLTK backend verwendet werden. Unter Windows stehen noch weitere backends wie wxWidgets zur Verfügung.

Octave-Forge beheimatet Pakete, die (noch) nicht in "octave core" aufgenommen wurden. Hier sind auch viele Funktionen der Matlab-Toolboxes enthalten (z.B. Filterdesign, Signalverarbeitung).

Octave kann unter GNU/Linux oder *BSD über den jeweiligen Paketmanager (wie z.B. apt-get, aptitude, synaptics in Ubuntu oder Debian) installiert werden. Für Windows stehen vorkompilierte Pakete mit MinGW, MSVC oder für cygwin zur Verfügung. Für MacOS gibt es Möglichkeiten mit Fink, MacPorts und Homebrew zu installieren. Octave Wiki Installationsanleitung Windows, MacOS X und GNU/Linux

Weblinks:

Scilab / Scicos

Auch das Open-Source-Programmpaket Scilab / Scicos, ähnlich leistungsfähig wie Matlab und seine Zusatzmodule, ist kostenlos und im Quelltext erhältlich. Während die Grundsyntax (Kontrollstrukturen, Ausdrücke) weitgehend Matlab-kompatibel ist, gibt es bei den Funktionen z.T. deutliche Abweichungen. Dafür bietet Scilab / Scicos verglichen mit Octave umfangreichere Möglichkeiten zur grafischen Darstellung, die über das 2D- und 3D-Plotten von Funktionen weit hinausgehen, z. B. lassen sich Linien, Kreise usw. zeichnen.

Scilab / Scicos läuft unter Windows, Linux/Unix und Mac OS X. Für die wichtigsten Linux-Distributionen sind fertige, komplette Binärpakete (RPM, ...) zur einfachen Installation frei verfügbar. Für Windows gibt es ebenfalls ein einfach zu installierendes Komplettpaket.

Weblinks:

Bücher:

Tutorials:

Hardware

Ein DSP (Digital Signal Processor) ist eine spezielle CPU mit einem auf die Verarbeitung von Signalen optimierten Kern und Befehlssatz. Unterschieden wird hauptsächlich zwischen Gleitkomma- und Festkomma-DSPs.

Charakteristisches Merkmal vieler DSPs ist eine VLIW-Architektur (Very Long Instruction Word). Dabei werden Anweisungen für mehrere parallele Ausführungseinheiten (Multiplizierer/Addierer/Akkumulatoren) und mehrere Lade-/Speicherbefehle in einem einzigen, langen Befehlswort kodiert, und in einem Takt ausgeführt. Dazu kommen häufig mehrere gleichzeitig adressierbare Speicherbänke, Unterstützung für Ringpuffer, Schleifen ohne Sprung-Overhead, Bit-Reverse-Adressierung (wichtig für FFT) und Arithmetik mit Sättigungs- statt Überlaufverhalten (wichtig für die Realisierung von IIR-Filtern).

Die Grenzen zwischen Mikrocontrollern und DSPs sind mittlerweile schon etwas verschwommen. Viele Mikrocontroller sind mit zusätzlichen DSP-Funktionen ausgestattet (PICCOLO, dsPIC, ARM Cortex M4), während DSPs zunehmend in Richtung der Aufgabenbereiche eines Mikrocontrollers oder Allround-Prozessors vordringen und immer öfter um Unterstützung für Betriebssysteme (MMU) oder I/O-Funktionen wie Ethernet oder USB erweitert werden (Blackfin).

Eine noch größere DSP-Rechenleistung kann mit programmierbaren Logikbausteinen (FPGAs) erzielt werden, da die Anzahl gleichzeitig ausführbarer Rechenoperationen nur durch die Größe des FPGAs begrenzt wird. Nachteilig sind die gegenüber DSPs um ein vielfaches höheren Kosten, höherer Stromverbrauch und höherer Entwicklungsaufwand, weshalb FPGAs für Signalverarbeitung nur in sehr speziellen Anwendungen verwendet werden.

Aktuelle PC-Prozessoren sind sehr gut für Gleitkomma-Signalverarbeitung geeignet. Für Aufgaben bei denen sehr viele Daten parallel verarbeitet werden können kann die Leistungsfähigkeit mit GPUs weiter gesteigert werden (CUDA, OpenCL). Wenn keine besonderen Anforderungen an Echtzeitfähigkeit, Strom- oder Platzbedarf gestellt werden, hat ein normaler PC mit Abstand das beste Preis/Leistungsverhältnis. Der erste Schritt bei einem DSP-Projekt sollte somit eine Implementierung auf dem PC sein. Es macht wenig Sinn, ein Eval-Board für einen Signalprozessor zu kaufen und einfach loszulegen.

Fest- oder Gleitkomma?

Signalverarbeitung auf einem Gleitkomma- (Floating-Point-) Rechner ist grundsätzlich einfacher als auf einem Festkomma- (Fixed-Point-) Rechner. Da die Ungenauigkeiten bei der Rechnung mit Floating-Point-Zahlen in vielen Fällen vernachlässigbar sind, kann man einen Algorithmus i.d.R. 1:1 in Programmcode umsetzen. Hat man nur Festkomma-Rechenoperationen zur Verfügung wird es etwas ungemütlich. Man muss sich Gedanken um die Skalierung der Daten, die Reihenfolge von Rechenoperationen, Überläufe, Rundungsrauschen usw. machen. Da Gleitkomma-DSPs allerdings teurer sind und mehr Strom verbrauchen, werden für Massenprodukte fast ausschließlich Festkomma-DSPs bzw. ASICs mit Festkomma-Rechenwerken verwendet.

TI C2000

Eine komplette 32-bit DSC Controller Familie vom low-cost (PICCOLO) bis high-end Controller mit FPU (TMS320F28335). Die Peripherie umfasst Mehrkanal A/D Wandler mit 12-bit Aufloesung und bis zu 4 Megasamples Abtastrate. Die PWMs haben einen hochauflösenden Modus, der bis zu 150ps auflösen kann. Als Interface stehen CAN, I2C, schnelle generelle serielle Ports und Quadratureingänge für Drehgeber zur Verfügung.

TI C5000

DSP für batteriebetriebene Anwendungen. Die gesamte Architektur wurde auf Stromverbrauch optimiert. Dazu werden spezielle Werkzeuge zur Verfügung gestellt, die zur Anwendung passende Optimierungslösungen generiert. TMS320VC5505 eZDSP USB Stick‎ mit IDE als preisgünstiges Entwicklungssystem ( < 50€)

TI C6000

DSP-Familie vom Marktführer Texas Instruments enthält sowohl Fest- als auch Gleitkomma-DSPs.

TI DM6400 (DaVinci)

DSP für Videoanwendungen. Einige Derivate enthalten auch einen ARM9 als Co-Prozessor. Diese Familie wird unter dem Namen DaVinci vermarktet.

TI OMAP

Prozessor für mobile Geräte, enthält einen ARM-Kern und einen C6000-DSP. Ein interessantes und mit $149 sehr preisgünstiges Evalboard ist das Beagle Board. Ein kostenloser Assembler für den DSP ist verfügbar.

SHARC/TigerSHARC

32-Bit-Gleitkomma-DSP von Analog Devices, seit etwa Ende der 80er Jahre verfügbar, heute in der 6. Generation erhältlich. Ursprünglich handelte es sich bei SHARC (Super Harvard ACHitecture) um reine CPUs. Die beiden Vertreter dieser ersten Generation waren der ADSP-21010 und der ADSP-21020. Über die Generationen blieb die Kernarchitektur des SHARC praktisch unverändert.

Die 2. Generation SHARC (ADSP-21060, ADSP-21061(L), ADSP-21062 und der low-cost ADSP-21065) wurden jeweils um internen dual-access Speicher und Schnittstellen (SPORT, LinkPort) erweitert. Mit Hilfe der bis zu sechs Linkports konnten zwei- und dreidimensionale Topologien (siehe Transputer!) realisiert werden. Die schnellsten Vertreter der zweiten Generation SHARC konnten mit 66 MHz getaktet werden und erzielten dabei dauerhaft bis zu 132 MFLOPs Rechenleistung.

SHARC-Prozessoren der 3. Generation (ADSP-21160, ADSP-21161) wurden durch ein SIMD-Rechenwerk (Single Instruction Multiple Data) erweitert und konnten besonders bei der Berechnung von FIR-Filtern und FFT bei gleichem Systemtakt erhebliche Geschwindigkeitsvorteile erzielen.

LinkPorts entfielen bei der 4. Generation SHARC (ADSP-2126x, ADSP-2136x) zugunsten eines flexibleren I/O-Konzepts, das die CPU dank zahlreicher DMA-Kanäle eheblich entlastet. Da sich SHARC-Prozessoren als ideal für Audio-Anwendungen erwiesen hatten, wurden u.a. S/PDIF-Schnittstellen und zahlreiche Audio-Algorithmen im ROM (z.B. AAC, Dolby Surround) angeboten. Taktraten bis zu 400MHz und bis zu 3 MBit on-chip RAM ermöglichen komplexe Algorithmen auch ohne externen Speicher.

SHARCs der 5. Generation (ADSP-214xx) enthalten bis zu 5 MBit on-chip RAM und können mit bis zu 450 MHz getaktet werden. Sie enthalten außerdem einen Koprozessor, der Filter (FIR oder IIR) oder FFTs unabhängig von der CPU berechnen können. Der Koprozessor wird zwar nur mit dem halben CPU-Takt betrieben, entlastet diese aber in bestimmten Anwendungen erheblich.

Die bisher letzte Generation von SHARC-Prozessoren wurde 2015 marktreif (ADSP-2158x, 500MHz max.). Erstmals werden dual-core SHARCs angeboten, die über jeweils bis zu 5MBit eigenes RAM verfügen und auf Peripherie und externen Speicher über einen sog. System Crossbar zugreifen können. Zudem werden auch SHARC-Prozessoren gemeinsam mit einem ARM Cortex-A5 auf einem Chip (ADSP-SC58x) angeboten. Der Cortex-A5 erweitert die Systemfähigkeiten durch PCIe, USB, CAN und andere industrielle Schnittstellen.

Alle SHARC-Prozessoren mit Ausnahme der ersten Generation sind bis heute praktisch uneingeschränkt verfügbar.

TigerSHARC-Prozessoren werden seit einigen Jahren nicht mehr weiterentwickelt. Im Jahr 2016 wurde die Produktion der ADSP-TS20x-Prozessoren (mit on-chip DRAM) nach Übernahme der IBM-Fab in Burlington, VT durch Global Foundries eingestellt. Einzig der ADSP-TS101 wird weiter angeboten.

Link zum Hersteller: http://www.analog.com/en/products/processors-dsp/sharc.html

Blackfin

Der Blackfin ist ein 16/32-Bit-Festkomma-DSP von Analog Devices. Im Gegensatz zu den 16-bittigen Vorgängern ADSP-21xx, die häufig als Co-Prozessoren zur Signalverarbeitung zusammen mit einem Mikrocontroller verwendet werden, geht der Blackfin schon weit in den Einsatzbereich eines Allround-Prozessors hinein. So gibt es z. B. einen Linux-Port für Blackfin, Eval-Boards mit Ethernet, CAN, USB und vielen MB SDRAM. Dank der verbesserten Stromsparfunktionen der BF52x-Reihe ist diese eher neue Architektur vermehrt in mobilen Geräten (Kameras, Mediaplayer, etc.) anzutreffen.

Wichtig für die Entwicklung ist zu wissen:

  • Keine Fließkomma-Unterstützung in Hardware
  • Keine MMU, keine Unterstützung für virtuellen Speicher (kein Unix fork(), etc.)

Unterstützte Entwicklungswerkzeuge:

  • Visual DSP++: Hauseigenes Entwicklungswerkzeug von Analog Devices, kommerziell
  • GCC: Freie GNU-Umgebung mit Assembler, Compiler, Linker, Debugger
  • Eclipse für uClinux-Entwicklung wie auch 'nackt' ohne OS

Aufgrund der ausgereiften GNU-Toolchain ist der Blackfin eine der kostengünstigsten Plattformen für die Entwicklung. Die Werkzeuge laufen sowohl unter Windows32 als auch Linux, bevorzugt wird jedoch Linux eingesetzt. Für die Kernel-Entwicklung ist Linux unabdingbar. Dank offener JTAG-Spezifikation existieren einige Werkzeuge von Drittherstellern zum Hardware-Debugging (In-Circuit Emulation) und zur Programmierung:

Beide Werkzeuge arbeiten auch mit ARM-Prozessoren.

Weitere Links:

dsPIC

Der dsPIC ist ein kleiner 16-Bit-Mikrocontroller mit DSP-Funktionen. Mit dem klassischen 8-Bit-PIC hat er außer dem Namen nichts gemeinsam.

Er basiert auf der modernen RISC-Architektur des PIC24 und bietet zusätzlich 40-Bit-Register und spezielle Befehle für DSP-Anwendungen. Der derzeit schnellste dsPIC33E arbeitet mit bis zu 70MIPS. dsPIC33 gibt es auch im DIL28-Gehäuse.

Ein kostenloser C-Compiler (C30) und eine DSP-Bibliothek werden von Microchip angeboten. Dabei handelt es sich um eine "Light"-Version des kommerziellen C30, bei dem nur eine Optimierungsstufe freigeschaltet ist, aber ansonsten keine Einschränkungen (Codegröße o.ä.) bestehen.

Cortex M4

Von mehreren Herstellern gibt es Mikrocontroller mit ARM Cortex M4-Kern, welcher DSP-Funktionen wie single-cycle 32 Bit MAC (Multiply-ACcumulate), Addition mit Sättigungsverhalten [1], SIMD-Befehle, und bei manchen Exemplaren eine FPU [2] beinhaltet. Der große Vorteil gegenüber "echten" DSPs ist, dass für ARM zahlreiche Entwicklungsumgebungen frei verfügbar sind, und man sich nicht an einen bestimmten Hersteller und seine Entwicklungstools bindet. Mit CMSIS-DSP stellt ARM eine Bibliothek mit DSP-Funktionen (Vektoroperationen, FFT, etc.) zur Verfügung [3].

TriCore

Der TriCore von Infineon ist ein 32-Bit-Mikrocontroller mit DSP-Funktionen, mit derzeitigem Schwerpunkt im Bereich der High Performance Embedded Real-Time Systems für Industrie- und Automobilanwendungen (Beispiele: Motorsteuerungen, Servomotoren, Solarinverter, Multi-Axis-Conrol)

Bezugsquellen für Starterkits/Evalboards

Weitere Infos

Literatur

  • Oppenheim, Schaefer: "Discrete Time Signal Processing", ISBN 0131988425
  • Proakis: "Digital Signal Processing", ISBN 0131873741
  • Lyons: "Understanding Digital Signal Processing", ISBN 0131089897
  • Smith: "The Scientist and Engineer's Guide to Digital Signal Processing", ISBN 075067444X (unter http://dspguide.com/ als PDF verfügbar)
  • Sanjit K. Mitra: "Handbook for Digital Signal Processing" (1993,1312 Seiten), ISBN 0471619957

Foren

Webseiten

Artikel aus der Kategorie DSP

<ncl style=compact maxdepth=2 headings=bullet headstart=2

     showcats=1 showarts=1>DSP</ncl>