15.01.2014 Aufrufe

DSP Digitaler Signalprozessor - BFH-TI Staff - Berner Fachhochschule

DSP Digitaler Signalprozessor - BFH-TI Staff - Berner Fachhochschule

DSP Digitaler Signalprozessor - BFH-TI Staff - Berner Fachhochschule

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>DSP</strong><br />

<strong>Digitaler</strong> <strong>Signalprozessor</strong><br />

Marc Folly<br />

I-Seminar, FS 2013, <strong>Berner</strong> <strong>Fachhochschule</strong> <strong>BFH</strong>


Inhalt<br />

Einleitung 2<br />

Vorteile und Nachteile von <strong>DSP</strong>s 4<br />

Architektur 4<br />

Architektur am Beispiel des dsPIC30F 7<br />

Hersteller 13<br />

Programmiersprachen 14<br />

Anwendungsgebiete 16<br />

Quellenverzeichnis 17<br />

M. Folly <strong>DSP</strong> Seite 1 von 17


Einleitung<br />

Ein in der analogen Schaltungstechnik sehr häufig eingesetztes elektronisches Bauelement<br />

ist der Operationsverstärker (kurz OpAmp, engl. Operation Amplifier). Mit einem OpAmp<br />

lassen sich, abhängig von der externen Beschaltung, viele signaltechnische Operationen<br />

durchführen. Dies beginnt bei ganz einfachen Anwendungen, beispielsweise dem<br />

invertierenden oder nicht-invertierenden Verstärker mit einstellbarem Verstärkungsfaktor.<br />

Dieser Faktor wird über das Verhältnis zweier Widerstandswerte eingestellt und kann in der<br />

Regel nur durch Austauschen der Widerstände verändert werden. Lässt man die<br />

Rückkopplung, also die erwähnten Widerstände weg, so arbeitet der OpAmp mit seiner<br />

maximalen Verstärkung. Ein OpAmp kann durchaus einen Verstärkungsfaktor von 1‘000‘000<br />

aufweisen. Das bedeutet natürlich nicht, dass bei einer Eingangsspannung von einem Volt<br />

die Ausgangsspannung 1 Mega-Volt beträgt. Die Ausgangsspannung kann die<br />

Versorgungsspannung (max. ca. 30 Volt) nicht überschreiten. In dieser Konfiguration (ohne<br />

Rückkopplung) arbeitet der OpAmp als sogenannter Komparator; ist die eine<br />

Eingangsspannung höher als die andere, nimmt die Ausgangsspannung den höchst<br />

möglichen, ansonsten den kleinstmöglichen Wert an. Analoge Eingangssignale führen also zu<br />

einem binären Ausgangssignal. Diese Schaltungsform ist nichts Geringeres, als die Basis zum<br />

Bau von Analog-Digital-Konvertern (ADC), wie sie milliardenfach eingesetzt werden.<br />

Betrachtet man Spannungswert und Frequenz eines analogen Signals als reelle Zahlen, sind<br />

mit einem OpAmp auch mathematische Operationen, nämlich Addieren, Subtrahieren,<br />

Integrieren und Differenzieren möglich. Unter Einbezug von nicht-linearen Bauteilen,<br />

beispielweisen Dioden, sind auch Logarithmus und Exponentialfunktionen möglich. Die<br />

allerersten Rechner arbeiteten übrigens rein analog und mit Hilfe von OpAmps.<br />

Integrieren einer Rechteck- und einer Dreieck-Spannung<br />

Quelle: http://www.elektronik-kompendium.de/sites/slt/0412061.htm<br />

Überaus wichtig in der analogen wie auch in der digitalen Signalverarbeitung sind Filter wie<br />

beispielsweise Hochpass oder Tiefpass. Ein typisches Anwendungsbeispiel für ein<br />

Tiefpassfilter ist auf jeder Soundkarte zu finden: Obwohl Audiosignale im PC digital<br />

bearbeitet werden, muss ein Audiosignal, spätestens dann, wenn es von einem Menschen<br />

wahrgenommen werden soll, als Analogsignal vorliegen. Dieses Signal wird von einem DAC<br />

generiert, besitzt aber infolge der Abtastrate einen treppenförmigen Verlauf. Dieses Signal<br />

muss von einem Tiefpassfilter, dessen Grenzfrequenz der halben Abtastrate entspricht,<br />

geglättet werden. Zudem werden die höheren Frequenzen und die störenden Oberwellen<br />

