Anbieter zum Thema
Der Compiler sollte so angelegt sein, dass er dieses Konstrukt erkennt und aus diesen C-Befehlen einen sauberen saturierenden Befehl für den Cortex-M4 generieren kann. Aber selbst dann ist der Quellcode umständlich, fehleranfällig und schwer lesbar.
Alternativ bieten intrinsische DSP-Funktionen einen direkten Zugang zu Prozessorabläufen auf niedriger Ebene und kompilieren in einen Inline-Code, entweder als Einzelbefehl oder als kurze Befehlssequenz. Um den Code portierbar zu machen, müssen die intrinsischen Funktionen des Toolanbieters mit einem Standard wie CMSIS konform sein.
Bei der Verwendung der intrinsischen Funktionen des Cortex-M4 kann die obige Funktion die intrinsische Funktion __QADD16 nutzen und umgeschrieben werden zu:
uint16_t saturating_16bit_add(uint16_t a, uint16_t b)
return __QADD16(a, b);
Standardisierte DSP- Bibliotheken nutzen
Die Alternative zum Erstellen eigener DSP-Implementierungen ist die Nutzung einer DSP-Bibliothek. ARM hat kürzlich eine standardisierte DSP-Bibliothek mit optimierten Signalverarbeitungsfunktionen für Systeme auf Basis des Cortex-M4-Prozessors vorgestellt. Die Bibliothek ist CMSIS-kompatibel und wird von MCU-Anwendern für die einfache Entwicklung von DSP-Programmen genutzt. Es beinhaltet allgemeine Funktionen für mathematische, trigonometrische und Steuerungsfunktionen als auch Digital-Filter-Algorithmen für das Filter-Design als auch DSP-Toolkits.
Die Leistung variiert erheblich, abhängig von der Adaption und Optimierung der DSP-Algorithmen auf das tatsächliche Befehlsset. Tabelle 1 vergleicht die Ausführungszeit von zwei Festkomma-FFTs. Das universell einsetzbare fix_fft wird hier mit dem ARM-spezifischen FFT verglichen. Die ARM-spezifischen FFTs wurden speziell für die DSP-Befehle des Cortex-M4 eingestellt und führen einen 1024-point FFT in 5 ms aus.
Dieselbe Bibliothek optimiert für Cortex-M3 benötigt für die Ausführung mit 11,0 ms doppelt so lange. Das universelle fix_fft ist wiederum nochmal doppelt so langsam und benötigt auf der höchsten Stufe der Compiler-Geschwindigkeitsoptimierung 20,1 ms für die Ausführung.
* * Lotta Frimanson und Anders Lundgren ... sind Product Manager bei IAR Systems, Uppsala, Schweden.
Artikelfiles und Artikellinks
(ID:29059840)