www.mikrocontroller.net

Digitale Signalverarbeitung

Inhaltsverzeichnis

[bearbeiten] Anwendungsbeispiele

  • Modulation/Demodulation zur Datenübertragung (z.B. Telefonmodem, DSL, GSM) - "Software Defined Radio" (SDR)
  • Auswertung von Radarsignalen
  • Multimediacodierung (MP3, DivX, JPEG)
  • Unterdrückung von Hintergrundgeräuschen bei Freisprechanlagen
  • Bildverarbeitung (Kantenfilter, Mustererkennung)

[bearbeiten] Literatur

Bücher:

  • Oppenheim, Schaefer: "Discrete Time Signal Processing"
  • Proakis: "Digital Signal Processing"
  • Lyons: "Understanding Digital Signal Processing"
  • Smith: "The Scientist and Engineer's Guide to Digital Signal Processing" (unter http://dspguide.com/ als PDF verfügbar)

Foren:

Webseiten:

[bearbeiten] Verfahren

[bearbeiten] FIR- und IIR-Filter

Die häufigste Aufgabe in der DSV ist das Filtern, das heißt bestimmte Frequenzanteile zu unterdrücken, in der Phase zu verschieben oder zu verstärken. Man kann grundsätzlich zwischen zwei Filterarten unterscheiden:

Bei FIR-Filtern (Finite Impulse Response) wird jeder Ausgangswert aus unterschiedlich gewichteten und addierten früheren Eingangswerten zusammengesetzt. Dabei bezeichnet man die maximale Anzahl an vergangenen Werten die bei der Berechnung berücksichtigt werden als Ordnung. Je höher die Ordnung, desto besser die Eigenschaften des Filters (Ripple, Steilheit, Dämpfung), desto höher aber auch der Rechenaufwand.

Merkmale von FIR-Filtern:

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

Im Gegensatz zu FIR-Filtern werden bei IIR-Filtern (Infinite Impulse Response) auch frühere Ausgangswerte in die Berechnung des aktuellen Ausgangswertes mit einbezogen. Wie man sich leicht vorstellen kann, kann dadurch die Antwort auf einen Eingangsimpuls theoretisch unendlich lang werden, da jeder Ausgangswert auf den Eingang rückgekoppelt wird.

Merkmale von IIR-Filtern:

  • durch 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

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).

Berechnungssoftware:

[bearbeiten] FFT

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 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 FFT/DFT oft gleichwertig verwendet werden.

Die offensichtlichste Anwendung der FFT ist die Darstellung des Frequenzspektrums eines Signals. Aber das ist 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.

  • Diskussion: FFT auf dem AVR
  • Kiss FFT - einfache FFT-Bibliothek, in C, Floating- und Fixed Point, BSD-Lizenz, geeignet für Mikrocontroller
  • FFTW - die Floating Point FFT-Bibliothek für PCs, GPL-Lizenz

[bearbeiten] Signalerzeugung

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).

[bearbeiten] Software

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

[bearbeiten] Matlab

Matlab ist das Standardprogramm für numerische Mathematik. 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:

[bearbeiten] Octave

Das Open-Source-Programm Octave zeichnet sich durch einen hohen Grad an Matlab-Kompatibilität aus; das geht so weit, dass man problemlos die Matlab-Online-Hilfe und Matlab-Einführungen zum Lernen verwenden kann. In dem Zusatzpaket Octave-Forge sind auch viele Funktionen der Matlab-Toolboxes enthalten (z.B. Filterdesign, Signalverarbeitung). Octave ist ein reines Kommandozeilenprogramm, so dass man auf alle Annehmlichkeiten des Matlab-GUI verzichten muss. Zum Plotten wird gnuplot verwendet.

Octave lässt sich auf praktisch jedem Unix kompilieren. Für Windows gibt es ein fertig kompiliertes Paket.

Weblinks:

[bearbeiten] 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:

[bearbeiten] 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.

Der DSP unterscheidet sich von einem Mikrocontroller vor allem darin, dass er mit einem Befehl mehrere Instruktionen ausführen kann. Außerdem ist er auf MAC -Befehle (Multiply Accumulate, Multiplizieren und Addieren in einem Schritt) optimiert, da diese für die digitale Signalverarbeitung sehr wichtig sind. Dazu kommen häufig Unterstützung für Ringpuffer, Bit-Reverse-Adressierung (wichtig für FFT) und Arithmetik mit Sättigungs- statt Überlaufverhalten (wichtig für die Realisierung von IIR-Filtern).

Mit DSPs können leistungsfähige Regler, Filter, Modulatoren/Demodulatoren oder Verschlüsseler/Entschlüsseler gebaut werden. Neue DSPs besitzen zusätzlich zu diesen Spezialeigenschaften auch viele Eigenschaften eines normalen Mikrocontrollers (integrierter Speicher, IO-Funktionen).

Eine noch grössere DSP-Rechenleistung kann mit programmierbaren Logikbausteinen (FPGAs) erzielt werden. Diese können in einem einzigen Taktzyklus bis zu 96 32-Bit-MAC-Befehle ausführen.

Aktuelle PC-Prozessoren sind sehr gut für Floating-Point-Signalverarbeitung geeignet. 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.

[bearbeiten] Fest- oder Fließkomma?

Signalverarbeitung auf einem Fließkomma- (Floating-Point-) Rechner ist grundsätzlich einfacher als auf einem Festkomma- (Fixed-Point-) Rechner. Man kann das, was man berechnen will, i.d.R. 1:1 als Programmcode runterschreiben. Hat man nur Festkomma-Rechenoperationen zur Verfügung wird es etwas ungemütlich. Man muss sich Gedanken um die Skalierung von Filterkoeffizienten, die Reihenfolge von Rechenoperationen, Überläufe, Rundungsrauschen usw. machen. Da Fließkomma-DSPs sehr viel teurer sind und mehr Strom verbrauchen, werden im Consumer-Bereich fast ausschließlich Festkomma-DSPs bzw. ASICs mit Festkomma-Rechenwerken verwendet.

[bearbeiten] TI C6000

DSP-Familie vom Marktführer Texas Instruments, enthält sowohl Fest- als auch Fließkomma-DSPs.

[bearbeiten] SHARC/TigerSHARC

32 Bit Fließkomma-DSP von Analog Devices.

[bearbeiten] 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.

[bearbeiten] dsPIC

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

[bearbeiten] TriCore

Der TriCore von Infineon ist ein 32-Bit-Mikrocontroller mit DSP-Funktionen, mit derzeitigem Schwerpunkt im Bereich der Embedded Real-Time Systems und Automotive.

[bearbeiten] Bezugsquellen für Starterkits/Evalboards

[bearbeiten] Artikel aus der Kategorie DSP

Audio-DSP mit Spartan 3-FPGA • Blackfin • Digitale Signalverarbeitung • Digitaler Funktionsgenerator • DsPIC • EZ-Kit Lite • Gitarreneffekte mit dem EZ-Kit Lite


webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net