DSP Digitaler Signalprozessor - BFH-TI Staff - Berner Fachhochschule
DSP Digitaler Signalprozessor - BFH-TI Staff - Berner Fachhochschule
DSP Digitaler Signalprozessor - BFH-TI Staff - Berner Fachhochschule
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