M. Folly <strong>DSP</strong> Seite 2 von 17


herausgefiltert. Erst jetzt „klingt“ das Analogsignal natürlich und kann auf einem<br />

Lautsprecher geführt werden.<br />

Solche Filter lassen sich zwar aus RLC-Kombinationen (Kombinationen aus Widerständen,<br />

Induktivitäten und Kondensatoren) aufbauen, allerdings sind so keine steilen Kennlinien und<br />

Filter höherer Ordnung möglich. Um dieses Problem zu lösen, kommen ebenfalls wieder<br />

OpAmps zum Einsatz.<br />

Es wird also deutlich, dass OpAmps Universal-Bausteine der analogen Signalverarbeitung<br />

sind. Durch die schrittweise Digitalisierung analoger Systeme wie beispielsweise dem<br />

Telefonnetz, GSM oder Audio- und Videospeicherung, entfallen nach und nach klassische<br />

Anwendungsgebiete des OpAmps, da für die Verarbeitung jeweils DA-AD-Konvertierungen<br />

notwendig werden. Es bietet sich also an, die mit OpAmps durchgeführten Operationen<br />

digital abzuarbeiten.<br />

Das Pendant zum OpAmp in der digitalen Signalverarbeitung ist der digitale <strong>Signalprozessor</strong>,<br />

kurz <strong>DSP</strong>.<br />

M. Folly <strong>DSP</strong> Seite 3 von 17


Vorteile und Nachteile von <strong>DSP</strong>s<br />

<strong>DSP</strong>s ersetzen herkömmliche, teilweise sehr aufwändige analoge Filterschaltungen durch<br />

wenige, sehr hoch integrierte Schaltungselemente mit einer ausgeklügelten Software.<br />

Darüber hinaus können sie Aufgaben ausführen, die mittels analoger Schaltungstechnik nur<br />

schwer oder überhaupt nicht lösbar wären. Ein digitaler Filter lässt sich beispielsweise ohne<br />

Änderung der Hardware vom Hoch- zum Tiefpass umprogrammieren; bei analogen Systemen<br />

müsste das gesamte Hardware-Design angepasst werden. Zudem können sich die<br />

Charakteristiken von analogen Schaltungen temperatur- und altersbedingt verändern,<br />

digitale Schaltkreise sind von diesen Problemen nicht betroffen. Bauteiltoleranzen können<br />

bei mehreren, identisch aufgebauten Schaltungen bei gleichem Eingangssignal durchaus zu<br />

leicht verschiedenen Ausgangssignalen führen. Bei der digitalen Signalverarbeitung hingegen<br />

sind die Ausgangssignale stets exakt reproduzierbar. Ein weiterer Vorteil ist die<br />

Echtzeitverarbeitung von <strong>DSP</strong>s, sie erlaubt verschiedene Interrupt-Prioritäten und ist zudem<br />

so ausgelegt, dass sie die höchst-priorisierten Interrupts garantiert nach einer<br />

höchstzulässigen Zeit abarbeitet.<br />

Aber auch einige Nachteile seien genannt: <strong>DSP</strong>s benötigen immer eine Energieversorgung,<br />

passive Filter, wie sie in der Analogtechnik vorkommen, sind nicht möglich. Zudem<br />

benötigen die internen Übertragungskanäle zur Datenverarbeitung eine viel höhere<br />

Bandbreite im Vergleich zur Signalbandbreite, was einen höheren Stromverbrauch mit sich<br />

ziehen kann. Die Verarbeitung von hochfrequenten Signalen im höheren Gigahertz- oder<br />

sogar Terahertzbereich ist zurzeit noch nicht möglich. Falls analoge Signale verarbeitet<br />

werden sollen, muss immer eine vollständige AD-DA-Wandlung erfolgen.<br />

Architektur<br />

Das Hauptunterscheidungsmerkmal von <strong>DSP</strong>s liegt beim verwendeten Zahlenformat.<br />

Unterschieden wird zwischen Fest- und Gleitkommaarithmetik. Beide Ausführungen bieten<br />

je nach Anwendungsgebiet verschiedene Vorteile:<br />

Festkomma-<strong>DSP</strong>s verwenden für Zahlen ein festes Intervall mit einer bestimmten<br />

Genauigkeit. Diese Variante stammt aus den Anfangszeiten, wird aber auch heute noch in<br />

einem Grossteil der Anwendungen eingesetzt. Diese Variante ist im Gegensatz zu<br />

