Table of Contents
Optimierung von IIR-Filterdesigns für eine reduzierte rechentechnische Komplexität in tragbaren Geräten
Tragbare Geräte wie Smartwatches, Fitness-Tracker und medizinische Überwachungs-Patches beruhen auf kontinuierlicher Sensordatenerfassung und Echtzeitverarbeitung. Von der Entfernung von Bewegungsartefakten aus Elektrokardiogrammsignalen (EKG) bis hin zur Reinigung von Beschleunigungsmesserdaten für die Schrittzählung spielt die digitale Filterung eine zentrale Rolle. Unter den vielen Filtertypen sind Infinite Impulse Response (IIR) Filter ein Arbeitspferd in diesen Anwendungen, da sie scharfe Frequenzantworten mit relativ wenigen Koeffizienten erzielen können. Die rekursive Natur von IIR-Filtern führt jedoch einen Rechenaufwand ein, der die Lebensdauer der Batterie und die Echtzeitleistung belasten kann. Dieser Artikel stellt eine umfassende Reihe von Strategien vor, um die Rechenkomplexität von IIR-Filterdesigns zu reduzieren und eine effiziente Bereitstellung in ressourcenbeschränkten tragbaren Systemen zu ermöglichen.
IIR-Filter in Wearables verstehen
IIR-Filter sind digitale Filter, die durch eine Übertragungsfunktion definiert sind, die sowohl Feedforward- als auch Feedback-Koeffizienten enthält.
y[n] = b0·x[n] + b1·x[n-1] + ... + bM·x[n-M] - a1·y[n-1] - ... - aN·y[n-N]
Da die Ausgabe von früheren Ausgängen (Feedback) abhängt, können IIR-Filter einen gegebenen Frequenzgang mit einer niedrigeren Ordnung als ein äquivalentes Finite Impulse Response (FIR)-Filter erreichen. Für tragbare Geräte bedeutet dies weniger Multi-Akkumulationsoperationen (MAC) pro Sample, reduzierten Speicher für Koeffizientenspeicher und geringere Latenz. Klassische IIR-Filtertopologien umfassen Butterworth, Chebyshev und elliptische Designs, die jeweils unterschiedliche Kompromisse zwischen Ripple, Roll-Off und Phasenlinearität bieten.
Trotz ihrer Effizienz stellen IIR-Filter Herausforderungen bei Wearables dar: Sie können durch Koeffizientenquantisierung instabil werden, unter Grenzzyklusschwingungen leiden und erfordern eine sorgfältige Skalierung, um Überlauf in der Fixpunkt-Arithmetik zu vermeiden. Darüber hinaus verhindern die rekursiven Berechnungen eine einfache Parallelisierung, wodurch jede Probe eine serielle Abhängigkeit darstellt. In batteriebetriebenen Geräten mit sparsamen Mikrocontrollern oder benutzerdefinierten ASICs führt jede gespeicherte arithmetische Operation direkt zu einer längeren Batterielebensdauer oder einer geringeren Siliziumfläche.
Schlüsselstrategien zur Verringerung der IIR-Computational Complexity
1. Filter Order Reduktion
Die direkteste Möglichkeit, die Rechenkosten zu senken, besteht darin, die Filterreihenfolge zu reduzieren. Weniger Koeffizienten bedeuten weniger MAC-Operationen pro Stichprobe. Wenn man jedoch die Reihenfolge ohne Berücksichtigung der Spezifikation senkt, verschlechtert sich oft die Leistung. Glücklicherweise können verschiedene Techniken dazu beitragen, die erforderliche Antwort mit einer minimalen Reihenfolge zu erreichen:
- Polloser Platzierungsoptimierung: Durch sorgfältiges Positionieren von Polen und Nullen in der z-Ebene können Designer Passband- und Stopband-Beschränkungen mit einem Filter niedrigerer Ordnung erfüllen als ein Standard-Butterworth- oder Chebyshev-Design. Zum Beispiel ergibt die Verwendung eines elliptischen Filters mit einer kleinen zulässigen Stopband-Ripple oft die niedrigste Ordnung für eine gegebene Übergangsbreite.
- Matched-z-Transformation: Beim Konvertieren von analogen Prototypen ist die bilineare Transformation Standard, aber die Matched-z-Transformation kann manchmal den Frequenzgang mit einer niedrigeren digitalen Ordnung beibehalten, wenn das analoge Filter einfach ist.
- Iterative Ordnungsreduktion: Beginnen Sie mit einem Design höherer Ordnung, wenden Sie dann Modellreduktionstechniken wie ausgewogene Abkürzung oder Hankel-Norm-Näherung an, um ein stabiles IIR-Filter mit reduzierter Ordnung zu erzeugen, das dem ursprünglichen Frequenzgang nahekommt.
In der Praxis kann ein IIR-Filter dritter Ordnung oft ein Design fünfter Ordnung mit vernachlässigbarem Leistungsverlust für Biosignalfilteraufgaben wie EMG- oder EKG-Baseline-Wanderungsentfernung ersetzen.
2. Koeffiziente Quantisierung und Wortlängenreduktion
Tragbare Mikrocontroller arbeiten typischerweise mit 16-Bit- oder 24-Bit-Fix-Point-Arithmetik. Die Verwendung von Gleitkomma mit voller doppelter Präzision ist sowohl stromhungrig als auch unnötig. Die Verringerung der Koeffizientenwortlänge von 32-Bit-Fließkomma auf beispielsweise 16-Bit-Fixkomma reduziert die Speicherauslastung um die Hälfte und beschleunigt arithmetische Operationen (insbesondere wenn der Prozessor ganzzahlige multiakkumulierte Anweisungen verwendet).
- Wähle das richtige Quantisierungsschema: Verwenden Sie das Q-Format (z. B. Q15 für 16-Bit signierte Bruchstücke), um Koeffizienten darzustellen. Runden auf den nächsten darstellbaren Wert kann Instabilität verursachen; unter Berücksichtigung der Polempfindlichkeit hilft, empfindlichen Koeffizienten mehr Bits zuzuordnen.
- Quantisierung mit statistischen Methoden optimieren: Verwenden Sie simulierte Glüh- oder genetische Algorithmen, um einen Satz quantisierter Koeffizienten zu finden, die immer noch die Filterspezifikation erfüllen.
- Verwenden Sie Potenzen von zwei Koeffizienten: Wenn Koeffizienten durch Summen von Potenzen von zwei angenähert werden können, kann die Multiplikation durch einige Verschiebungen und Additionen ersetzt werden, was die Rechenkomplexität drastisch reduziert.
Zum Beispiel kann ein IIR-Notchfilter zweiter Ordnung mit Koeffizienten, die zu Zweierpotenzen quantisiert sind, mit nur vier Schichtoperationen und drei Additionen pro Sample implementiert werden - perfekt für einen ARM Cortex-M0-Kern mit geringer Leistung.
3. Cascade vs. Direct Form Structures
Die Struktur, in der ein IIR-Filter implementiert ist, beeinflusst die Rechenlast, Stabilität und Empfindlichkeit gegenüber Quantisierung. Die gebräuchlichsten Formen sind Direct Form I und II und ihre transponierten Varianten. Für höherwertige Designs wird im Allgemeinen eine Kaskade von Abschnitten zweiter Ordnung (SOS) bevorzugt:
- Second-Ordnungen (Biquads): Jeder Abschnitt implementiert einen IIR-Filter zweiter Ordnung. Die Kaskadenstruktur reduziert die Koeffizientensensitivität, wodurch es einfacher wird, die Stabilität mit kurzen Wortlängen aufrechtzuerhalten. Die Berechnung pro Sample skaliert linear mit der Reihenfolge: Ein Filter sechster Ordnung benötigt drei Biquads, die jeweils 5 MACs benötigen, insgesamt 15 MACs pro Sample.
- Parallelform: Zerlegen Sie die Übertragungsfunktion in eine Summe von Unterabschnitten erster und zweiter Ordnung.
- Gitter/Leiter-Struktur: Während Gitterstrukturen im Allgemeinen rechenlastiger sind, bieten sie ausgezeichnete Stabilitätseigenschaften und sind weniger empfindlich auf Quantisierung. Sie können attraktiv sein, wenn die Ordnung niedrig ist (z. B. adaptive Filter).
Für Wearables ist die Kaskaden-Biquad-Implementierung oft die optimale Balance zwischen Rechenkosten, Stabilität und Speichernutzung. Hersteller wie Analog Devices und STMicroelectronics bieten Referenzimplementierungen, die für ihre Low-Power-MCUs optimiert sind.
4. Frequenzdomänenimplementierung mit FFT
Wenn die Filteraufgabe langanhaltende Signale oder mehrere Kanäle umfasst, kann die Zeitbereichs-IR-Filterung durch eine Überlappungs-Add- oder Überlappungs-Speichermethode mit der Fast Fourier Transform (FFT) ersetzt werden, die zwar kontraintuitiv erscheint (IIR ist bereits im Zeitbereich effizient), für sehr hochwertigste IIR-Filter (Reihenfolge > 50) oder bei der gleichzeitigen Verarbeitung mehrerer Kanäle kann die FFT-basierte Faltung effizienter werden.
- Partitionierte Faltung: Für Echtzeitanwendungen muss die Impulsantwort des IIR-Filters (der unendlich ist) verkürzt werden. Ein praktischer Ansatz besteht darin, den IIR-Filter mit einem langen FIR-Filter zu approximieren (wenn die Impulsantwort schnell abklingt) und dann FFT-basierte Faltung zu verwenden. Dies ist bei der tragbaren Audiorauschunterdrückung üblich.
- Unterbandfilterung: Einige Wearables verwenden Filterbanken (z. B. für die Spektralanalyse).
Frequenzdomänen-Methoden eignen sich am besten für Wearables mit viel RAM und einem Hardware-FFT-Beschleuniger (in vielen modernen Bluetooth-Audio-SoCs üblich).
5. Angemessene Filterung und Reduzierte Präzision Arithmetik
Nicht alle tragbaren Anwendungen erfordern die volle Präzision eines Lehrbuch-IR-Filters. Approximate-Computing-Techniken können eine geringe Genauigkeit für erhebliche Recheneinsparungen tauschen:
- Truncated Multiplikatoren: Verwenden Sie ungenaue arithmetische Schaltungen, die das Multiplikationsergebnis mit weniger Bits berechnen. Ein 10-Bit-Multiplikator anstelle von 16-Bit kann die Leistung in benutzerdefinierter Hardware um 30-40% senken.
- Statische Berechnung: Für Designs mit sehr geringem Stromverbrauch können stochastische Darstellungen (Bits von 1s und 0s) die Multiplikation mit einem einzigen Gatter implementieren, aber dies erfordert oft ein Nachdenken und eine Fehlerkorrektur.
- Downsampling und Upsampling: Wenn die Signalbandbreite breiter ist als nötig, dezimiere das Signal vor dem Filtern. IIR-Filterung mit einer niedrigeren Rate speichert pro Stichprobe MACs, und der Dezimationsfilter kann ein anderes kostengünstiges Design sein.
- Adaptive Ordnungsmodifikation: Verwenden Sie ein Filter variabler Ordnung, das mit einer hohen Ordnung während der Kalibrierung beginnt und die Ordnung reduziert (durch Ausschalten von Biquad-Abschnitten), wenn das Signal stationär ist.
Beispiel: Ein am Handgelenk getragenes, auf einem Beschleunigungsmesser basierendes Sturzerkennungssystem könnte einen IIR-Hochpass zweiter Ordnung anstelle eines vierten Ranges verwenden, wenn der Benutzer stillsteht, wodurch der Stromverbrauch um 20% reduziert wird.
6. Hardware-Software-Co-Design für Ultra-Low Power
Viele tragbare Geräte betten einen dedizierten digitalen Signalprozessor (DSP) oder einen Mikrocontroller mit einer Hardware-MAC-Einheit ein. Die Optimierung von IIR-Filtern für die spezifische Befehlssatz- und Speicherarchitektur ist entscheidend:
- Circular buffer addressing: Verwenden Sie den Hardware-Circular buffer für die Speicherung von Zustandsvariablen in Biquad-Strukturen.
- SIMD (Single Instruction, Multiple Data): Einige ARM Cortex-M4/7-Kerne unterstützen SIMD-Anweisungen, die zwei 16-Bit-MACs gleichzeitig verarbeiten. Wenn die Filterkoeffizienten auf 16 Bit quantisiert werden, können zwei Biquad-Abschnitte in einem einzigen MAC-Zyklus berechnet werden.
- Uhr-Gating- und Schlafmodi:Implementieren Sie den Filter in einer Aufgabe, die nur ausgeführt wird, wenn Sensordaten verfügbar sind. Verwenden Sie Schlafmodi mit geringem Stromverbrauch der MCU zwischen den Samples. Viele Mikrocontroller verfügen über Hardware-Filterperipheriegeräte (z. B. CORDIC, digitaler Filter-Coprozessor), die unabhängig voneinander ausgeführt werden können.
- Zero-Overhead-Schleifen: Entrollen Sie Schleifen für Filter mit fester Ordnung, um Abzweigungsstrafen zu beseitigen. Ein als Inline-Code implementierter IIR-Filter dritter Ordnung läuft bis zu 30% schneller als eine Loop-basierte Implementierung.
Praktische Fallstudie: EKG-Signalfilterung in einer Smartwatch
Um diese Strategien zu veranschaulichen, betrachten Sie ein Wearable, das ein Single-Lead-EKG bei 250 Hz erhält. Das Rohsignal enthält Basislinienwanderung (0,5 Hz und darunter), Stromleitungsstörungen (50/60 Hz) und hochfrequentes Muskelrauschen. Die Designziele sind, diese Artefakte mit einem Durchlassband von 0,5 bis 40 Hz und einer Stoppbanddämpfung von 20 dB bei 50 Hz abzulehnen.
Ein herkömmlicher Ansatz verwendet ein Butterworth-Bandpass-IIR-Filter vierter Ordnung (Kaskade von zwei Biquads). Im Gleitkomma eines Cortex-M4 mit geringer Leistung sind dafür etwa 10 MAC-Operationen pro Sample erforderlich. Der Gesamtstromverbrauch für die Filterung beträgt allein etwa 0,5 mW. Durch die Umschaltung auf ein elliptisches Design dritter Ordnung (Ordnungsreduzierung), das immer noch die 20 dB-Stopband-Anforderung erfüllt, sinkt die MAC-Zahl auf 7,5 pro Sample. Ferner reduziert die Quantisierung von Koeffizienten zu Q15-Festpunkt den Speicher und ermöglicht die Verwendung von 16-Bit-SIMD-MACs: Die Biquad-Kaskade kann nun in 4 Anweisungen pro Abschnitt berechnet werden, was insgesamt 8 Anweisungen pro Sample ergibt. Der Stromverbrauch sinkt auf 0,3 mW.
Durch die Verwendung eines Power-of-two-Koeffizienten für das 50-Hz-Notch-Filter (implementiert als separates Biquad) benötigt das Notch-Filter nur 3 Shift-Add-Operationen anstelle von 3 MACs. Die gesamte Filterkette verbraucht nur 0,2 mW - eine Reduzierung von 60% gegenüber dem ursprünglichen Design - und hält gleichzeitig die Signalqualitätsmetriken aufrecht (SNR innerhalb von 1 dB des Originals).
Diese Optimierung ermöglichte es dem Wearable, die EKG-Erfassung und -Filterung 24 Stunden lang kontinuierlich mit einer 150-mAh-Batterie durchzuführen, verglichen mit 16 Stunden mit der ursprünglichen Implementierung.
Herausforderungen und Trade-offs
Jede Optimierung bringt potenzielle Fallstricke mit sich. Die Reduzierung der Ordnung kann die Durchlasswelligkeit erhöhen oder die Gruppenverzögerung beeinträchtigen, was für Anwendungen problematisch sein kann, die eine Phasenausrichtung erfordern (z. B. Mehrkanal-EEG). Koeffiziente Quantisierung kann Pole nahe des Einheitskreises drücken und Instabilität verursachen. Um dies zu mildern, führen Sie immer eine Pol-Null-Analyse mit quantisierten Koeffizienten durch.
Entwickler sollten auch den Strom-Overhead-Koeffizienten aus dem Speicherzugriff berücksichtigen. Speicherkoeffizienten in Flash vs. SRAM beeinflussen die dynamische Leistung; die Verwendung von DMA-Transfers für Koeffizienten kann CPU-Zyklen reduzieren. Bei der Implementierung von Frequenzdomänen-Methoden verbraucht die FFT selbst Strom - nur verwenden, wenn die Filterreihenfolge hoch genug ist, um den Kreuzungspunkt wirtschaftlich zu machen (normalerweise Ordnung > 50).
Quantisierungsartefakte können bei Sinuswellentests nicht wahrnehmbar sein, werden aber in tatsächlichen EKG- oder PPG-Wellenformen bemerkbar.
Externe Ressourcen und weitere Lesung
- Analog Devices: Digital Signal Processing Education Library – Deckt IIR-Filterdesign und Fixpunktimplementierung ab.
- IEEE Paper: Power Optimized Digital Filters for Wearable Devices – Diskutiert die Partitionierung von Hardware-Software.
- Mouser Electronics: Low-Power Filtering in Wearables – Praktische Anleitung zur Komponentenauswahl.
- DSPRELated: Free IIR Filter Design Book – In-depth mathematical treatment of coefficient quantization.
Schlussfolgerung
IIR-Filter bleiben ein Eckpfeiler der Signalverarbeitung in tragbaren Geräten. Ihre rekursive Struktur bietet inhärent Implementierungen niedriger Ordnung, aber Designer müssen Einschränkungen von begrenzter Wortlänge, Speicher und Energie navigieren. Durch die Anwendung einer Kombination aus Auftragsreduzierung, cleverer Koeffizientenquantisierung, Kaskaden-Biquad-Strukturen, Approximation Computing und Hardware-Nutzung mit geringem Stromverbrauch können Entwickler die Rechenkomplexität um 50 bis 80 % reduzieren, ohne dabei wesentliche Leistung zu beeinträchtigen. Da die Kantenverarbeitung aus Datenschutz- und Latenzgründen weiterhin in Wearables übergeht, wird ein effizientes IIR-Filterdesign ein wichtiger Faktor für Gesundheitsmonitore der nächsten Generation, intelligentes Zubehör und AR / VR-Headsets sein. Die hier beschriebenen Strategien bieten ein praktisches Toolkit für jeden Ingenieur, der an eingebetteter Signalverarbeitung in batteriebetriebenen Geräten arbeitet.