Digitale Signalverarbeitung Cortex-Mikrocontroller als DSP

Im Gegensatz zu vielen 8- und 16-bit-Mikrocontrollern haben die ARM-Cortex-M-Prozessoren genügend Rechenleistung, um Signalverarbeitung mit DSP-Algorithmen durchzuführen. Eine standardisierte CMSIS-DSP-Library bietet eine umfangreiche Sammlung von Algorithmen und ist sowohl fϋr Cortex-M3 als auch für Cortex-M4 einsetzbar. Die M4-Variante ist fϋr den SIMD-Befehlssatz und die Floating-Point-Hardware optimiert.

Mikrocontroller, die mit ARM Cortex-M-Kernen arbeiten[1], sind mittlerweile Industrie-Standard. Alle Prozessoren der Cortex-M-Serie sind software-kompatibel. Mit dem 2008 eingefϋhrten „Cortex Microcontroller Software Interface Standard“ (CMSIS)[2] wird die Portierung von Software weiter vereinfacht. Der CMSIS ist für Cortex-M0, Cortex-M3 und Cortex-M4 verfügbar und definiert allgemeingültige Methoden zur Programmierung von Cortex-M-Mikrocontrollern.

Die aktuelle CMSIS-Version 2 enthält zudem eine Bibliothek mit 61 verschiedenen Algorithmen zur digitalen Signalverarbeitung (engl. Digital Signal Processing, DSP). Die CMSIS-DSP-Bibliothek umfasst Vektor-Befehle, Martrizen-Rechnungen, komplexe Arithmetik sowie Filter-, FFT- und Steuerungsfunktionen. Die meisten Algorithmen sind in verschiedenen Festkomma-Formaten und im Gleitkomma-Format verfügbar und sowohl für den Cortex-M3 als auch den Cortex-M4 optimiert.

Der M4 bietet gegenϋber dem M3 zusätzlich SIMD (Single Instruction, Multiple Data, Bild 1 ) und Floating-Point-Hardware und ist dadurch bei gleicher Taktfrequenz deutlich schneller als ein M3. Die CMSIS-DSP-Bibliothek ist in C erstellt und wird auch im Quellcode geliefert. Damit können Algorithmen weiter optimiert und sozusagen auf eine Anwendung maßgeschneidert werden.

Die SIMD-Technik führt zwei oder vier identische Rechenoperationen in einem einzigen CPU-Zyklus aus. SIMD unterstützt dabei auch Multiplikations-/Additions-Sequenzen, die häufig in DSP-Algorithmen genutzt werden. Da dabei auch komprimierte Datenwerte verarbeitet werden, können sogar die Speicherzugriffe reduziert werden.

Die CMSIS-DSP-Bibliothek ist in der Cortex-M4-Variante auf diesen SIMD-Befehlssatz optimiert. Im Vergleich zum Cortex-M3 (Bild 2) sind beim M4 Festkomma-Algorithmen etwa doppelt so schnell, Gleitkomma-Funktionen sogar zehnmal schneller.

Digitale Signalverarbeitung - Verarbeitung „natürlicher“ Daten   

Digitale Signalverarbeitung[3] bietet die Grundlage für viele technische Systeme. Ohne DSP sind moderne Unterhaltungselektronik und Telekommunikation undenkbar. DSP-Algorithmen finden sich auch im Automobilbereich, in Industrie-Steuerungen, Medizingeräten, Militär und Forschung. DSP hat dabei zahlreiche Vorteile gegenüber der Analog-Technik, wie Stabilität und Präzision der Signalverarbeitung. Auβerdem lassen sich komplexe, rekonfigurierbare Systeme erstellen. Allerdings ist die Bandbreite durch die Abtastrate begrenzt, und durch die Signal-Quantisierung kann zusätzliches Rauschen entstehen.

Bei der digitalen Signalverarbeitung gibt es grundsätzlich zwei verschiedene Methoden, um die Signalwerte zu verarbeiten. Beide Methoden werden von der CMSIS-DSP-Bibliothek unterstützt:

Stream-Verarbeitung: Hier wird jeder Quantisierungs-Wert sofort verarbeitet. Dadurch entstehen keine zeit-lichen Verzögerungen, allerdings muss der DSP-Algorithmus meist direkt in der Interrupt-Service-Routine (ISR) aufgerufen werden. Dadurch kann eine hohe Latenzzeit für andere ISRs entstehen, die gleichzeitig auf dem System betrieben werden.

Block-Verarbeitung: Dabei werden mehrere Quantisierungs-Werte zunächst in einem Datenblock zusammengefasst und dann auf einmal dem DSP-Algorithmus zur Verarbeitung übergeben. Die entstehenden Signalverzögerungen durch den Blockbetrieb liegen in der Praxis im Bereich von einigen Millisekunden und können meist akzeptiert werden. Da keinerlei Vorverarbeitung der Werte erforderlich ist, kann häufig ein DMA anstelle einer ISR eingesetzt werden, um die Datenblöcke zu sammeln. DMA entlastet den Mikrocontroller von häufigen periodischen Interrupts und steigert damit die Effizienz des Gesamtsystems. Auβerdem bietet moderne Peripherie Betriebsarten an, die Daten auf Blockbasis verarbeiten.

Die hohe Rechenleistung der Cortex-M-Prozessoren erlaubt es, auf dem gleichen Mikrocontroller sowohl umfangreiche DSP-Algorithmen als auch die allgemeinen Steuerfunktionen eines Systems zu implementieren. Durch dieses Design ist ein zusätzlicher DSP-Prozessor nicht erforderlich. Systeme werden dadurch kostengünstiger - auch die Synchronisation mit einem zweiten Prozessor entfällt.

Um aber eine übersichtliche Software-Struktur zu gewährleisten, ist ein Echtzeit-Betriebssystem (RTOS) unerlässlich. Die Blockverarbeitung der CMSIS-DSP-Bibliothek trägt zur Übersichtlichkeit bei, indem Message- und Mailbox-Systeme eines RTOS eingesetzt werden können. Beispielsweise können 64 Signalwerte in einer Interrupt Service Routine (ISR) oder mit einem DMA-Burst (Direct Memory Access) gesammelt und zunächst zu einem Datenblock zusammengefasst werden. Diese Datenblöcke werden dann zum verarbeitenden Task des Systems geschickt (Bild 3). Dazu muss das RTOS ein Mailbox-System enthalten, das sowohl mit Tasks als auch ISR/DMA zusammenarbeiten kann.

Im Task werden dann die Signaldaten mit den DSP-Algorithmen bearbeitet. Die Ergebnisse können anschlieβend wieder als Datenblock ausgegeben werden. Einige RTOS bieten flexible Puffer für Datenblöcke, so dass auch bei groβer System-Auslastung ein unterbrechungsfreier Betrieb gewährleistet werden kann.