Gleitkomma-<strong>DSP</strong>s schneller und kostengünstiger, da die Genauigkeit, sprich die Auflösung<br />

einer Zahlendarstellung fast beliebig variiert werden kann. Ermöglicht wird dies durch die<br />

Kombination einer Mantisse zusammen mit einem Exponenten. Der maximale Zahlenbereich<br />

und die Auflösung stehen im umgekehrten Verhältnis zusammen. Viele Algorithmen in der<br />

Signalverarbeitung lassen sich so einfacher implementieren.<br />

<strong>DSP</strong>s verarbeiten im Gegensatz zu herkömmlichen CPU meist einen konstant anliegenden<br />

Datenstrom. Ein <strong>DSP</strong> muss also in der Lage sein, eine bestimmte Datenmenge pro Zeiteinheit<br />

sicher verarbeiten zu können. Diese erhöhte Anforderung an die Echtzeitfähigkeit wird mit<br />

folgenden Massnahmen abgedeckt:<br />

M. Folly <strong>DSP</strong> Seite 4 von 17


Harvard-Architektur<br />

Im Gegensatz zur weit verbreiten Von-Neumann-Architektur bei Mikrocontrollern<br />

beinhaltet die Harvard-Architektur getrennte Speicher für Programm und Daten.<br />

Somit können Programminstruktionen und benötigte Variablen gleichzeitig aus dem<br />

Speicher geholt werden. Diese Parallelisierung verspricht einen entscheidenden<br />

Geschwindigkeitsvorteil.<br />

Gegenüberstellung Harvard- (oben) und Von-Neumann-Architektur (unten)<br />

Quelle: http://www.hit-karlsruhe.de/Walter/Lehre/MC/MC_Vorlesung/Folien/folien/WEBFOLIEN/kap03.htm<br />

M. Folly <strong>DSP</strong> Seite 5 von 17


Getrennte Speicherbänke<br />

Als Erweiterung zur Harvard-Architektur ermöglichen mehrere unabhängige<br />

Speicherbänke, dass während dem Zurückschreiben der Ergebnisse der ausgeführten<br />

Operation bereits die Parameter für die nächste Operation geladen werden können.<br />

MAC-Befehl<br />

Typische Berechnungen der digitalen Signalverarbeitung, wie die schnelle Fourier-<br />

Transformation oder die Faltung, erfordern Berechnung in der Art von A‘ = A + B * C<br />

(Addiere den Wert von Register A zum Produkt aus Register B und C und schreibe den<br />

Wert zurück in Register A). Viele <strong>DSP</strong>s erlauben diesen Rechenschritt in einem<br />

einzigen Taktzyklus. Dieser spezielle Maschinenbefehl wird MAC-Befehl (Multiply and<br />

Accumulate) genannt.<br />

Mehrere Rechenwerke<br />

Viele <strong>DSP</strong>s verfügen neben dem Hauptrechenwerk (Central Arithmetic Unit) über<br />

eine Auxiliary Arithmetic Unit, welche parallel zum Hauptwerk arithmetische<br />

Berechnungen ausführen kann, solange dieses beschäftigt ist.<br />

VLIW-Befehle<br />

(Very-Long-Instruction-Word)<br />

Während dem Übersetzen prüft der Compiler, welche Operationen vom Prozessor<br />

parallel ausgeführt werden können. Diese Instruktionen werden in ein langes<br />

Instruktionswort gepackt, welches vom Prozessor ohne weitere Analyse direkt an die<br />

entsprechenden, parallel arbeitenden Funktionseinheiten weitergegeben werden.<br />

Das Gegenteil zu VLIW ist die Superskalarität; die Eigenschaft eines Prozessors,<br />

Parallelität selbstständig auf Befehlsebene durchzuführen.<br />

Hardware-Unterstützung für vielfach verwendete Programmabläufe<br />

Viele <strong>DSP</strong>s unterstützen die Abarbeitung von Schleifen mittels speziellen Hardware-<br />

Komponenten. Dies wirkt sich positiv auf die Abarbeitungsgeschwindigkeit aus, da<br />

kein Software- Overhead pro Iteration notwendig ist.<br />

Address-Generator-Unit (AGU), eine Einheit, die darauf spezialisiert ist, die<br />

benötigten Adressen für Speicherzugriffe oder Programmsprünge zu berechnen.<br />

Bit-Reversed-Adressierung<br />

Da die Endergebnisse von Fast-Fourier-Transformationen (FFT) „bit-reversed“ sind,<br />

