|
|
Digitale Signalverarbeitung
[Bearbeiten] Anwendungsgebiete
[Bearbeiten] Verfahren[Bearbeiten] FIR- und IIR-FilterDie häufigste Aufgabe in der DSV ist das Filtern, das heißt, bestimmte Frequenzanteile zu unterdrücken, zu verstärken oder in der Phase zu verschieben. Man kann grundsätzlich zwischen zwei Filterarten unterscheiden: Bei FIR-Filtern (Finite Impulse Response) wird jeder Ausgangswert aus der Summe 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 Filtertiefe. Je höher die Ordnungszahl, desto besser nähern sich die die Eigenschaften des realen Filters bez. ripple, Steilheit und z.B. Dämpfung an das theoretische Ideal an, desto höher ist aber auch der Rechenaufwand. Werden bei FIR-Filtern nur zurückliegende Werte verwendet, so handelt es sich um ein "look back" - Filter. Dieses ist typisch für real time Anwendungen. Werden 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 die halbe Filtertiefe verzögert werden. [Bearbeiten] Merkmale von FIR-Filtern
[Bearbeiten] BeispielSeien D(0), D(1) ... D(t) die eingehenden Daten, so wäre Y(t) = 1/k * (D(t) + D(t-1) + D(t-2) + ... + (t-k)) ein einfaches FIR-Filter der Ordnung "k", das als gleitender Mittelwert bezeichnet wird.
[Bearbeiten] Merkmale von IIR-Filtern
[Bearbeiten] BeispielSeien D(0), D(1) ... D(t) wieder die eingehenden Daten, wie oben, und Y(t-1) der um einen Berechungsschritt zeitlich verzögerte Wert des Filterwertes 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.
Berechnungssoftware: [Bearbeiten] DFT und FFTDie 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.
[Bearbeiten] Goertzel-AlgorithmusLiegt 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. [Bearbeiten] SignalerzeugungFür die Korrelation von Eingangssignalen mit zuvor ausgesendeten oder bekannten Signalformen zwecks Musstererkennung, müssen oftmals eigenen 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). [Bearbeiten] SoftwareZur 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] MATLABMATLAB 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:
[Bearbeiten] OctaveDas 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 / ScicosAuch 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] HardwareEin 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). Seit ein paar Jahren beginnen die Grenzen zwischen Mikrocontrollern und DSPs etwas zu verschwimmen. Viele Mikrocontroller werden mit zusätzlichen DSP-Funktionen ausgestattet (PICCOLO, dsPIC, ARM), 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. 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 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. [Bearbeiten] TI C2000Eine 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. [Bearbeiten] TI C5000DSP für Batterieapplikationen. Die gesamte Architektur wurde auf Stromverbrauch optimiert. Dazu werden spezielle Tools zur Verfügung gestellt, die zur Anwendung passende Optimierungslösungen generiert. TMS320VC5505 eZDSP USB Stick mit IDE als preisgünstiges Entwicklungssystem ( < 50€) [Bearbeiten] TI C6000DSP-Familie vom Marktführer Texas Instruments, enthält sowohl Fest- als auch Gleitkomma-DSPs. [Bearbeiten] TI DM6400 (DaVinci)DSP für Videoanwendungen. Einige Derivate enthalten auch einen ARM9 als Co-Prozessor. Diese Familie wird unter dem Namen DaVinci vermarktet. [Bearbeiten] TI OMAPProzessor 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. [Bearbeiten] SHARC/TigerSHARC32 Bit Gleitkomma-DSP von Analog Devices. [Bearbeiten] BlackfinDer 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:
Unterstützte Entwicklungswerkzeuge:
Aufgrund der ausgereiften GNU-Toolchain ist der Blackfin eine der kostengünstigsten Plattformen für die Entwicklung. Die Tools 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 Tools von Drittherstellern zum Hardware-Debugging (In Circuit Emulation) und zur Programmierung:
Beide Tools arbeiten auch mit ARM-Prozessoren. Weitere Links: [Bearbeiten] dsPICDer dsPIC ist ein kleiner 16 Bit-Mikrocontroller mit DSP-Funktionen. Mit dem klassischen 8Bit-PIC hat er außer dem Namen nichts gemeinsam. Er basiert auf der modernen RISC-Architektur des PIC24 und bietet zusätzlich 40Bit Register und spezielle Befehle für DSP-Anwendungen. Der derzeit schnellste dsPIC33E arbeitet mit bis zu 70MIPS. dsPIC33 gibt es sogar im DIL28-Gehäuse. Ein kostenloser C-Compiler (C30) und eine DSP-Bibliothek wird von Microchip angeboten. Dabei handelt es sich um eine "Lite"-Version des kommerziellen C30, bei dem nur eine Optimierungsstufe freigeschaltet ist, aber ansonsten keine Einschränkungen (Codegröße o.ä.) bestehen. [Bearbeiten] TriCoreDer 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) [Bearbeiten] Bezugsquellen für Starterkits/Evalboards
[Bearbeiten] Weitere Infos[Bearbeiten] Literatur
[Bearbeiten] Foren
[Bearbeiten] Webseiten
[Bearbeiten] Artikel aus der Kategorie DSPAudio-DSP mit Spartan 3-FPGA • Blackfin • Ct Lab Client Library • Digitale Signalverarbeitung • Digitalfilter mit ATmega • DsPIC • EZ-Kit Lite • Entwurf: Spektralanalyse mit der FFT • Gitarreneffekte mit dem EZ-Kit Lite • Hilbert-Transformator (Phasenschieber) mit ATmega • TMS320VC5505 eZDSP USB Stick • TriCore
|