kann diese Adressierung verwendet werden, um berechnete Daten so im Speicher<br />

abzulegen, dass anschliessend keine Speicherinhalte mehr vertauscht werden<br />

müssen.<br />

Zur Kommunikation mit der Periphere kommen mehrere parallele und serielle Schnittstellen<br />

wie beispielweise SPI (Serial Peripheral Interface) oder I²S (Inter-IC Sound Interface) zum<br />

Einsatz.<br />

M. Folly <strong>DSP</strong> Seite 6 von 17


Architektur am Beispiel des dsPIC30F<br />

Die dsPIC30F-Familie der Firma Microchip sind sogenannte „Versatile 5V DSCs“ mit 16-bit-<br />

Architektur. Der gleiche Hersteller vertreibt zudem eine noch leistungsfähigere Variante, die<br />

dsPIC33F/E-Familie.<br />

Bei beiden Derivaten handelt es sich nicht nur um <strong>DSP</strong>s, sondern um digitale<br />

Signalcontroller. Das bedeutet, dass zusätzliche Peripherie, die für den Betrieb eines<br />

Prozessors notwendig sind, wie Programm- und Arbeitsspeicher und Oszillator, bereits im<br />

Chip integriert sind. Die umfangreichen Controller-Eigenschaften werden mit einer<br />

rechenstarken <strong>DSP</strong>-Funktionalität kombiniert.<br />

Die verschiedenen Derivate aus der dsPIC30F-Familie unterscheiden sich hauptsächlich in<br />

der Grösse des Programmspeichers (zwischen 6 und 144 kBytes) und des Arbeitsspeichers<br />

(zwischen 256 und 8192 Bytes). Die maximale Verarbeitungsgeschwindigkeit beträgt bei<br />

sämtlichen Derivaten 30 MIPS und der Preis beläuft sich zwischen 2 und 7 $.<br />

Anhand des unten abgebildeten Blockdiagramms werden die einzelnen Funktionen erläutert.<br />

Es ist zu beachten, dass eine klare Abgrenzung zwischen MCU und <strong>DSP</strong> schwer möglich ist,<br />

da viele Komponenten von beiden Logikeinheiten verwendet werden.<br />

Blockdiagramm der dsPIC30F-Architektur<br />

Quelle: http://www.microchip.com/pagehandler/en-us/family/16bit/architecture/dspic30f.html<br />

M. Folly <strong>DSP</strong> Seite 7 von 17


Kern-Komponenten:<br />

PSV:<br />

(Program Space Visibilty)<br />

Ein Problem der Harvard-Architektur sind die unterschiedlichen Adressierung-Mechanismen<br />

für Programm- und Datenspeicher. Es kann unübersichtlich werden, falls auf eine grössere<br />

Datenstruktur im Programspeicher zugegriffen werden soll. Mit PSV ist es möglich, einen<br />

kleinen Teil aus dem Programspeicher so abzubilden, als befinde sich dieses „Datenfenster“<br />

im Datenspeicher, worauf Direktzugriff möglich ist.<br />

Core Register Array:<br />

Arbeitsregister 16 x 16 bit.<br />

Shadow Register Array:<br />

Hilfsregister, welche nicht direkt adressiert werden können.<br />

Instruction Decode:<br />

Der Befehlsdecoder zerlegt die in Maschinencode geschriebenen Instruktionen in einzelne<br />

Arbeitsschritte, mit denen die verschiedenen logischen Funktionseinheiten der ALU und den<br />

weiteren hardwareunterstützten Logikfunktionen aktiviert werden.<br />

ALU:<br />

(Arithmetic Logic Unit)<br />

Rechenwerk des MCU-Teils für arithmetische und logische Operationen.<br />

HW Multiply/Divide:<br />

Ermöglicht MAC-Operationen.<br />

<strong>DSP</strong> Egine:<br />

Der eigentliche <strong>DSP</strong>-Kern besitzt unter anderem eine eigene 40-bit-ALU.<br />

Accumulator:<br />

Register, welches Ergebnisse der ALU enthält.<br />

Program Counter:<br />

Der Befehlszähler enthält jeweils die Speicheradresse des nächsten auszuführenden<br />

Befehls.<br />

Barrel Shifter:<br />

Ermöglicht Verschiebungen um mehrere Bits nach links und rechts in nur einem Systemtakt.<br />

M. Folly <strong>DSP</strong> Seite 8 von 17


Peripherie-Komponenten:<br />

Program Memory:<br />

Programmspeicher ( = ROM).<br />

Data Memory:<br />

Datenspeicher, Arbeitsspeicher ( = RAM).<br />

Data EEPROM:<br />

(EEPROM = Electrically Erasable Progammable Read-Only Memory)<br />

Nichtflüchtiger, zur Laufzeit les- und schreibbarer Speicher.<br />

EEPROM-Schreibzugriffe sind im Gegensatz zu Lesezugriffen äussert langsam, jeder<br />

Schreibzugriff unterliegt zudem einem Verschleiss. EEPROMs werden beispielweise für<br />

Konfigurationsdaten verwendet, die häufig gelesen aber selten verändert werden.<br />

Interrupt Controller:<br />

Viele Peripherie-Komponenten sind in der Lage, Interrupts auszulösen, welche vom<br />

Interrupt-Controller zusammengefasst und an den Kern weitergeleitet werden. Der<br />

dsPIC30F besitzt insgesamt 44 Interrupt-Quellen.<br />

10/12-bit ADCs:<br />

Analog-Digital-Wandler mit bis zu 16 Eingängen und einer Abtastrate von 1 MS/s bei 10-bit<br />

und 200 kS/s bei 12-bit.<br />

SMPS PWM:<br />

(PWM = Pulsweitenmodulation)<br />

(SMPS = Switch Mode Power Supply)<br />

PWM-Modul mit acht Kanälen, besonders geeignet zum Bau von Schaltnetzteilen.<br />

MC PWM:<br />

(MC = Motor Control)<br />

PWM-Modul, welches sog. Totzeiten generieren kann.<br />

Hintergrund: Motoren werden oft mittels Transistoren in H-Schaltung angesteuert. Wenn<br />

nun beispielsweise der High-side-Transistor aus- und gleichzeitig der Low-side-Transistor<br />

eingeschaltet wird, leiten beide Transistoren für einen kurzen Moment gleichzeitig. Dies<br />

führt zu einem Kurzschluss der Versorgungsspannung. Um dieses Problem abzuwenden,<br />

müssen den Umschaltvorgängen Totzeiten beigefügt werden.<br />

Analog Comp.:<br />

Die Analog-Eingänge des ADCs können auch auf einen konfigurierbaren Komparator geführt<br />

werden. Die Funktionsweise von Komparatoren ist in der Einleitung beschrieben.<br />

M. Folly <strong>DSP</strong> Seite 9 von 17


QEI:<br />

(QEI = Quadratur-Encoder-Interface)<br />

Quadratur-Encoder, auch bekannt als Inkrementalgeber, werden bei Positions- und<br />

Geschwindigkeitsbestimmung in Rotationssystem verwendet. Die von diesen Gebern<br />

abgegebenen Rechtecksignale werden vom QEI decodiert und als nummerische Werte für<br />

Position und Geschwindigkeit zur Verfügung gestellt.<br />

Codec Interface:<br />

Unterstützung für I²S und AC’97 ( = Audio-Standard).<br />

CAN:<br />

( = Controller Area Network)<br />

Der CAN-Bus ist ein asynchroner, serieller Feldbus. 1983 von Bosch für die Vernetzung von<br />

Steuergeräten im Automobilsektor entwickelt, findet der CAN-Bus heute vielfältige<br />

Anwendung auch ausserhalb der Automobilindustrie.<br />

Die maximale Datenrate beträgt 1 Mbit/s.<br />

SPI:<br />

( = Serial Peripheral Interface)<br />

SPI ist ein von Motorola entwickelter, synchroner serieller Datenbus.<br />

Es werden drei gemeinsame Leitungen (CLOCK, MOSI, MISO) sowie pro<br />

Kommunikationsteilnehmer eine Chip-Select-Leitung benötigt.<br />

Die Taktfrequenz kann mehrere MHz betragen.<br />

I²C:<br />

( = Inter-Integrated Circuit)<br />

I²C ist ein von Phillips entwickelter, synchroner serieller Datenbus.<br />

Im Gegensatz zu SPI werden, unabhängig von der Anzahl Busteilnehmer, nur zwei Leitungen<br />

(CLOCK und DATA) benötigt.<br />

Die maximale Datenrate beträgt 400 kbit/s. Obwohl neuere Bus-Systeme deutlich schneller<br />

sind, ist I²C wegen des geringen Aufwands ideal für Peripheriegeräte, die nicht schnell sein<br />

müssen. Häufig wird der Bus zur Übertragung von Steuerungs- und Konfigurationsdaten<br />

verwendet.<br />

16/32-bit Timers:<br />

Timer sind sehr wichtige Komponenten in einem Controller. Durch Prescaler- und<br />

Postscaler-Register lassen sich vielseitige Intervalle einstellen, welche dann beispielsweise<br />

interruptgesteuert zyklisch Subroutinen des Hauptprogrammes aufrufen.<br />

Zudem dienen Timer als Zeitbasis für diverse interne Peripherie wie PWM, Input Capture<br />

oder Output Compare.<br />

Der dsPIC besitzt fünf 16-bit-Timer, welche paarweise zu einem 32-bit-Timer<br />

zusammengeschlossen werden können.<br />

M. Folly <strong>DSP</strong> Seite 10 von 17


Input Capture:<br />

Bei dieser Betriebsart kann am Input-Capture-Anschluss eine externe Signalquelle<br />

angeschlossen werden. Je nach Konfiguration wird eine steigende oder fallende Flanke<br />

erkannt und der zu diesem Zeitpunkt aktuelle Timer-Wert wird in ein spezielles Register<br />

geschrieben. Gleichzeitig kann auch ein entsprechender Software-Interrupt ausgelöst<br />

werden.<br />

Output Compare:<br />

In ein spezielles Vergleichswertregister wird ein Wert geschrieben, der ständig mit einem<br />

Timer-Wert verglichen wird. Erreicht der Timer den in diesem Register eingetragenen Wert,<br />

kann an ein externes Signal erzeugt oder ein Software-Interrupt ausgelöst werden.<br />

GPIO:<br />

( = General Purpose Input / Output)<br />

Allgemein verwendbare Kontaktpins, deren Verhalten durch das Programmieren frei<br />

bestimmbar ist, sei es als Eingang oder als Ausgang. Da ein GPIO in der Lage ist, bis 25 mA<br />

gegen Masse und Vcc zu liefern, können beispielsweise LEDs direkt angeschlossen werden.<br />

RTCC:<br />

( = Real-Time Clock and Calendar)<br />

Ein vom <strong>DSP</strong>-Engine und MCU unabhängiges Modul, das die aktuelle Zeit liefert. Dieses<br />

Modul benötigt einen zusätzlichen externen Uhrenquarz (32.768 kHz) und ist für eine<br />

minimale Stromaufnahme optimiert. Mit einer Lithium-Knopfzelle lässt sich das RTCC ca. 10<br />

Jahre ohne zusätzliche Stromversorgung betreiben.<br />

CRC:<br />

( = Cyclic Redundancy Check)<br />

Harware-unterstützte Berechnungen für die zyklische Redundanzprüfung, wie sie sehr oft<br />

bei Datenübertragungen aller Art und Speicherung benutzt wird, um Fehler zu erkennen.<br />

Watchdog:<br />

Ein eigenständiger Zähler, der nach Ablauf einer gewissen Zeit den Controller zurücksetzt<br />

(RESET). Im Programmcode muss der Watchdog zyklisch vor Ablauf dieser Zeit mithilfe eines<br />

speziellen Befehls zurückgesetzt werden. Damit soll verhindert werden, dass sich das<br />

Programm beispielsweise in einer Endlosschleife verfängt und sich die Applikation<br />

„aufhängt“.<br />

M. Folly <strong>DSP</strong> Seite 11 von 17


Anmerkung zum Systemtakt:<br />

Der dsPIC30F kann von einem externen Signal (DC – 40 MHz), einem externen RC-Glied,<br />

einem externen Quarzoszillator oder einem internen 7.37-MHz-RC-Glied getaktet werden.<br />

Eine konfigurierbare PLL-Schaltung (Phase-Locked Loop) kann den Systemtakt um den Faktor<br />

4, 8 oder 16 vergrössern.<br />

M. Folly <strong>DSP</strong> Seite 12 von 17


Hersteller<br />

Viele namhafte Hersteller von integrierten Schaltungen führen <strong>DSP</strong>s in ihrer Produktpalette.<br />

Texas Instruments (<strong>TI</strong>), Marktführer:<br />

<br />

<br />

<br />

<br />

<br />

C2000<br />

Diese Baureihe enthält eine komplette, fünfstufige 32-bit-<strong>DSP</strong>-Familie vom low-costbis<br />

zum high-end-Controller. Die Peripherie umfasst Mehrkanal-A/D-Wandler mit 12-<br />

bit-Auflösung und einer Abtastrate von bis zu 14 MS/s und synchronisierte<br />

Pulsweitenmodulation mit einem hochauflösenden Modus. Als Schnittstellen stehen<br />

UART, I²C, SPI, CAN sowie Quadratureingänge für Quadratur-Encoder<br />

(Inkrementalgeber) zur Verfügung.<br />

Kostenpunkt: $1.50 bis $9.00<br />

C5000<br />

Dies ist eine auf Batterieanwendungen und somit auf geringen Stromverbrauch<br />

optimierte Architektur. Viele 2G-Mobiltelefone von Nokia und Ericsson in den späten<br />

90er-Jahren enthielten einen <strong>DSP</strong> aus dieser Baureihe.<br />

C6000<br />

Diese <strong>DSP</strong>-Familie umfasst sowohl Fest- also auch Gleitkommaarithmetik.<br />

DaVinci<br />

Die DaVinci-Serie ist für Videoanwendungen optimiert. Während ältere <strong>DSP</strong> nur PAL<br />

und NTSC verarbeiten, unterstützen neuere Derivate auch HDTV.<br />

OMAP (Open Multimedia Applications Platform)<br />

Diese Bauform enthält einen <strong>DSP</strong> und einen klassischen Mikrocontroller zusammen<br />

mit weiterer Peripherie auf einem einzigen Chip, einem sogenannten SoC (System on<br />

Chip).<br />

Das Smartphone Galaxy Nexus enthält beispielsweise einen OMAP 4460 SoC.<br />

Microchip Technology Inc:<br />

<br />

dsPIC<br />

Die dsPIC-Familie hat mit den beliebten und weit verbreiteten 8-Bit-PICs nichts<br />

gemeinsam. Sie basiert auf der 16-Bit-Architektur der PIC24-Familie, mit zusätzlicher<br />

<strong>DSP</strong>-Funktionalität. Viele Derivate enthalten ein AC97/I²S-Interface, CAN, spezielle<br />

Motor-Control-PWM und AD-Wandler.<br />

Die dsPIC30F-Produktfamile wird oben vorgestellt.<br />

M. Folly <strong>DSP</strong> Seite 13 von 17


Infineon Technologies AG:<br />

<br />

TriCore<br />

Hierbei handelt es sich um einen 32-Bit-Mikrocontroller mit <strong>DSP</strong>-Funktionen.<br />

Aktueller Schwerpunkt sind High-Performance-Embedded-Real-Time-Systeme in<br />

Industrie- und Automobilanwendungen.<br />

Analog Devices Inc:<br />

<br />

<br />

SHARC<br />

32-Bit-<strong>DSP</strong>, seit 1993 verfügbar<br />

Blackfin<br />

Eine Kombination aus 32-Bit-RISC-MCU und 16-Bit-Festkomma-<strong>DSP</strong><br />

Programmiersprachen<br />

Bei der Entwicklung eines Algorithmus bietet es sich an, ihn zuerst mittels Standardsoftware<br />

für numerische Mathematik wie MATLAB oder Octave zu implementieren und auf einem PC<br />

zu testen. Anschliessend kann der Algorithmus auf den <strong>DSP</strong> portiert werden.<br />

Softwareentwicklung für <strong>DSP</strong>s geschieht nicht selten in Assembler. Grund dafür ist, dass viele<br />

Hochsprachen-Compiler die zur Verfügung stehenden speziellen Maschineninstruktionen<br />

nicht optimal ausnutzen. Doch die Motivation, Software unter Einbezug einer Hochsprache<br />

zu entwickeln, ist hinlänglich bekannt. So bieten auch viele Firmen C-Compiler für ihre <strong>DSP</strong>s<br />

an, wie beispielweise der C30 von Microchip. Compiler für andere Hochsprachen wie C++,<br />

Ada oder Pascal wären denkbar, sind jedoch nicht weit verbreitet.<br />

Zudem bieten alle Firmen Toolchains, also Werkzeugketten zum Kompilieren / Assemblieren,<br />

Linken, Debuggen bis hin zum „Brennen“ des DPSs an.<br />

Sehr oft wird bei der Arbeit mit Mikrocontrollern und auch mit <strong>DSP</strong>s ein festes Zeitintervall<br />

benötigt, beispielsweise um A/D-Wandlungen auszulösen. Folgender Beispielcode illustriert<br />

ein häufig eingesetztes „Design Pattern“:<br />

M. Folly <strong>DSP</strong> Seite 14 von 17


boolean go = false;<br />

#int_<strong>TI</strong>MER1<br />

void timebase(void)<br />

{<br />

go = true;<br />

}<br />

void main(void)<br />

{<br />

setup_timer_1(T2_DIV_BY_16,160,1);<br />

while(true)<br />

{<br />

if(go)<br />

{<br />

go = false;<br />

doTimeCriticalThings();<br />

}<br />

}<br />

doOtherThings();<br />

}<br />

Beschreibung:<br />

Zuerst wird eine globale Variable go deklariert. Anschliessend wird der Timer 1 mit<br />

entsprechenden Pre- und Postscalern so konfiguriert, dass er im gewünschten Intervall einen<br />

Interrupt auslöst. In der ISR timebase wird go auf true gesetzt, was in dem in einer<br />

Endlosschlaufe laufenden Hauptprogramm detektiert wird.<br />

Generell sollten ISRs so kurz wie möglich gehalten werden, deshalb wird<br />

doTimeCriticalThings() auch erst im Hauptprogramm - eventuell nach kurzer Verzögerung –<br />

abgearbeitet.<br />

Dies ist ein einfaches Beispiel für kooperatives Multitasking: Jeder „Task“ nimmt die CPU<br />

solange in Anspruch, wie er für die Abarbeitung benötigt. Es ist Sache des Programmierers,<br />

dafür zu sorgen, dass kein Task zu lange benötigt.<br />

M. Folly <strong>DSP</strong> Seite 15 von 17


Anwendungsgebiete<br />

Die Einsatzgebiete von <strong>DSP</strong> sind überaus vielseitig. In sehr vielen Anwendungen müssen<br />

digitale Signale verarbeitet werden. Die nachfolgende Auflistung illustriert einige typische<br />

Anwendungsgebiete:<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Mischpulte und Equalizer<br />

Klangbeeinflussung durch Verändern des Frequenzspektrums, Tonhöhevariierung,<br />

Hall, Frequenzanhebung<br />

Spracherkennung und Klangsynthese<br />

Sprache lässt sich nicht nur erkennen, sondern mittels Klangsynthese auch<br />

reproduzieren<br />

Ausgleich von schlechten akustischen Gegebenheiten<br />

In der Luftfahrt werden störende Turbinengeräusche aus den Kopfhörern der<br />

Besatzung im Cockpit entfernt.<br />

Modems<br />

Die Modulation und Demodulation von Signalen, beispielsweise auf der<br />

Telefonleitung bei der xDSL-Technologie, aber auch das Komprimieren und<br />

Dekomprimieren erfordert leistungsfähige <strong>DSP</strong>s.<br />

Echokompensation<br />

Beim gleichzeitigem Senden und Empfangen von Signalen im Duplexbetrieb kann es<br />

zu einem Echo oder Hall kommen, was durch die Echokompensation unterdrückt<br />

oder beseitigt werden soll.<br />

Dasselbe Problem tritt bei Freisprecheinrichtungen auf: Die Stimme aus dem<br />

Lautsprecher wird vom Mikrofon wieder aufgefangen. Der Teilnehmer am anderen<br />

Ende hört seine Stimme um eine kurze Zeit verzögert, was aber sehr störend wirkt.<br />

Festplatten<br />

Zur Motorkontrolle und Regelung der Servosysteme.<br />

Bestandteil von SDR (Software Defined Radio)<br />

Aktive Frequenzweiche<br />

Datenkomprimierung<br />

Digitale Bildbearbeitung<br />

M. Folly <strong>DSP</strong> Seite 16 von 17


Quellenverzeichnis<br />

Die in dieser Arbeit verwendeten Informationen stammen aus folgenden Quellen:<br />

• http://www.mikrocontroller.net/articles/Digitale_Signalverarbeitung<br />

• http://de.wikipedia.org/wiki/Digitale_Signalverarbeitung<br />

• http://de.wikipedia.org/wiki/<strong>Digitaler</strong>_<strong>Signalprozessor</strong><br />

• .zielinski.fh-aachen.de M T Einfuehrung<strong>DSP</strong>.pdf<br />

• http://www.microchip.com/pagehandler/enus/family/<br />

16bit/architecture/dspic30f.html<br />

• „Audio-<strong>DSP</strong>-Kurs“, elektor 05-2011, 06-2011<br />

M. Folly <strong>DSP</strong> Seite 17 von 17

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!