Filter mit unendlicher Impulsantwort (IIR) sind für eine Vielzahl von Sensormessanwendungen nützlich, einschließlich der Entfernung von Messrauschen und der Unterdrückung unerwünschter Komponenten, wie z. B. Stromleitungsstörungen. Obwohl mehrere praktische Implementierungen für den IIR existieren, bietet die Struktur Direct form II Transposed die beste numerische Genauigkeit für die Fließkomma-Implementierung. Wenn jedoch eine Festkomma-Implementierung auf einem Mikrocontroller in Betracht gezogen wird, gilt die Struktur Direkte Form I aufgrund ihres großen Akkumulators, der eventuelle Zwischenüberläufe aufnimmt, als die beste Wahl. Diese Application Note befasst sich speziell mit dem Entwurf und der Implementierung von IIR-Biquad-Filtern auf einem Cortex-M-basierten Mikrocontroller mit dem ASN Filter Designer sowohl für Fließkomma- als auch für Festkomma-Anwendungen über das Arm CMSIS-DSP Software-Framework.

Es werden auch Details (einschließlich eines Referenzbeispielprojekts) zur Implementierung des IIR-Filters in Arm/Keils MDK-Industriestandard-Cortex-M-Mikrocontroller-Entwicklungskit gegeben.

Einführung

ASN Filter Designer bietet Ingenieuren eine leistungsfähige DSP-Experimentierplattform, die den Entwurf, das Experimentieren und den Einsatz komplexer IIR- und FIR (Finite Impulse Response)-Digitalfilterdesigns für eine Vielzahl von Sensormessanwendungen ermöglicht. Die fortschrittliche Funktionalität des Tools umfasst einen grafikbasierten Echtzeit-Filterdesigner, mehrere Filterblöcke, verschiedene mathematische I/O-Blöcke, symbolisches Live-Mathe-Scripting und Echtzeit-Signalanalyse (über einen integrierten Signalanalysator). Diese Vorteile in Verbindung mit der automatischen Dokumentation und Code-Generierungsfunktionalität ermöglichen es Ingenieuren, ein digitales Filter innerhalb von Minuten statt Stunden zu entwerfen und zu validieren.

Das Arm CMSIS-DSP (Cortex Microcontroller Software Interface Standard) Software-Framework ist eine reichhaltige Sammlung von über sechzig DSP-Funktionen (einschließlich verschiedener mathematischer Funktionen wie Sinus und Kosinus; IIR/FIR-Filterfunktionen, komplexe mathematische Funktionen und Datentypen), die von Arm entwickelt und für die Cortex-M-Prozessorkerne optimiert wurden.

Das Framework macht ausgiebig Gebrauch von hoch optimierten SIMD-Befehlen (Single Instruction, Multiple Data), die mehrere identische Operationen in einem einzigen Befehlszyklus ausführen. Die SIMD-Befehle (sofern vom Core unterstützt) in Verbindung mit anderen Optimierungen ermöglichen es Ingenieuren, schnell und einfach hochoptimierte Signalverarbeitungsanwendungen für Cortex-M-basierte Mikrocontroller zu erstellen.

Der ASN Filter Designer unterstützt das CMSIS-DSP Software-Framework vollständig, indem er über seine Code-Generierungs-Engine automatisch optimierten C-Code auf Basis der DSP-Funktionen des Frameworks erzeugt.

Entwurf von IIR-Filtern mit dem ASN Filter Designer

Der ASN Filter Designer bietet Ingenieuren eine einfach zu bedienende, intuitive grafische Design-Entwicklungsplattform für den Entwurf von digitalen IIR- und FIR-Filtern. Das Echtzeit-Entwurfsparadigma des Tools nutzt grafische Entwurfsmarker, die es dem Designer ermöglichen, seine Anforderungen an den Größen-Frequenzgang in Echtzeit einfach zu zeichnen und zu modifizieren, während das Tool automatisch die exakten Spezifikationen für sie ausfüllt.

Betrachten Sie den Entwurf der folgenden technischen Spezifikation:

Fs:  500Hz
Durchlassband-Frequenz:  0-40Hz
Typ:  Tiefpass
Verfahren:  Elliptisch
Sperrbanddämpfung @ 125Hz:   ≥ 80 dB
Passband ripple:  < 0.1dB
Ordnung  Klein wie möglich

Durch die grafische Eingabe der Spezifikationen in den ASN Filter Designer und die Feinabstimmung der Positionen der Entwurfsmarker entwirft das Tool das Filter automatisch als Biquad-Kaskade (diese Terminologie wird in den folgenden Abschnitten erläutert), wählt automatisch die erforderliche Filterordnung und erzeugt im Wesentlichen automatisch die genaue technische Spezifikation des Filters!

Der Frequenzgang eines elliptischen IIR-Tiefpassfilters 5. Ordnung, der die Spezifikationen erfüllt, ist unten dargestellt:

Tiefpaßfilter 5. Ordnung

Dieses Tiefpaßfilter 5. Ordnung bildet die Grundlage für die hier geführte Diskussion.

Biquad-IIR-Filter

Die hier besprochene IIR-Filter-Implementierung wird als Biquad bezeichnet, da sie zwei Pole und zwei Nullstellen hat, wie in Abbildung 1 dargestellt. Die Biquad-Implementierung ist besonders nützlich für Festkomma-Implementierungen, da die Auswirkungen der Quantisierung und der numerischen Stabilität minimiert werden. Der Gesamterfolg jeder Biquad-Implementierung hängt jedoch von der verfügbaren Zahlengenauigkeit ab, die ausreichend sein muss, um sicherzustellen, dass die quantisierten Pole immer innerhalb des Einheitskreises liegen.

Direkte Form I (Biquad) IIR-Filterrealisierung und Übertragungsfunktion

Abbildung 1: Direkte Form I (Biquad) IIR-Filterrealisierung und Übertragungsfunktion

Bei der Analyse von Abbildung 1 ist zu erkennen, dass die Biquad-Struktur eigentlich aus zwei Rückkopplungspfaden (skaliert mit \(a_1\) und \(a_2\)), drei Vorwärtspfaden (skaliert mit \(b_0, b_1\) und \(b_2\)) und einer Abschnittsverstärkung \(K\) besteht. Somit kann die Filterfunktion von Abbildung 1 durch die folgende einfache rekursive Gleichung zusammengefasst werden:

\(\displaystyle y(n)=K\times\Big[b_0 x(n) + b_1 x(n-1) + b_2 x(n-2)\Big] – a_1 y(n-1)-a_2 y(n-2)\)

Bei der Analyse der Gleichung fällt auf, dass die Biquad-Implementierung nur vier Additionen (die nur einen Akkumulator benötigen) und fünf Multiplikationen erfordert, was auf jedem Cortex-M-Mikrocontroller leicht untergebracht werden kann. Die Abschnittsverstärkung K kann auch vor der Implementierung mit den Vorwärtswegkoeffizienten vormultipliziert werden.

Eine Sammlung von Biquad-Filtern wird als Biquad-Kaskade bezeichnet, wie unten dargestellt.

Eine Sammlung von Biquad-Filtern wird als Biquad-Kaskade bezeichnet

Der ASN Filter Designer kann eine Kaskade von bis zu 50 Biquads entwerfen und implementieren (nur Professional Edition).

Fließkomma-Implementierung

Bei der Implementierung eines Filters in Fließkomma (d. h. unter Verwendung von Arithmetik mit doppelter oder einfacher Genauigkeit) gelten Direct Form II-Strukturen als bessere Wahl als die Direct Form I-Struktur. Die Direct Form II Transposed-Struktur gilt als die numerisch genaueste für die Fließkomma-Implementierung, da die unerwünschten Effekte der numerischen Übersättigung minimiert werden, wie bei der Analyse der Differenzgleichungen zu sehen ist.

Direct Form II Transposed-Struktur, Übertragungsfunktion und Differenzengleichungen

Abbildung 2 – Direct Form II Transposed-Struktur, Übertragungsfunktion und Differenzengleichungen

Die Filter Zusammenfassung (siehe Abbildung 3) bietet dem Designer einen detaillierten Überblick über das entworfene Filter, einschließlich einer ausführlichen Zusammenfassung der technischen Spezifikationen und der Filterkoeffizienten, was einen schnellen und einfachen Weg zur Dokumentation Ihres Entwurfs darstellt.

Der ASN Filter Designer unterstützt den Entwurf und die Implementierung sowohl von Single Section als auch von Biquad (Standardeinstellung) IIR-Filtern. Da das CMSIS-DSP-Framework jedoch keine direkte Unterstützung für Single Section IIR-Filter bietet, wird diese Funktion in dieser Application Note nicht behandelt.

Die Implementierung des CMSIS-DSP-Software-Frameworks erfordert die Vorzeicheninversion (d. h. das Umkehren des Vorzeichens) der Rückkopplungskoeffizienten. Um dies zu ermöglichen, kehrt die automatische Code-Generierungs-Engine des Tools das Vorzeichen der Rückkopplungskoeffizienten bei Bedarf automatisch um. In diesem Fall wird der Satz von Differenzgleichungen zu,

ASN Filter Designer: Filterzusammenfassung

\(y(n)=b_0 x(n)+w_1 (n-1)\)
\(w_1 (n)= b_1 x(n)+a_1 y(n)+w_2 (n-1)\)
\(w_2 (n)= b_2 x(n)+a_2 y(n)\)

Abbildung 3: ASN Filter Designer: Filterzusammenfassung

Automatische Code-Generierung für Arm-Prozessorkerne über CMSIS-DSP

Die automatische Code-Generierungs-Engine des ASN Filter Designers erleichtert den Export eines entworfenen Filters auf Cortex-M Arm-basierte Prozessoren über das CMSIS-DSP Software-Framework. Die integrierten Analyse- und Hilfefunktionen des Tools unterstützen den Designer bei der erfolgreichen Konfiguration des Designs für den Einsatz.

Alle Entwürfe von Fließkomma-IIR-Filtern müssen auf Single-Precision-Arithmetik und entweder auf einer Direct Form I oder Direct Form II Transposed-Filterstruktur basieren. Wie im vorherigen Abschnitt beschrieben, wird die Direct Form II Transposed-Struktur aufgrund ihrer höheren numerischen Genauigkeit für die Fließkomma-Implementierung befürwortet.

Die Einstellungen für Quantisierung und Filterstruktur finden Sie unter der Registerkarte Q (wie links dargestellt). Durch Einstellen von Arithmetic auf Single Precision und Structure auf Direct Form II Transposed und Klicken auf die Schaltfläche Apply wird die hier betrachtete IIR für das Software-Framework CMSIS-DSP konfiguriert.

Wählen Sie das Arm CMSIS-DSP-Framework aus der Auswahlbox im Filterübersichtsfenster aus:

Der automatisch generierte C-Code auf Basis des CMSIS-DSP-Frameworks für die direkte Implementierung auf einem Arm-basierten Cortex-M-Prozessor ist unten dargestellt:

Der automatisch generierte C-Code auf Basis des CMSIS-DSP-Frameworks für die direkte Implementierung auf einem Arm-basierten Cortex-M-Prozessor

Wie man sieht, generiert der automatische Code-Generator den gesamten Initialisierungscode, die Skalierung und die Datenstrukturen, die für die Implementierung des IIR über die CMSIS-DSP-Bibliothek benötigt werden. Dieser Code kann direkt in jedem Cortex-M-basierten Entwicklungsprojekt verwendet werden – ein vollständiges Keil-MDK-Beispiel ist auf der Website von Arm/Keil verfügbar. Beachten Sie, dass der Code-Generator des Werkzeugs standardmäßig Code für den Cortex-M4-Kern erzeugt. Bitte entnehmen Sie der folgenden Tabelle die #define-Definition, die für alle unterstützten Kerne erforderlich ist.

ARM_MATH_CM0Cortex-M0 core.ARM_MATH_CM4Cortex-M4 core.
ARM_MATH_CM0PLUSCortex-M0+ core.ARM_MATH_CM7Cortex-M7 core.
ARM_MATH_CM3Cortex-M3 core.  
ARM_MATH_ARMV8MBLARMv8M Baseline target (Cortex-M23 core).
ARM_MATH_ARMV8MMLARMv8M Mainline target (Cortex-M33 core).

Die automatische Code-Generierung von IIR-Filtern mit komplexen Koeffizienten wird derzeit nicht unterstützt.

Implementieren des Filters im Arm Keil’s MDK

Wie im vorherigen Abschnitt erwähnt, kann der vom Arm CMSIS-DSP Code-Generator erzeugte Code direkt in jedem Cortex-M-basierten Entwicklungsprojekt-Tooling verwendet werden, wie z. B. Arm Keils Industriestandard μVision MDK (Mikrocontroller-Entwicklungskit).

Ein komplettes μVision-Beispiel-IIR-Biquad-Filterprojekt kann von Keils Website heruntergeladen werden und ist, wie unten zu sehen, so einfach wie das Kopieren und Einfügen des Codes und das Vornehmen kleiner Anpassungen am Code.

Das Beispielprojekt nutzt die leistungsstarken Simulationsmöglichkeiten von μVision und ermöglicht die Evaluierung des IIR-Filters auf M0-, M3-, M4- bzw. M7-Cores. Als zusätzlicher Bonus kann auch der Logik-Analysator von μVision verwendet werden, so dass Vergleiche zwischen dem Signal-Analysator des ASN Filter Designers und der Realität auf einem Cortex-M-Kern möglich sind.

Festkomma-Implementierung

Wie bereits erwähnt, ist die direkte Form I-Filterstruktur die beste Wahl für die Festkomma-Implementierung. Vor der Implementierung der Differenzgleichung auf einem Festkommaprozessor müssen jedoch einige wichtige Überlegungen zur Datenskalierung berücksichtigt werden. Da das CMSIS-DSP-Framework nur die Datentypen Q15 und Q31 für IIR-Filter unterstützt, bezieht sich die folgende Diskussion auf eine Implementierung auf einer 16-Bit-Wort-Architektur, d. h. auf Q15.

Quantisierung

Um die Koeffizienten und Ein-/Ausgangszahlen korrekt darzustellen, wird die Systemwortlänge (16 Bit für die Zwecke dieser Application Note) zunächst in ihre Anzahl an Ganzzahlen und Nachkommastellen aufgeteilt. Das allgemeine Format ist gegeben durch:

Q Num of Integers.Fraction length

Wenn wir annehmen, dass alle Datenwerte innerhalb eines Maximal-/Minimalbereichs von \(\pm 1\) liegen, können wir das Format Q0.15 verwenden, um alle Zahlen entsprechend darzustellen. Beachten Sie, dass das Q0.15-Format (oder einfach Q15) ein Maximum von \(\displaystyle 1-2^{-15}=0.9999=0x7FFF\) und ein Minimum von \(-1=0x8000\) (Zweierkomplement-Format) darstellt.

Der ASN Filter Designer kann für die Festkomma-Q15-Arithmetik konfiguriert werden, indem die Spezifikationen für die Wortlänge und die Fraktale Länge in der Registerkarte Q eingestellt werden (siehe Abschnitt Konfiguration für die Details). Ein offensichtliches Problem, das sich bei Biquads zeigt, ist jedoch der Zahlenbereich der Koeffizienten. Da Pole überall innerhalb des Einheitskreises platziert werden können, wird das resultierende Polynom, das für die Implementierung benötigt wird, oft im Bereich \(\pm 2\) liegen, was eine Q14-Arithmetik erfordern würde. Um dieses Problem zu umgehen, werden alle Zähler- und Nennerkoeffizienten über einen biquadischen Post-Scaling-Faktor skaliert, wie unten beschrieben.

Post-Scaling-Faktor

Um sicherzustellen, dass die Koeffizienten in die Spezifikationen für die Wortlänge und die fraktionale Länge passen, enthalten alle IIR-Filter einen Post-Scaling-Faktor, der die Zähler- und Nennerkoeffizienten entsprechend skaliert. Als Folge dieser Skalierung muss der Post-Scaling-Faktor in die Filterstruktur einbezogen werden, um einen korrekten Betrieb zu gewährleisten.

Das Konzept der Post-Scaling wird im Folgenden für eine Biquad-Implementierung der direkten Form I dargestellt.

Das Konzept der Post-Scaling für eine Biquad-Implementierung der direkten Form I

Abbildung 4: Direkte Form I-Struktur mit Post-Scaling

Durch Vormultiplikation der Zählerkoeffizienten mit der Querschnittsverstärkung \(K\) kann nun jeder Koeffizient mit \(G\) skaliert werden, d. h. \(\displaystyle b_0=\frac{b_0}{G}, b_1=\frac{b_1}{G}, a_1=\frac{a_1}{G}, a_2=\frac{a_2}{G}\) usw. Daraus ergibt sich nun die folgende Differenzengleichung:

\(\displaystyle y(n)=G \times\Big [b_0 x(n) + b_1 x(n-1) + b_2 x(n-2) – a_1 y(n-1)-a_2 y(n-2)\Big]\)

Alle im Tool implementierten IIR-Strukturen beinhalten das Konzept des Post-Scaling-Faktors. Diese Skalierung ist für die Implementierung über das Arm CMSIS-DSP-Framework obligatorisch – weitere Details finden Sie im Abschnitt “Konfiguration”.

Verstehen der Filterzusammenfassung

Um die in der ASN Filter Designer Filterzusammenfassung dargestellten Informationen vollständig zu verstehen, zeigt das folgende Beispiel die Filterkoeffizienten, die mit Double Precision Arithmetik und mit Fixed Point Q15 Quantisierung erhalten wurden.

Anwendung der Festkomma-Q15-Arithmetik (beachten Sie die Auswirkungen der Quantisierung auf die Koeffizientenwerte):

Konfigurieren des ASN Filter Designers für Festkomma-Arithmetik

Um ein IIR-Fixed-Point-Filter über das CMSIS-DSP-Framework zu implementieren, müssen alle Designs auf der Fixed-Point-Arithmetik (entweder Q15 oder Q31) und der Direct-Form-I-Filterstruktur basieren.

Die Einstellungen für Quantisierung und Filterstruktur finden Sie unter der Registerkarte Q (wie links dargestellt): Wenn Sie Arithmetic auf Fixed Point und Structure auf Direct Form I einstellen und auf die Schaltfläche Apply klicken, wird die hier betrachtete IIR für das CMSIS-DSP-Software-Framework konfiguriert.

Der Post-Scaling-Faktor ist im CMSIS-DSP-Software-Framework tatsächlich als \( \log_2 G\) implementiert (d. h. eine nach links verschobene Skalierungsoperation, wie in Abbildung 4 dargestellt).

Eingebaute Analytik: Das Tool analysiert automatisch die Filterkoeffizienten der Kaskade und wählt einen geeigneten Skalierungsfaktor. Wie oben zu sehen, ist der größte Minimalwert -1,63143, daher ist ein Post-Scaling-Faktor von 2 erforderlich, um alle Koeffizienten in die Q15-Arithmetik “einzupassen”.

Vergleich von Spektren, die durch unterschiedliche Rechenregeln erhalten wurden

Um die Übersichtlichkeit und die allgemeine Berechnungsgeschwindigkeit zu verbessern, zeigt der ASN Filter Designer nur Spektren (d.h. Magnitude, Phase usw.) an, die auf den aktuellen arithmetischen Regeln basieren. Dies ist etwas anders als bei anderen Werkzeugen, die Multispektren anzeigen, die durch (z. B.) Festkomma– und Doppelpräzisionsarithmetik erhalten wurden. Für alle Benutzer, die Spektren vergleichen möchten, können Sie einfach zwischen den arithmetischen Einstellungen wechseln, indem Sie die Arithmetic methode ändern. Der Designer berechnet dann automatisch die Filterkoeffizienten unter Verwendung der gewählten Rechenregeln und der aktuellen technischen Spezifikation neu. Das Diagramm wird dann unter Verwendung der aktuellen Zoom-Einstellungen aktualisiert.

Automatische Code-Generierung für das Arm CMSIS-DSP-Framework

Wie bei der Fließkomma-Arithmetik wählen Sie das Arm CMSIS-DSP-Framework aus der Auswahlbox im Filter-Übersichtsfenster aus:

Der automatisch generierte C-Code auf Basis des CMSIS-DSP-Frameworks für die direkte Implementierung auf einem Arm-basierten Cortex-M-Prozessor ist unten dargestellt:

Wie beim Fließkommafilter generiert der automatische Code-Generator den gesamten Initialisierungscode, die Skalierung und die Datenstrukturen, die zur Implementierung des IIR über die CMSIS-DSP-Bibliothek benötigt werden. Dieser Code kann direkt in jedem Cortex-M-basierten Entwicklungsprojekt verwendet werden – ein vollständiges Keil-MDK-Beispiel ist auf der Website von Arm/Keil verfügbar. Beachten Sie, dass der Code-Generator des Werkzeugs standardmäßig Code für den Cortex-M4-Kern erzeugt. Bitte entnehmen Sie der folgenden Tabelle die #define -Definition, die für alle unterstützten Kerne erforderlich ist.

ARM_MATH_CM0Cortex-M0 core.ARM_MATH_CM4Cortex-M4 core.
ARM_MATH_CM0PLUSCortex-M0+ core.ARM_MATH_CM7Cortex-M7 core.
ARM_MATH_CM3Cortex-M3 core.  
ARM_MATH_ARMV8MBLARMv8M Baseline target (Cortex-M23 core).
ARM_MATH_ARMV8MMLARMv8M Mainline target (Cortex-M33 core).

Der Hauptcode der Testschleife (nicht gezeigt) dreht sich um die Funktion arm_biquad_cascade_df2T_f32(), die die Filterung eines Blocks von Eingangsdaten durchführt.

IIR-Filter mit komplexen Koeffizienten werden derzeit nicht unterstützt.

Validierung des Entwurfs mit dem Signal Analyser

Ein Entwurf kann mit dem Signal Analyser validiert werden, wobei sowohl Zeit- als auch Frequenzbereichsdiagramme unterstützt werden. Ein umfassender Signalgenerator ist vollständig in den Signalanalysator integriert, so dass die Entwickler ihre Filter mit einer Vielzahl von Eingangssignalen testen können, wie z. B. Sinuswellen, weißes Rauschen oder sogar externe Testdaten.

Für Festkomma-Implementierungen erlaubt das Tool den Entwicklern, die Overflow-Arithmetikregeln als: Saturate oder Wrap. Außerdem kann die Accumulator Word Length zwischen 16 und 40 Bit eingestellt werden, so dass die Entwickler schnell die optimalen Einstellungen für ihre Anwendung finden können.

 

Zusätzliche Ressourcen

  1. Digital signal processing: principles, algorithms and applications, J.Proakis and D.Manoloakis
  2. Digital signal processing: a practical approach, E.Ifeachor and B.Jervis.
  3. Digital filters and signal processing, L.Jackson.
  4. Step by step video tutorial of designing an IIR and deploying it to Keil MDK uVision.
  5. Implementing Biquad IIR filters with the ASN Filter Designer and the Arm CMSIS-DSP software framework (ASN-AN025)
  6. Keil MDK uVision example IIR filter project

Allpassfilter bieten eine einfache Möglichkeit, den Phasengang eines IIR zu ändern/verbessern, ohne den Betragsfrequenzgang zu beeinflussen. Als solche werden sie allgemein als Phasenentzerrer bezeichnet und haben insbesondere in digitalen Audioanwendungen Verwendung gefunden.
In seiner einfachsten Form kann ein Filter aus einer Übertragungsfunktion erster Ordnung konstruiert werden, d. h.,

\( A(z)=\Large{\frac{r+z^{-1}}{1+r z^{-1}}}  \, \,  \normalsize{; r<1} \)

Bei der Analyse von \(\small A(z)\) fällt auf, dass der Pol und die Nullstelle auf der reellen Achse der z-Ebene liegen und dass der Pol am Radius \(\small r\) eine Nullstelle am Radius \(\small 1/r\)hat, so dass die Pole und Nullstellen reziprok zueinander sind. Diese Eigenschaft ist der Schlüssel zum Konzept des Allpassfilters, wie wir jetzt sehen werden, indem wir das Konzept weiter zu einem Allpassfilter zweiter Ordnung erweitern:

\( A(z)=\Large\frac{r^2-2rcos \left( \frac{2\pi f_c}{fs}\right) z^{-1}+z^{-2}}{1-2rcos \left( \frac{2\pi f_c}{fs}\right)z^{-1}+r^2 z^{-2}} \)

Dabei ist \(\small f_c\) die Mittenfrequenz, \(\small r\) der Radius der Pole und Allpassfilters, Allpass-Pol-Nullpunkts \(\small f_s\) is the sampling frequency. Beachten Sie, wie die Koeffizienten von Zähler und Nenner als spiegelbildliches Paar zueinander angeordnet sind. Die Spiegeleigenschaft ist es, die dem Allpassfilter seine wünschenswerte Eigenschaft verleiht, nämlich dem Konstrukteur zu ermöglichen, den Phasengang zu verändern, während der Betragsgang über das gesamte Frequenzspektrum konstant oder flach bleibt.

Allpassfilter, Allpassfilter, Allpass, Phasenentzerrer, Änderung/Verbesserung des Phasengangs eines IIR-Filters ohne Beeinflussung seines BetragsgangsFrequenzgang eines Allpassfilters:
Beachten Sie das konstante Betragsspektrum (in blau dargestellt).

Implementierung

Ein Allpassfilter kann in ASN FilterScript wie folgt implementiert werden:

ClearH1;  // clear primary filter from cascade

interface radius = {0,2,0.01,0.5};   // radius value
interface fc = {0,fs/2,1,fs/10};     // frequency value

Main()
Num = {radius^2,-2*radius*cos(Twopi*fc/fs),1};
Den = reverse(Num); // mirror image of Num
Gain = 1;

Eine ausführliche Beschreibung der Phasenentzerrung von IIR-Filtern und des Entwurfswerkzeugs APF (Allpassfilter) des ASN-Filterdesigners finden Sie im Folgenden article.

ASN Filter Designer DSP

Download Demo

Lizenzierung

Ein Bell-Filter (also Glockenfilter oder Peaking-Filter genannt) ist ein Audio-Entzerrungsfilter, das die Amplitude einer bestimmten Gruppe von Frequenzen um eine Mittenfrequenz herum anhebt oder abschwächt, um eine Amplitudenentzerrung durchzuführen. Wie in der Grafik unten zu sehen ist, hat das Filter seinen Namen von der Form seines Amplitudenspektrums (blaue Linie), die einer Glockenkurve ähnelt.

Frequenzgang (Betrag in blau, Phase in violett) eines Bell-Filters 2. Ordnung mit Spitzenwert bei 125 Hz

Allpass-Filter

Das Herzstück des Bell-Filters ist das so genannte Allpassfilter. Allpassfilter bieten eine einfache Möglichkeit, den Phasengang eines IIR-Filters zu verändern/verbessern, ohne den Betragsgang zu beeinflussen. Als solche werden sie üblicherweise als Phasenentzerrer bezeichnet und haben insbesondere in digitalen Audioanwendungen Verwendung gefunden

Ein Allpassfilter zweiter Ordnung ist definiert als:

\( A(z)=\Large\frac{r^2-2rcos \left( \frac{2\pi f_c}{fs}\right) z^{-1}+z^{-2}}{1-2rcos \left( \frac{2\pi f_c}{fs}\right)z^{-1}+r^2 z^{-2}} \)

Beachten Sie, dass die Koeffizienten des Zählers und des Nenners als spiegelbildliches Paar zueinander angeordnet sind. Die Spiegeleigenschaft ist es, die dem Allpassfilter seine wünschenswerte Eigenschaft verleiht, nämlich die Möglichkeit, den Phasengang zu verändern, während der Betragsgang über das gesamte Frequenzspektrum konstant oder flach bleibt.

Ein Bell-Filter kann aus dem \(A(z)\)) -Filter durch die folgende Übertragungsfunktion konstruiert werden:

\(H(z)=Largefrac{(1+K)+A(z)(1-K)}{2}\)

Nach einigen algebraischen Vereinfachungen erhalten wir die Übertragungsfunktion für das Peaking- oder Bell-Filter als:

\(H(z)=\Large{\frac{1}{2}}\left[\normalsize{(1+K)} + \underbrace{\Large\frac{k_2 + k_1(1+k_2)z^{-1}+z^{-2}}{1+k_1(1+k_2)z^{-1}+k_2 z^{-2}}}_{all-pass filter}\normalsize{(1-K)} \right] \)

  • \(K\) dient zur Einstellung der Verstärkung und des Vorzeichens des Peaks
  • \(k_1\) stellt die Mittenfrequenz des Peaks ein
  • \(k_2\) stellt die Bandbreite des Peaks ein

Implementierung

Ein Bell-Filter kann einfach in ASN FilterScript wie folgt implementiert werden:

ClearH1;  // clear primary filter from cascade
interface BW = {0,2,0.1,0.5}; // filter bandwidth
interface fc = {0, fs/2,fs/100,fs/4}; // peak/notch centre frequency
interface K = {0,3,0.1,0.5}; // gain/sign

Main()

k1=-cos(2*pi*fc/fs);
k2=(1-tan(BW/2))/(1+tan(BW/2));

Pz = {1,k1*(1+k2),k2}; // define denominator coefficients
Qz = {k2,k1*(1+k2),1}; // define numerator coefficients
Num = (Pz*(1+K) + Qz*(1-K))/2;
Den = Pz;
Gain = 1;

Dieser Code kann nun verwendet werden, um ein geeignetes Bell-Filter zu entwerfen, wobei die genauen Werte von \(K, f_c\) und \(BW\) einfach gefunden werden können, indem man die Schnittstellenvariablen verändert und die Ergebnisse in Echtzeit sieht, wie unten beschrieben.

Entwerfen des Filters im laufenden Betrieb

Das Herzstück der Interaktivität der FilterScript-IDE (Integrierte Entwicklungsumgebung) sind die so genannten Interface-Variablen. Eine Schnittstellenvariable ist, einfach ausgedrückt, eine skalare Eingangsvariable, die verwendet werden kann, um einen symbolischen Ausdruck zu modifizieren, ohne dass der Code neu kompiliert werden muss – so können Designer “on the fly” entwerfen und schnell zu einer optimalen Lösung gelangen.

Wie im obigen Code-Beispiel zu sehen ist, müssen Schnittstellenvariablen im Initialisierungsabschnitt des Codes definiert werden und können Konstanten (z. B. fs und pi) und einfache mathematische Operatoren wie Multiplikation * und / Dividieren enthalten. Wobei das Hinzufügen von Funktionen zu einer Schnittstellenvariablen nicht unterstützt wird.

Eine Schnittstellenvariable wird als Vektorausdruck definiert:

interface name = {minimum, maximum, step_size, default_value};

Dabei müssen alle Einträge reelle skalare Werte sein. Vektoren und komplexe Werte werden nicht kompiliert.

[arve mp4=”https://www.advsolned.com/wp-content/uploads/2018/07/peakingfilter.mp4″ align=”right” loop=”true” autoplay=”true” nodownload nofullscreen noremoteplayback… /]

Aktualisierungen in Echtzeit

Alle Schnittstellenvariablen werden über die GUI des Schnittstellenvariablen-Controllers geändert. Verwenden Sie nach dem Kompilieren des Codes den Schnittstellenvariablen-Controller, um die Werte der Schnittstellenvariablen zu verändern und die Auswirkungen auf die Übertragungsfunktion zu sehen. Wenn Sie mit Live-Audio testen, können Sie eine geladene Audiodatei streamen und die Schnittstellenvariablen in Echtzeit anpassen, um die Auswirkungen der neuen Einstellungen zu hören.

IIR-Filter (unendliche Impulsantwort) werden im Allgemeinen für Anwendungen gewählt, bei denen die lineare Phase nicht allzu wichtig ist und der Speicherplatz begrenzt ist. Sie werden häufig bei der Audio-Entzerrung, der Signalverarbeitung von biomedizinischen Sensoren, intelligenten IoT/IIoT-Sensoren und Hochgeschwindigkeits-Telekommunikations-/RF-Anwendungen eingesetzt und bilden einen entscheidenden Baustein im algorithmischen Design. Ein praktischer Leitfaden für die am häufigsten verwendeten oder klassischen IIR-Digitalfilter-Entwurfsmethoden: Butterworth, Tschebyscheff Typ I, Tschebyscheff Typ II und Elliptisch

Vorteile

  • Geringer Implementierungsaufwand: benötigt weniger Koeffizienten und Speicher als FIR-Filter, um einen ähnlichen Satz an Spezifikationen zu erfüllen, d. h. Grenzfrequenz und Stoppbanddämpfung
  • Geringe Latenz: geeignet für Echtzeit-Steuerung und sehr schnelle HF-Anwendungen aufgrund des geringen Koeffizienten-Footprints
  • Kann zur Nachahmung der Eigenschaften von analogen Filtern unter Verwendung von s-z-Ebenen-Mapping-Transformationen verwendet werden

Nachteile

  • Nichtlineare Phaseneigenschaften
  • Erfordert mehr Skalierung und numerische Überlaufanalyse, wenn in Festkomma implementiert
  • Aufgrund der Rückkopplungspfade weniger numerisch stabil als ihre FIR-Pendants (Finite-Impulse-Response)

Definition

Ein IIR-Filter wird durch seine theoretisch unendliche Impulsantwort kategorisiert,

\(\displaystyle
y(n)=\sum_{k=0}^{\infty}h(k)x(n-k)
\)

Praktisch gesehen ist es nicht möglich, den Ausgang eines IIR mit dieser Gleichung zu berechnen. Daher kann die Gleichung in Form einer endlichen Anzahl von Polen \(p\) und Nullstellen \(q\)umgeschrieben werden, wie durch die lineare Differenzgleichung mit konstantem Koeffizienten definiert, die wie folgt lautet

\(\displaystyle
y(n)=\sum_{k=0}^{q}b(k)x(n-k)-\sum_{k=1}^{p}a(k)y(n-k)
\)

wobei \(a(k)\) und \(b(k)\) die Nenner- und Zähler-Polynomkoeffizienten des Filters sind, deren Wurzeln gleich den Polen bzw. Nullstellen des Filters sind. Daher kann eine Beziehung zwischen der Differenzengleichung und der z-Transformation (Übertragungsfunktion) unter Verwendung der Verzögerungseigenschaft der z-Transformation so definiert werden, dass,

\(\displaystyle
\sum_{k=0}^{q}b(k)x(n-k)-\sum_{k=1}^{p}a(k)y(n-k)\quad\stackrel{\displaystyle\mathcal{Z}}{\longleftrightarrow}\quad\frac{\sum\limits_{k=0}^q b(k)z^{-k}}{1+\sum\limits_{k=1}^p a(k)z^{-k}}
\)

Wie Sie sehen, ist die Übertragungsfunktion eine Frequenzbereichsdarstellung des Filters. Beachten Sie auch, dass die Pole auf die Ausgangsdaten wirken und die Nullen auf die Eingangsdaten. Da die Pole auf die Ausgangsdaten wirken und die Stabilität beeinflussen, ist es für die BIBO-Stabilität (bounded input, bounded output) wichtig, dass ihre Radien innerhalb des Einheitskreises bleiben (d. h. <1). Die Radien der Nullstellen sind weniger kritisch, da sie die Stabilität des Filters nicht beeinflussen. Dies ist der Hauptgrund, warum FIR-Filter (endliche Impulsantwort) mit nur Nullen immer stabil sind.

Eine Diskussion von IIR-Filterstrukturen sowohl für Festkomma als auch für Fließkomma finden Sie hier.

Klassische IIR-Entwurfsmethoden

Es folgt nun eine Diskussion der am häufigsten verwendeten oder klassischen IIR-Entwurfsmethoden (Butterworth, Tschebyscheff und Elliptisch). Wer nach allgemeineren Beispielen sucht, findet im ASN-Blog viele Artikel zu diesem Thema.

Elliptisch, Durchlassband-Welligkeit, Übergangsband und Stopband-Dämpfung, IIR-Filter

Der grafische Designer von ASN Filter Designer unterstützt den Entwurf der folgenden vier klassischen IIR-Entwurfsmethoden:

  • Butterworth
  • Tschebyscheff-Typ I
  • Tschebyscheff-Typ II
  • Elliptisch

Der für die Berechnung verwendete Algorithmus entwirft zunächst ein analoges Filter (über einen analogen Entwurfsprototyp) mit den gewünschten Filterspezifikationen, die durch die grafischen Entwurfsmarker vorgegeben werden – d.h. Durchlass-/Sperrbandwelligkeit und Grenzfrequenzen. Das resultierende analoge Filter wird dann über die Bilineare z-Transformation in sein diskretes Äquivalent zur Realisierung transformiert.

Biquad

Für die numerische Stabilität werden Biquad-Implementierungen empfohlen.

Der Bessel-Prototyp wird nicht unterstützt, da die Bilinear-Transformation die linearen Phaseneigenschaften verzerrt. Eine Methode zum Entwurf von Bessel-Filtern ist jedoch in ASN FilterScript verfügbar.

Wie unten beschrieben, hat jede Methode ihre Vor- und Nachteile, aber im Allgemeinen sollte die elliptische Methode als erste Wahl betrachtet werden, da sie die Entwurfsspezifikationen mit der niedrigsten Ordnung aller Methoden erfüllt. Diese wünschenswerte Eigenschaft geht jedoch auf Kosten der Welligkeit sowohl im Durchlass- als auch im Sperrbereich und der sehr nichtlinearen Durchlassband-Phaseneigenschaften. Daher sollte das elliptische Filter nur in Anwendungen eingesetzt werden, bei denen der Speicherplatz begrenzt ist und die Linearität der Durchlassphase weniger wichtig ist.

Die Butterworth- und Tschebyscheff-Typ-II-Methoden haben flache Durchlassbänder (keine Welligkeit), was sie zu einer guten Wahl für DC- und Niederfrequenz-Messanwendungen macht, wie z. B. Brückensensoren (z. B. Kraftmesszellen). Diese wünschenswerte Eigenschaft geht jedoch auf Kosten breiterer Übergangsbänder, was zu einem niedrigen Übergang vom Durchlass- zum Sperrbereich führt (langsamer Roll-Off). Die Tschebyscheff-Methode Typ I und die elliptische Methode rollen schneller ab, haben aber eine Durchlassband-Welligkeit und eine sehr nichtlineare Durchlassband-Phasenkennlinie.

Vergleich der klassischen Entwurfsmethoden

Die unten gezeigten Frequenzgangdiagramme zeigen die Unterschiede zwischen den verschiedenen Prototyp-Entwurfsmethoden für ein Tiefpassfilter fünfter Ordnung mit den gleichen Spezifikationen. Wie zu sehen ist, rollt der Butterworth-Frequenzgang am langsamsten ab und der elliptische am schnellsten.

Elliptisch

Elliptische Filter bieten steilere Abrollcharakteristiken als Butterworth- oder Tschebyscheff-Filter, sind aber sowohl im Durchlass- als auch im Sperrbereich gleichschwebend. Im Allgemeinen erfüllen elliptische Filter die Entwurfsspezifikationen mit der niedrigsten Ordnung aller hier besprochenen Methoden.

Elliptischer Filter 5. Ordnung, Elliptic Filter

Filtereigenschaften

  • Schnellster Roll-Off von allen unterstützten Prototypen
  • Gleichwelligkeit sowohl im Durchlass- als auch im Sperrbereich
  • Filter niedrigster Ordnung von allen unterstützten Prototypen
  • Nichtlineare Durchlassband-Phaseneigenschaften
  • Gute Wahl für Echtzeitsteuerung und Anwendungen mit hohem Durchsatz (RF-Anwendungen)

Butterworth

Butterworth-Filter haben einen maximal flachen Amplitudengang im Durchlassbereich und eine monotone Gesamtcharakteristik, was sie zu einer guten Wahl für DC- und Niederfrequenz-Messanwendungen macht, z. B. für Lastzellen. Diese höchst wünschenswerte “Glätte” wird jedoch mit einer geringeren Abflachung erkauft. Infolgedessen hat die Butterworth-Methode die langsamste Abrollcharakteristik aller hier besprochenen Methoden.

Butterworth-Filter 5. Ordnung

Filtereigenschaften

  • Glatter monotoner Verlauf (keine Welligkeit)
  • Langsamster Roll-Off für äquivalente Ordnung
  • Höchste Ordnung von allen unterstützten Prototypen
  • Linearerer Phasengang im Durchlassbereich als alle anderen Methoden
  • Gute Wahl für DC-Messungen und Audioanwendungen

Tschebyscheff-Typ I

Tschebyscheff-Filter vom Typ I sind im Durchlassbereich äquirippel und im Sperrbereich monoton. Als solche rollen Typ-I-Filter schneller ab als Tschebyscheff-Typ-II- und Butterworth-Filter, allerdings auf Kosten einer größeren Durchlassbandwelligkeit.

Tschebyscheff I; Tschebyscheff-Filter Typ 1

Filtereigenschaften

  • Durchlassband-Welligkeit
  • Maximal flacher Sperrbereich
  • Schnellerer Roll-Off als Butterworth und Tschebyscheff Typ II
  • Guter Kompromiss zwischen Elliptic und Butterworth

Tschebyscheff-Typ II

Tschebyscheff-Filter vom Typ II sind monoton im Durchlassbereich und gleichwellig im Sperrbereich, was sie zu einer guten Wahl für Brückensensoranwendungen macht. Obwohl Filter, die mit der Typ-II-Methode entworfen wurden, langsamer abrollen als solche, die mit der Tschebyscheff-Typ-I-Methode entworfen wurden, ist der Roll-Off schneller als bei Filtern, die mit der Butterworth-Methode entworfen wurden.

Tschebyscheff-Typ II 5. Ordnung

Filtereigenschaften

  • Maximal flacher Durchlassbereich
  • Schnellerer Roll-Off als Butterworth
  • Langsamerer Roll-Off als Tschebyscheff Typ I
  • Gute Wahl für DC-Messanwendungen

 

 

Demo herunterladen

Lizenzierung

Un filtre numérique est un algorithme mathématique qui opère sur un ensemble de données numériques (par exemple, des données de capteur) afin d’extraire les informations intéressantes et de supprimer toute information indésirable. Parmi les applications de ce type de technologie, citons la suppression des anomalies dans les données de capteurs ou même le nettoyage du bruit sur un signal mesuré pour faciliter l’analyse des données. Mais comment choisir le meilleur type de filtre numérique pour notre application ? Et quelles sont les différences entre un filtre RII et un filtre RIF?

Les filtres numériques sont divisés en deux catégories :

  • Réponse impulsionnelle infinie (RII)
  • Réponse impulsionnelle finie (RIF)

Comme leur nom l’indique, chaque type de filtre est classé en fonction de la longueur de sa réponse impulsionnelle. Toutefois, avant de commencer une analyse mathématique détaillée, il est prudent d’apprécier les différences de performances et de caractéristiques de chaque type de filtre.

Exemple

Afin d’illustrer les différences entre un RII et un RIF, la réponse en fréquence d’un RIF d’ordre 14 (ligne pleine) et d’un RII de type I de Chebyshev d’ordre 4 (ligne pointillée) est présentée ci-dessous à la figure 1. Remarquez que bien que les spectres d’amplitude aient un degré d’atténuation similaire, le spectre de phase du filtre RII est non linéaire dans la bande passante (\(\small 0\rightarrow7.5Hz\)), et devient très non linéaire à la fréquence de coupure, \(\small f_c=7.5Hz\). Notez également que le filtre RIF nécessite un plus grand nombre de coefficients (15 contre 10 pour le RII) pour correspondre aux caractéristiques d’atténuation du RII.

RIF vs RII : réponse en fréquence d'un FIR d'ordre 14 (ligne pleine), et d'un IIR de type I de Chebyshev d'ordre 4 (ligne pointillée) ; Filtre RIF, Filtre RII
Figure 1: Figure 1 : RIF vs RII : réponse en fréquence d’un RIF de 14ème ordre (ligne pleine), et d’un RII de type I de Tchebychev de 4ème ordre (ligne pointillée)

Ce ne sont là que quelques-unes des différences entre les deux types de filtres. Un résumé détaillé des principaux avantages et inconvénients de chaque type de filtre va maintenant suivre.

Filtres RII

Les filtres RII (Réponse impulsionnelle infinie) sont généralement choisis pour les applications où la phase linéaire n’est pas trop importante et où la mémoire est limitée. Ils ont été largement déployés dans l’égalisation audio, le traitement du signal des capteurs biomédicaux, les capteurs intelligents IoT/IIoT et les applications de télécommunication/RF à haut débit.

Avantages

  • Faible coût de mise en œuvre: nécessite moins de coefficients et de mémoire que les filtres RIF pour satisfaire un ensemble similaire de spécifications, à savoir la fréquence de coupure et l’atténuation de la bande d’arrêt
  • Faible latence: : sconvient aux applications de contrôle en temps réel et aux applications RF à très haut débit en raison du faible nombre de coefficients
  • Équivalent analogique: peut être utilisé pour imiter les caractéristiques des filtres analogiques en utilisant des transformations de mappage dans le plan s-z

Inconvénients

  • Caractéristiques de phase non linéaires: Les caractéristiques de phase d’un filtre RII sont généralement non linéaires, en particulier à proximité des fréquences de coupure. Des filtres d’égalisation passe-tout peuvent être utilisés afin d’améliorer les caractéristiques de phase de la bande passante
  • Analyse plus détaillée : Nécessite plus d’analyse de mise à l’échelle et de débordement numérique lorsqu’il est implémenté en virgule fixe. La structure du filtre de forme directe II est particulièrement sensible aux effets de la quantification, et nécessite une attention particulière lors de la phase de conception
  • Stabilité numérique: : Moins stable numériquement que leurs homologues RIF (réponse impulsionnelle finie), en raison des chemins de rétroaction

Filtres RIF

Les filtres RIF (réponse impulsionnelle finie) sont généralement choisis pour les applications où la phase linéaire est importante et où une quantité décente de mémoire et de performance de calcul est disponible. Ils sont largement utilisés dans les applications d’amélioration des signaux audio et biomédicaux. Leur structure entièrement nulle (discutée ci-dessous) garantit qu’ils ne deviennent jamais instables pour n’importe quel type de signal d’entrée, ce qui leur donne un net avantage sur les filtres RII.

Avantages

  • Phase linéaire: Les RIF peuvent être facilement conçus pour avoir une phase linéaire. Cela signifie qu’aucune distorsion de phase n’est introduite dans le signal à filtrer, car toutes les fréquences sont décalées dans le temps de la même quantité – ce qui maintient leurs relations harmoniques relatives (c’est-à-dire un retard de groupe et de phase constant). Ce n’est certainement pas le cas avec les filtres RII, qui ont une caractéristique de phase non linéaire
  • Stabilité: Comme les filtresRIF n’utilisent pas les valeurs de sortie précédentes pour calculer leur sortie actuelle, c’est-à-dire qu’ils n’ont pas de rétroaction, ils ne peuvent jamais devenir instables pour tout type de signal d’entrée, ce qui leur donne un avantage distinct sur les filtres RII
  • Réponse en fréquence arbitraire: : La fonction firarb() fde Parks-McClellan et ASN FilterScript permet la conception d’un RIF avec une réponse en amplitude arbitraire. Cela signifie qu’un RIF peut être personnalisé plus facilement qu’un RII
  • Performance à point fixe: les effets de la quantification sont moins sévères que ceux d’un RII

Inconvénients

  • Exigences élevées en termes de calcul et de mémoire: Les RIF nécessitent généralement beaucoup plus de coefficients pour obtenir une coupure nette que leurs homologues RII. Il en résulte qu’ils nécessitent beaucoup plus de mémoire et un nombre beaucoup plus élevé d’opérations MAC (multiple and accumulate). Toutefois, les architectures de microcontrôleurs modernes basées sur les cœurs Cortex-M d’Arm incluent désormais un support matériel DSP via SIMD (instruction de signal, données multiples) qui accélère considérablement l’opération de filtrage.
  • Latence plus élevée: le nombre plus élevé de coefficients signifie qu’en général, un RIF est moins adapté qu’un RII pour les applications rapides à haut débit. Cela devient problématique pour les applications de contrôle en boucle fermée en temps réel, où un filtre RIF peut avoir un retard de groupe trop important pour atteindre la stabilité de la boucle
  • Pas d’équivalent analogique: : à l’aide de la transformation Bilinéaire, appariée en z (s-z mapping), un filtre analogique peut être facilement transformé en un filtre RII équivalent. Cependant, cela n’est pas possible pour un RIF car il n’a pas d’équivalent analogique

Définitions mathématiques

Comme nous l’avons vu dans l’introduction, les noms RII et RIF proviennent des définitions mathématiques de chaque type de filtre, c’est-à-dire qu’un filtre RII est catégorisé par sa réponse impulsionnelle théoriquement infinie,

 

\(\displaystyle
y(n)=\sum_{k=0}^{\infty}h(k)x(n-k)
\)

 

et un RIF catégorisé par sa réponse impulsionnelle finie,


\(\displaystyle
y(n)=\sum_{k=0}^{N-1}h(k)x(n-k)
\)

Nous allons maintenant analyser successivement les propriétés mathématiques de chaque type de filtre.

Définition du filtre RII

Comme nous l’avons vu plus haut, un filtre RII est catégorisé par sa réponse impulsionnelle théoriquement infinie,

\(\displaystyle y(n)=\sum_{k=0}^{\infty}h(k)x(n-k) \)

En pratique, il n’est pas possible de calculer la sortie d’un RII à l’aide de cette équation. Par conséquent, l’équation peut être réécrite en termes d’un nombre fini de pôles \(\small p\) et de zéros \(\small q\), comme défini par l’équation de différence linéaire à coefficient constant donnée par:

 

\(\displaystyle
y(n)=\sum_{k=0}^{q}b_k x(n-k)-\sum_{k=1}^{p}a_ky(n-k)
\)

 

où, \(\small a_k\) et \(\small b_k\) sont les coefficients polynomiaux du dénominateur et du numérateur du filtre, dont les racines sont égales aux pôles et aux zéros du filtre, respectivement. Ainsi, une relation entre l’équation différentielle et la transformée en z (fonction de transfert) peut donc être définie en utilisant la propriété de retard de la transformée en z telle que,

 

\(\displaystyle
\sum_{k=0}^{q}b_kx(n-k)-\sum_{k=1}^{p}a_ky(n-k)\quad\stackrel{\displaystyle\mathcal{Z}}{\longleftrightarrow}\quad\frac{\sum\limits_{k=0}^q b_kz^{-k}}{1+\sum\limits_{k=1}^p a_kz^{-k}}
\)

 

Comme on le voit, la fonction de transfert est une représentation du filtre dans le domaine fréquentiel. Remarquez également que les pôles agissent sur les données de sortie, et les zéros sur les données d’entrée. Since the poles act on the output data, and affect stability,Puisque les pôles agissent sur les données de sortie et affectent la stabilité, il est essentiel que leurs rayons restent à l’intérieur du cercle unitaire (i.e. <1) pour la stabilité BIBO (bounded input, bounded output). Les rayons des zéros sont moins critiques, car ils n’affectent pas la stabilité du filtre. C’est la principale raison pour laquelle les filtres RIF (réponse impulsionnelle finie) tout-zéro sont toujours stables.

Stabilité BIBO

Un système linéaire invariant dans le temps (LTI) (tel qu’un filtre numérique) est dit stable à entrée bornée et sortie bornée, ou stable BIBO, si chaque entrée bornée donne lieu à une sortie bornée, comme suit

\(\displaystyle \sum_{k=0}^{\infty}\left|h(k)\right|%lt\infty \)

Où, \(\small h(k)\) est la réponse impulsionnelle du système LTI. En analysant cette équation, il devrait être clair que le critère de stabilité BIBO ne sera satisfait que si les pôles du système se trouvent à l’intérieur du cercle unitaire, puisque la ROC (région de convergence) du système doit inclure le cercle unitaire. Par conséquent, il suffit de dire qu’un signal d’entrée borné produira toujours un signal de sortie borné si tous les pôles se trouvent à l’intérieur du cercle unitaire.

Les zéros, par contre, ne sont pas contraints par cette exigence et, par conséquent, peuvent se trouver n’importe où sur le plan z, puisqu’ils n’affectent pas directement la stabilité du système. Par conséquent, une analyse de la stabilité du système peut être entreprise en calculant d’abord les racines de la fonction de transfert (c’est-à-dire les racines des polynômes du numérateur et du dénominateur), puis en traçant les pôles et les zéros correspondants sur le plan zéro.

Une situation intéressante se présente si l’un des pôles se trouve sur le cercle unitaire, car le système est dit marginalement stable, puisqu’il n’est ni stable ni instable. Bien que les systèmes marginalement stables ne soient pas stables BIBO, ils ont été exploités par les concepteurs d’oscillateurs numériques, car leur réponse impulsionnelle fournit une méthode simple pour générer des ondes sinusoïdales, qui se sont avérées précieuses dans le domaine des télécommunications.

Filtres RII biquad

La mise en œuvre du filtre RII dont il est question ici est dite biquad, car elle comporte deux pôles et deux zéros, comme l’illustre la figure 2 ci-dessous. L’implémentation biquad est particulièrement utile pour les implémentations en virgule fixe, car les effets de la quantification et de la stabilité numérique sont minimisés. Cependant, le succès global de toute implémentation biquad dépend de la précision numérique disponible, qui doit être suffisante pour garantir que les pôles quantifiés sont toujours à l’intérieur du cercle unitaire.

Réalisation et fonction de transfert d'un filtre RII de forme directe I (biquad) ; Forme directe ; Filtre biquad

Figure 2 : Réalisation et fonction de transfert d’un filtre RII de forme directe I (biquad)

En analysant la figure 2, on constate que la structure biquad est en fait composée de deux chemins de rétroaction (mis à l’échelle par (scaled by \(\small a_1\) et \(\small a_2\)), tde trois chemins de rétroaction (mis à l’échelle par \(\small b_0, b_1\) et \(\small b_2\)) et d’un gain de section, \(\small K\).Ainsi, l’opération de filtrage de la figure 1 peut être résumée par l’équation récursive simple suivante :

\(\displaystyle y(n)=K\times\Big[b_0 x(n) + b_1 x(n-1) + b_2 x(n-2)\Big] – a_1 y(n-1)-a_2 y(n-2)\)


En analysant l’équation, on remarque que l’implémentation biquad ne nécessite que quatre additions (qui ne requièrent qu’un seul accumulateur) et cinq multiplications, ce qui peut être facilement accommodé sur n’importe quel microcontrôleur Cortex-M. Le gain de section, \(\small K\) , peut également être prémultiplié avec les coefficients de la voie directe avant l’implémentation.

Une collection de filtres Biquad est appelée une cascade Biquad, comme illustré ci-dessous.

Cascade Biquad ; Filtre Biquad

Le ASN Filter Designer peut concevoir et implémenter une cascade de jusqu’à 50 biquads (édition professionnelle seulement).

Implémentation en virgule flottante


Lors de l’implémentation d’un filtre en virgule flottante (c’est-à-dire en utilisant l’arithmétique de double ou simple précision) les structures Direct Form II sont considérées comme un meilleur choix que la structure Direct Form I. La structure de forme directe II transposée est considérée comme la plus précise numériquement pour une implémentation en virgule flottante, car les effets indésirables de l’amortissement numérique sont minimisés, comme on peut le voir en analysant les équations de différence.

Structure de la forme directe II transposée, fonction de transfert et équations de différence ; filtres RII ; filtres Biquad.

Figure 3 – Structure transposée de forme directe II, fonction de transfert et équations de différence

Le résumé du filtre (montré dans la Figure 4) fournit au concepteur une vue d’ensemble détaillée du filtre conçu, y compris un résumé détaillé des spécifications techniques et des coefficients du filtre, qui présente une voie rapide et simple pour documenter votre conception.

Le ASN Filter Designer supporte la conception et l’implémentation des filtres RII à section unique et Biquad (réglage par défaut).

Filtre Biquad ASN Filter Designer DSP

 

Figure 4 : spécification détaillée.

 

Définition RIF

En retournant l’équation de différence de coefficient constant linéaire du RII, c’est-à-dire

 

\(\displaystyle
y(n)=\sum_{k=0}^{q}b_kx(n-k)-\sum_{k=1}^{p}a_ky(n-k)
\)

 

Remarquez que lorsque nous mettons les coefficients \(\small a_k\) (c’est-à-dire la rétroaction) à zéro, la définition se réduit à notre définition originale du filtre RIF, ce qui signifie que le calcul RIF est juste basé sur les valeurs d’entrée passées et présentes, à savoir:

 

\(\displaystyle
y(n)=\sum_{k=0}^{q}b_kx(n-k)
\)

 

Implémentation

Bien qu’il existe plusieurs implémentations pratiques pour les RIF, la structure de forme directe et son cousin transposé sont peut-être les plus couramment utilisés, et en tant que tels, tous les coefficients de filtre conçus sont destinés à être implémentés dans une structure de forme directe.

La structure de forme directe et l’équation de différence associée sont présentées ci-dessous. La forme directe est préconisée pour la mise en œuvre en virgule fixe en vertu du concept d’accumulateur unique.

\(\displaystyle y(n) = b_0x(n) + b_1x(n-1) + b_2x(n-2) + …. +b_qx(n-q) \)

Forme directe ; Structure de forme directe

La structure recommandée (par défaut) dans l’ASN Filter Designer est la structure Direct Form Transposed, car elle offre une précision numérique supérieure lors de l’utilisation de l’arithmétique à virgule flottante. Ceci peut être facilement vu en analysant les équations de différence ci-dessous (utilisées pour l’implémentation), car les effets indésirables de l’amortissement numérique sont minimisés, puisque l’addition en virgule flottante est effectuée sur des nombres de magnitude similaire.

\(\displaystyle \begin{eqnarray}y(n) & = &b_0x(n) &+& w_1(n-1) \\ w_1(n)&=&b_1x(n) &+& w_2(n-1) \\ w_2(n)&=&b_2x(n) &+& w_3(n-1) \\ \vdots\quad &=& \quad\vdots &+&\quad\vdots \\ w_q(n)&=&b_qx(n) \end{eqnarray}\)

Forme directe Transposée

Qu’avons-nous appris ?

Les filtres numériques se répartissent dans les deux catégories suivantes :

  • Réponse impulsionnelle infinie (RII)
  • Réponse impulsionnelle finie (RIF)

Les filtres RII (Réponse impulsionnelle infinie) sont généralement choisis pour des applications où la phase linéaire n’est pas trop importante et où la mémoire est limitée. Ils ont été largement déployés dans l’égalisation audio, le traitement du signal des capteurs biomédicaux, les capteurs intelligents IoT/IIoT et les applications de télécommunication/RF à haut débit.

Les filtres RIF (réponse impulsionnelle finie) sont généralement choisis pour les applications où la phase linéaire est importante et où une quantité décente de mémoire et de performances de calcul sont disponibles. Ils ont été largement déployés dans les applications d’amélioration des signaux audio et biomédicaux.

ASN Filter Designer fournit aux ingénieurs tout ce dont ils ont besoin pour concevoir, expérimenter et déployer des filtres numériques complexes RII et RIF pour une variété d’applications de mesure de capteurs. Ces avantages couplés avec la documentation automatique et la fonctionnalité de génération de code permettent aux ingénieurs de concevoir et valider un filtre numérique RII/RIF en quelques minutes plutôt qu’en quelques heures.

Download demo now

Licencing information


Aktualisieren älterer Designs basierend auf analogen Filtern

Analoge Filter gibt es seit den Anfängen der Elektronik. Angefangen von einfachen Induktor-Kondensator-Netzwerken bis hin zu fortschrittlichen aktiven Filtern mit Operationsverstärkern. Daher gibt es eine umfangreiche Sammlung von bewährter Legacy-Filterdesigns für eine breite Palette von Sensormessanwendungen. Mit den Leistungsanforderungen moderner IoT (Internet of Things) -Sensormessanwendungen und niedrigerer Produktkosten werden jedoch digitale Filter, die in den Applikationscode des Mikrocontrollers integriert sind, zur Norm. Wie können wir das Beste aus beiden Welten erhalten??

Anstatt das Rad neu zu erfinden, können Produktdesigner eine bestehende analoge Filterübertragungsfunktion nehmen, sie in eine digitale Form umwandeln (über eine Transformation) und sie als digitalen Filter in einem Mikrocontroller oder DSP (digitaler Signalprozessor) implementieren. Obwohl es Analog-Digital-Transformationen schon seit Jahrzehnten gibt, war die Verfügbarkeit von DSP-Design-Tools für die Optimierung des “transformierten digitalen Filters” etwas begrenzt, was den Design- und Validierungsprozess behinderte.
Ein analoges Tiefpassfilter 2. Ordnung ist unten abgebildet, und in seiner einfachsten Form sind nur 5 Komponenten zum Aufbau des Filters erforderlich, was einfach klingt. Oder?

Die Vorteile

Der offensichtlichste Vorteil ist, dass analoge Filter eine hervorragende Auflösung haben, da es keine “Anzahl von Bits” zu berücksichtigen gibt. Analoge Filter haben gute EMV-Eigenschaften (elektromagnetische Verträglichkeit), da es kein takterzeugendes Rauschen gibt. Es gibt keine Aliasing-Effekte, was sicherlich für die einfacheren Operationsverstärker gilt, die keine ausgefallenen Chopping- oder Auto-Kalibrierungsschaltungen eingebaut haben, und analoge Designs können billig sein, was für kostensensitive Anwendungen großartig ist.

Klingt gut, aber was ist die schlechte Nachricht?

Analoge Filter haben einige signifikante Nachteile, die die Filterleistung beeinflussen, wie z. B. die Alterung der Komponenten, Temperaturdrift und Komponententoleranz. Außerdem erfordert eine gute Leistung gute Fähigkeiten im Analogdesign und ein gutes PCB-Layout (Printed Circuit Board), was auf dem heutigen Qualifikationsmarkt schwer zu finden ist.

Diese Nachteile machen digitale Filter viel attraktiver für moderne Anwendungen, die eine hohe Wiederholbarkeit der Eigenschaften erfordern. Zum Beispiel: Nehmen wir an, Sie wollen nach der Optimierung Ihres Filterdesigns 1000 Messmodule herstellen. Mit einer digitalen Lösung können Sie sicher sein, dass die Leistung Ihres Filters in allen Modulen identisch ist. Bei einer analogen Lösung ist dies sicherlich nicht der Fall, da Komponententoleranz, Komponentenalterung und Temperaturdrift dazu führen, dass das Filter jedes Moduls seine eigenen Eigenschaften hat. Außerdem bleibt der Frequenzgang eines analogen Filters fest, d.h. ein Butterworth-Filter ist immer ein Butterworth-Filter – jede Änderung des Frequenzgangs würde einen physischen Austausch von Komponenten auf der Leiterplatte erfordern – nicht ideal!

Digitale Filter sind adaptiv und flexibel. Wir können ein Filter mit einem beliebigen Frequenzgang entwerfen und implementieren, es einsetzen und dann die Filterkoeffizienten aktualisieren, ohne etwas auf der Leiterplatte zu ändern! Es ist auch einfach, digitale Filter mit linearer Phase und sehr niedrigen Abtastfrequenzen zu entwerfen – zwei Dinge, die bei analogen Filtern schwierig sind.

Laplace zu diskreten/digitalen Transformationen

Bei den drei hier besprochenen Methoden geht es im Wesentlichen darum, eine (analoge) Laplace-Übertragungsfunktion, \(H(s)\), in eine diskrete Übertragungsfunktion, \(H(z)\), zu transformieren. So dass ein bewährtes analoges Filter, das bereits in einem Design verwendet wird, auf einem Mikrocontroller oder DSP implementiert werden kann.

Eine Auswahl einiger nützlicher Laplace-zu-z-Transformationen finden Sie in der folgenden Tabelle:

\(
\begin{array}{ccc}\hline
H(s) &\longleftrightarrow & H(z) \\ \hline
1 &\longleftrightarrow & 1 \\
\frac{\displaystyle1}{\displaystyle s}
&\longleftrightarrow& \frac{\displaystyle 1}{\displaystyle 1-z^{\scriptstyle -1}}\\
\frac{\displaystyle 1}{\displaystyle s^{\scriptstyle 2}} &\longleftrightarrow& \frac{\displaystyle
Tz^{\scriptstyle-1}}{\displaystyle (1-z^{\scriptstyle -1})^2}\\
\frac{\displaystyle 1}{\displaystyle s+a}
&\longleftrightarrow&
\frac{\displaystyle 1}{\displaystyle 1-e^{-aT}z^{-1}}\\
\frac{\displaystyle 1}{\displaystyle (s+a)^2}
&\longleftrightarrow& \frac{\displaystyle z^{-1}(1-e^{-aT})}{\displaystyle a(1-z^{-1})(1-e^{-aT}z^{-1})}\\\hline
\end{array}
\)
A table of useful Laplace and z-transforms

Die bilineare z-Transformation (BZT)

Die Bilineare z-Transformation (BZT) wandelt einfach eine analoge Übertragungsfunktion \(H(s)\) in eine diskrete Übertragungsfunktion \(H(z)\) um, indem alle \(s\) -Terme durch die folgenden ersetzt werden:

\(\displaystyle
s=\frac{2}{T}\frac{1-z^{-1}}{1+z^{-1}} \label{bzt}\)

Dabei ist \(T\) die Abtastperiode des diskreten Systems. Ersetzt man jedoch \(s=j\Omega\) und \(z=e^{jwT}\) in die BZT-Gleichung ein und vereinfacht, stellt man fest, dass es tatsächlich eine nichtlineare Beziehung zwischen den analogen \(\Omega\)– und diskreten \(w\)-Frequenzen gibt. Diese Beziehung ist unten gezeigt und ist auf die Nichtlinearität der Arkustangensfunktion zurückzuführen.

\(\displaystyle
\omega=2\tan^{-1}\left(\frac{\Omega T}{2}\right)
\label{bzt_warp_def1}
\)

Bei der Analyse der Gleichung ist zu erkennen, dass die gleichmäßig verteilten analogen Frequenzen im Bereich \(-\infty<\Omega<\infty\) im Frequenzbereich \(-\pi<w<\pi\) im diskreten Bereich nichtlinear komprimiert sind. Diese Beziehung wird als Frequenzverzerrung bezeichnet und kann durch eine Vorverzerrung der analogen Frequenzen kompensiert werden:

\(\displaystyle
\Omega_c=\frac{2}{T}\tan\left(\frac{\Omega_d T}{2}\right)
\label{bzt_warp_def2}
\)

Dabei ist \(\displaystyle\Omega_c\) die kompensierte oder vorgewölbte analoge Frequenz und \(\displaystyle\Omega_d\) die gewünschte analoge Frequenz.

Der ASN FilterScript-Befehl \(\texttt{bilinear}\) kann verwendet werden, um eine Laplace-Übertragungsfunktion in ihr diskretes Äquivalent unter Verwendung der BZT-Transformation umzuwandeln. Ein Beispiel ist unten angegeben.

Die impulsinvariante Transformation

Die zweite Transformation wird als impulsinvariante Transformation (IIT) bezeichnet, da die Pole der Laplace-Übertragungsfunktion in ihre diskreten Äquivalente umgewandelt werden, so dass die diskrete Impulsantwort \(h(n)\) identisch mit einer regelmäßig abgetasteten Darstellung der analogen Impulsantwort ist (d. h. \(h(n)=h(nT)\), wobei \(T\) die Abtastrate und \(t=nT\))ist). Die IIT ist ein wesentlich aufwändigeres Transformationstechnik als die BZT, da die Laplace-Übertragungsfunktion vor der Anwendung der Transformation zunächst mit partiellen Brüchen erweitert werden muss.

Das Transformationsverfahren ist wie folgt definiert:

\(\displaystyle
\frac{K}{s+a} \quad\longrightarrow\quad
\frac{K}{1-e^{-aT}z^{-1}} \label{iit_def}
\)

Diese Methode leidet unter mehreren Einschränkungen, da sie die Transformation von Nullen oder einzelnen konstanten Termen (nach der Expansion) nicht zulässt und eine hohe Abtastrate haben muss, um die Effekte des spektralen Aliasing zu überwinden. In der Tat behindern die Effekte des Aliasing diese Methode erheblich, so dass die Methode nur verwendet werden sollte, wenn die Anforderung besteht, die Impulsantwort der analogen Übertragungsfunktion anzupassen, da das resultierende diskrete Modell ein anderes Betrags- und Phasenspektrum (Frequenzgang) als das des ursprünglichen analogen Systems haben kann. Folglich ist die impulsinvariante Methode für die Modellierung von Hochpassfiltern ungeeignet und daher auf die Modellierung von Tiefpass- oder Bandpassfiltern beschränkt.

Aufgrund der oben genannten Einschränkungen der IIT-Methode wird sie derzeit in ASN Filterscript nicht unterstützt.

Die Matched-z-Transformation

Ein weiteres Analogon zur diskreten Modellierungstechnik ist die Matched-Z-Transformation. Wie der Name schon sagt, wandelt die Transformation die Pole und Nullstellen aus der analogen Übertragungsfunktion direkt in Pole und Nullstellen in der z-Ebene um. Die Transformation wird im Folgenden beschrieben, wobei \(T\) die Abtastrate ist.

\(\displaystyle
\frac{\prod\limits_{k=1}^q(s+b_k)}{\prod\limits_{k=1}^p(s+a_k)}
\quad\longrightarrow\quad
\frac{\prod\limits_{k=1}^q(1-e^{-b_kT}z^{-1})}{\prod\limits_{k=1}^p(1-e^{-a_kT}z^{-1})}
\label{matchedz_def}
\)

Die Analyse der Transformationsgleichung zeigt, dass die transformierten Pole der z-Ebene identisch mit den Polen sind, die mit der impulsinvarianten Methode erhalten wurden. Es ist jedoch zu beachten, dass die Positionen der Nullstellen unterschiedlich sind, da die impulsinvariante Methode sie nicht transformieren kann.

Für diese Methode steht der ASN-Filterscript-Befehl \(\texttt{mztrans}\) zur Verfügung.

Ein ausführliches Beispiel

Um die Einfachheit der Transformation von analogen Filtern in ihre diskreten/digitalen Äquivalente mit Hilfe der Analog-Diskret-Transformation zu demonstrieren, folgt nun ein Beispiel für die Modellierung mit der BZT für ein analoges Tiefpassfilter 2ter Ordnung.

Ein verallgemeinertes analoges Tiefpassfilter 2. Ordnung ist gegeben durch:

\(\displaystyle
H(s)=\frac{w_c^2}{s^2+2\zeta w_c s + w_c^2}
\)

wobei \(w_c=2\pi f_c\) die Grenzfrequenz ist und \(\zeta\) die Dämpfung des Filters bestimmt, wobei ein \(\zeta=1/\sqrt{2}\) als kritisch gedämpft oder gleich -3dB bei \(w_c\) gillt. Viele Analog-Ingenieure entscheiden sich dafür, einen Qualitätsfaktor, \(Q =  \displaystyle\frac{1}{2\zeta}\) oder Peaking-Faktor für ihre Designs zu spezifizieren. Setzt man \(Q\) in \(H(s)\)ein, erhält man:

\(\displaystyle
H(s)=\frac{w_c^2}{s^2+ \displaystyle{\frac{w_c}{Q}s} + w_c^2}
\)

Bei der Analyse von \(H(s)\) fällt auf, dass \(Q=1/\sqrt{2} = 0.707\) ebenfalls zu einer kritisch gedämpften Reaktion führt. Verschiedene Werte von \(Q\) sind unten gezeigt und wie zu sehen ist, treten bei \(Q>1/\sqrt{2}\) peaking auf.

Prototypisches Magnituden Spektrum eines Tiefpassfilters 2. Ordnung für verschiedene Werte von Q:
Beachten Sie, dass bei \(Q>1/\sqrt{2}\) Peaking auftritt.

Bevor die BZT in ASN FilterScript angewendet wird, muss die analoge Übertragungsfunktion in einem analogen Filterobjekt angegeben werden. Der folgende Code richtet ein analoges Filterobjekt für den hier betrachteten Tiefpassprototyp 2:

Main()

wc=2*pi*fc;
Nb={0,0,wc^2};
Na={1,wc/Q,wc^2};

Ha=analogtf(Nb,Na,1,"symbolic"); // make analog filter object

Das Schlüsselwort \(\texttt{symbolic}\) kerzeugt eine symbolische Darstellung der Übertragungsfunktion im Befehlsfenster. Für eine Abtastrate von \(f_s=500Hz\) und \(f_c=30Hz\) und \(Q=0.707\), erhalten wir:

ASN FilterScript analoger Befehl

Anwendung der BZT mit den \(\texttt{bilinear}\) Befehl ohne Prewarping,

 Hd=bilinear(Ha,0,"symbolic"); 

Der vollständige Frequenzgang des transformierten digitalen Filters ist unten gezeigt, wobei zu sehen ist, dass bei \(30Hz\) der Betrag \(-3dB\) und die Phase \( -90^{\circ}\) beträgt, was wie erwartet ist. Beachten Sie auch, wie der Amplituden-Roll-Off des Filters durch das doppelte Nullpaar bei Nyquist beeinflusst wird (siehe das Diagramm der z-Ebene unten), was zu Unterschieden zu seinem analogen Cousin führt. Pole-zero chart 2nd order LPF

2nd order LPF

Die Pol-Null-Positionen können in ASN Filterscript oder über den interaktiven Pol-Null-Z-Ebenen-Plot-Editor des ASN Filter Designers mit der Maus verändert werden!

Implementierung

Der vollständige Code zum Umwandeln eines verallgemeinerten analogen Tiefpassfilter-Prototyps 2. Ordnung in sein digitales Äquivalent unter Verwendung der BZT über ASN FilterScriptist unten angegeben:


ClearH1;  // clear primary filter from cascade
interface Q = {0.1,10,0.02,0.707};
interface fc = {10,200,10,40};

Main()

wc=2*pi*fc;
Nb={0,0,wc^2};
Na={1,wc/Q,wc^2};

Ha=analogtf(Nb,Na,1,"symbolic"); // make analog filter object
Hd=bilinear(Ha,0,"symbolic"); // transform Ha via BZT into digital object, Hd

Num=getnum(Hd);
Den=getden(Hd);
Gain=getgain(Hd);

Download demo now

Licencing information

Upgraden van verouderde ontwerpen gebaseerd op analoge filters

Analoge filters bestaan al sinds het begin van elektronica, variërend van eenvoudige inductor-capacitor netwerken tot meer geavanceerde actieve filters met op-amps; beproefde legacy filterontwerpen voor een breed scala aan sensormeettoepassingen. Digitale filters die geïntegreerd zijn in de applicatiecode van de microcontroller zijn echter de norm geworden vanwege de prestatie-eisen van moderne IoT (Internet of Things) sensormeettoepassingen. En daarnaast vanwege de lagere productkosten. Maar hoe krijgen we het beste van twee werelden?

Ontwerpers hoeven niet het wiel op opnieuw uit te vinden. Ze kunnen een bestaande analoge filtertransferfunctie nemen en deze transformeren naar digitaal (via een transformatie). Deze kan vervolgens als digitaal filter geïmplementeerd worden in een microcontroller of DSP (digitale signaalprocessor). Transformaties van analoog naar digitaal bestaan al tientallen jaren. De beschikbaarheid van DSP-ontwerphulpmiddelen voor het aanpassen van het “getransformeerde digitale filter” is echter enigszins beperkt, wat het ontwerp- en validatieproces belemmert.

Een 2e orde analoog laagdoorlaatfilter is hieronder afgebeeld. In zijn simpelste vorm zijn er slechts 5 componenten nodig om het filter te bouwen. Dit klinkt eenvoudig, toch?

The pros

Het meest voor de hand liggende voordeel is dat analoge filters een uitstekende resolutie hebben, aangezien er geen rekening hoeft te worden gehouden met het “aantal bits”. Analoge filters hebben goede EMC (elektromagnetische compatibiliteit) eigenschappen, omdat er geen klok genererende ruis is. Er zijn geen effecten van aliasing, wat zeker geldt voor de eenvoudigere op-amps. Deze hebben geen fancy chopping of auto-calibration schakelingen in zich. En analoge ontwerpen kunnen goedkoop zijn, belangrijk wanneer kosten voor een toepassing belangrijk zijn.

Klinkt goed, maar wat is het slechte nieuws?

Analoge filters hebben een aantal belangrijke nadelen die de filterprestaties beïnvloeden. Zoals veroudering van componenten, temperatuurdrift en componenttolerantie. Bovendien vergt een goede prestatie goede analoge ontwerpvaardigheden en een goede PCB (printed circuit board) layout, welke moeilijk te vinden zijn.

Deze nadelen maken digitale filters erg geschikt voor moderne toepassingen die een hoge herhaalbaarheid van karakteristieken vereisen. Een voorbeeld: stel dat u 1000 meetmodules wilt vervaardigen nadat u uw filterontwerp hebt geoptimaliseerd. Met een digitale oplossing kunt u er zeker van zijn dat de prestaties van uw filter in alle modules identiek zijn. Dit is zeker niet het geval bij analoge oplossingen, omdat de tolerantie van de componenten, de veroudering van de componenten en de temperatuurdrift tot gevolg hebben dat het filter van elke module zijn eigen karakteristieken zal hebben. Bovendien blijft de frequentierespons van een analoog filter vast, oftewel een Butterworth-filter zal altijd een Butterworth-filter blijven. Om de frequentierespons te wijzigen, moeten de componenten op de printplaat fysiek worden gewijzigd, wat niet ideaal is!

Digitale filters zijn adaptief en flexibel. We kunnen een filter ontwerpen en implementeren met elke frequentierespons die we willen, het inzetten en dan de filtercoëfficiënten bijwerken zonder iets op de printplaat te veranderen! Het is ook gemakkelijk om digitale filters te ontwerpen met lineaire fase en bij zeer lage bemonsteringsfrequenties – twee dingen die lastig zijn bij analoog.

Laplace naar discrete/digitale transformaties

De drie hier besproken methoden houden in wezen in dat een (analoge) Laplace-overdrachtsfunctie, \(H(s)\) wordt omgezet in een discrete overdrachtsfunctie, \(H(z)\) ), zodat een analoog filter dat reeds in een ontwerp wordt gebruikt, kan worden geïmplementeerd op een microcontroller of DSP.
Een aantal nuttige Laplace-naar-Z-transformaties staan in onderstaande tabel weergegeven:

\(
\begin{array}{ccc}\hline
H(s) &\longleftrightarrow & H(z) \\ \hline
1 &\longleftrightarrow & 1 \\
\frac{\displaystyle1}{\displaystyle s}
&\longleftrightarrow& \frac{\displaystyle 1}{\displaystyle 1-z^{\scriptstyle -1}}\\
\frac{\displaystyle 1}{\displaystyle s^{\scriptstyle 2}} &\longleftrightarrow& \frac{\displaystyle
Tz^{\scriptstyle-1}}{\displaystyle (1-z^{\scriptstyle -1})^2}\\
\frac{\displaystyle 1}{\displaystyle s+a}
&\longleftrightarrow&
\frac{\displaystyle 1}{\displaystyle 1-e^{-aT}z^{-1}}\\
\frac{\displaystyle 1}{\displaystyle (s+a)^2}
&\longleftrightarrow& \frac{\displaystyle z^{-1}(1-e^{-aT})}{\displaystyle a(1-z^{-1})(1-e^{-aT}z^{-1})}\\\hline
\end{array}
\)
A table of useful Laplace and z-transforms

Bilineaire z-transformatie (BZT)

De bilineaire z-transformatie (BZT) zet eenvoudig een analoge overdrachtsfunctie, \(H(s)\) , om in een discrete overdrachtsfunctie, \(H(z)\) door alle \(s\)-termen te vervangen door het volgende:

\(\displaystyle
s=\frac{2}{T}\frac{1-z^{-1}}{1+z^{-1}} \label{bzt}\)

Waarbij \(T\) de bemonsteringsperiode van het discrete systeem is. Wanneer echter \(s=j\Omega\) en \(z=e^{jwT}\) in de BZT-vergelijking worden gesubstitueerd en vereenvoudigd, blijkt dat er in feite een niet-lineair verband bestaat tussen de analoge, \(\Omega\) en discrete, \(w\) frequenties. Dit verband wordt hieronder getoond en is het gevolg van de niet-lineariteit van de arctangensfunctie.

\(\displaystyle
\omega=2\tan^{-1}\left(\frac{\Omega T}{2}\right)
\label{bzt_warp_def1}
\)

Bij analyse van de vergelijking blijkt dat de gelijkmatig verdeelde analoge frequenties in het bereik – \(-\infty<\Omega<\infty\) op niet-lineaire wijze worden gecomprimeerd in het frequentiebereik \(-\pi<w<\pi\) n het discrete domein. Deze relatie wordt frequentievervorming genoemd, en kan worden gecompenseerd door de analoge frequenties vooraf te vervormen door:

\(\displaystyle
\Omega_c=\frac{2}{T}\tan\left(\frac{\Omega_d T}{2}\right)
\label{bzt_warp_def2}
\)

waarbij \(\displaystyle\Omega_c\) de gecompenseerde of voorgefilterde analoge frequentie is, en \(\displaystyle\Omega_d\) de gewenste analoge frequentie.

Het ASN FilterScript commando \(\texttt{bilinear}\) kan worden gebruikt om een Laplace overdrachtsfunctie om te zetten in zijn discrete equivalent met behulp van de BZT transformatie. Hieronder wordt een voorbeeld gegeven.

Impulsinvariante methode

De tweede transformatie wordt immpulsinvariante methode (Impulse Invariant Transform, IIT) genoemd, omdat de polen van de Laplace overdrachtsfunctie worden omgezet in hun discrete equivalenten. Zodat de discrete impulsrespons, \(h(n)\) identiek is aan een regelmatig bemonsterde representatie van de analoge impulsrespons. (Dat wil zeggen: \(h(n)=h(nT)\), waarbij \(T\) de bemonsteringsfrequentie is, en \(t=nT\)). De IIT is een veel omslachtigere omzettingstechniek dan de BZT, omdat de Laplace-overdrachtsfunctie eerst moet worden uitgebreid met partiële breuken voordat de transformatie toe te passen.

De transformatietechniek wordt hieronder gedefinieerd:

\(\displaystyle
\frac{K}{s+a} \quad\longrightarrow\quad
\frac{K}{1-e^{-aT}z^{-1}} \label{iit_def}
\)

Deze methode heeft meerdere beperkingen, aangezien geen transformatie van nullen of afzonderlijke constante termen (na expansie) mogelijk is. En zij moet een hoge bemonsteringsfrequentie hebben om de effecten van spectrale aliasing te ondervangen. De effecten van aliasing hinderen deze methode aanzienlijk. Daarom mag de methode alleen worden gebruikt wanneer de vereiste is dat de impulsrespons van de analoge overdrachtsfunctie overeenkomt, aangezien het resulterende discrete model een ander magnitude- en fasespectrum (frequentierespons) kan hebben dan dat van het oorspronkelijke analoge systeem. Daardaar is de impulseinvariante methode ongeschikt voor het modelleren van hoogdoorlaatfilters, en is zij derhalve beperkt tot het modelleren van laagdoorlaat- of banddoorlaatfilters.

Vanwege de bovengenoemde beperkingen van de IIT-methode wordt deze momenteel niet ondersteund in ASN Filterscript.

De matched-z transformatie

Een andere techniek van het analoog naar discreet modelleren is de matched-z transformatie. Zoals de naam al aangeeft, zet de transformatie de polen en nullen van de analoge overdrachtsfunctie direct om in polen en nullen in het z-vlak. De transformatie wordt hieronder beschreven, waarbij \(T\) de bemonsteringsfrequentie is.

\(\displaystyle
\frac{\prod\limits_{k=1}^q(s+b_k)}{\prod\limits_{k=1}^p(s+a_k)}
\quad\longrightarrow\quad
\frac{\prod\limits_{k=1}^q(1-e^{-b_kT}z^{-1})}{\prod\limits_{k=1}^p(1-e^{-a_kT}z^{-1})}
\label{matchedz_def}
\)

Uit analyse van de transformatievergelijking blijkt dat de getransformeerde polen in het z-vlak identiek zullen zijn aan de polen verkregen met de impulsinvariante methode. Merk echter op dat de posities van de nullen verschillend zullen zijn, omdat de impulsinvariante methode ze niet kan transformeren.

Het ASN Filterscript commando \(\texttt{mztrans}\) is beschikbaar voor deze methode.

Een gedetailleerd voorbeeld

Om het gemak van het transformeren van analoge filters in hun discrete/digitale equivalenten met behulp van de analoog naar discrete transformaties aan te tonen, volgt nu een voorbeeld van modellering met de BZT voor een analoog 2e orde laagdoorlaatfilter.

Een veralgemeend 2e orde analoog laagdoorlaatfilter wordt gegeven door:

\(\displaystyle
H(s)=\frac{w_c^2}{s^2+2\zeta w_c s + w_c^2}
\)

waarbij \(w_c=2\pi f_c\) de afsnijfrequentie is en \(\zeta\) de demping van het filter bepaalt, waarbij \(\zeta=1/\sqrt{2}\) kritisch gedempt wordt genoemd of gelijk aan to -3dB bij \(w_c\). Veel analoge ingenieurs kiezen ervoor om voor hun ontwerpen een kwaliteitsfactor, \(Q =  \displaystyle\frac{1}{2\zeta}\) of piekfactor te specificeren. Als we\(Q\) in \(H(s)\) invoegen, verkrijgen we:

\(\displaystyle
H(s)=\frac{w_c^2}{s^2+ \displaystyle{\frac{w_c}{Q}s} + w_c^2}
\)

Bij analyse van \(H(s)\) blijkt dat \(Q=1/\sqrt{2} = 0.707\) ook een kritisch gedempte respons oplevert. Verschillende waarden van \(Q\) worden hieronder weergegeven. Zoals te zien is dat als \(Q>1/\sqrt{2}\) piekvorming optreedt.

Prototype magnitudespectrum van het 2e orde laagdoorlaatfilter voor verschillende waarden van Q:
Merk op dat wanneer \(Q>1/\sqrt{2}\) piekvorming optreedt.

Voordat de BZT in ASN FilterScript wordt toegepast, moet de analoge overdrachtsfunctie in een analoog filterobject worden gespecificeerd. De volgende code maakt een analoog filterobject voor het hier beschouwde 2e orde laagdoorlaat-prototype:

Main()

wc=2*pi*fc;
Nb={0,0,wc^2};
Na={1,wc/Q,wc^2};

Ha=analogtf(Nb,Na,1,"symbolic"); // make analog filter object

Het \(\texttt{symbolic}\) keyword genereert een symbolische weergave van de overdrachtsfunctie in het commandovenster. Voor een bemonsteringsfrequentie van \(f_s=500Hz\) en \(f_c=30Hz\) en \(Q=0.707\) verkrijgen we:

ASN FilterScript analoog commando

Toepassing van de BZT via het bilineair \(\texttt{bilinear}\) commando zonder prewarping,

 Hd=bilinear(Ha,0,"symbolic"); 

De volledige frequentierespons van het getransformeerde digitale filter staat hieronder, waarbij te zien is dat bij \(30Hz\) de magnitude \(-3dB\) is en de fase \( -90^{\circ}\), zoals verwacht. Merk ook op hoe de magnitude roll-off van het filter wordt beïnvloed door het dubbele nulpaar bij Nyquist (zie de z-vlak grafiek hieronder), wat leidt tot verschillen met zijn analoge neef. Pole-zero chart 2nd order LPF

2nd order LPF
De pool-nul posities kunnen worden getweaked binnen ASN Filterscript of via de ASN Filter Designer’s interactieve pool-nul z-vlak plot editor door alleen de muis te gebruiken!

Implementatie

De volledige code voor het omzetten van een veralgemeend 2e orde analoog laagdoorlaatfilter prototype in zijn digitale equivalent met behulp van de BZT via ASN FilterScript staat hieronder weergegeven:


ClearH1;  // clear primary filter from cascade
interface Q = {0.1,10,0.02,0.707};
interface fc = {10,200,10,40};

Main()

wc=2*pi*fc;
Nb={0,0,wc^2};
Na={1,wc/Q,wc^2};

Ha=analogtf(Nb,Na,1,"symbolic"); // make analog filter object
Hd=bilinear(Ha,0,"symbolic"); // transform Ha via BZT into digital object, Hd

Num=getnum(Hd);
Den=getden(Hd);
Gain=getgain(Hd);

Download demo

Licenties

KBO-PCOB pleit voor laagdrempeliger testen en ventilatiecheck in verpleeghuizen. Dit om de verspreiding van Covid-19 tegen te gaan. Wij denken dat het belangrijk is om continue luchtvochtigheid, temperatuur, volatiele deeltjes als CO2 te meten.

Ventilatiecheck

“Daarnaast worden niet alleen binnen scholen maar ook binnen verpleeghuizen vraagtekens gezet bij de betrouwbaarheid van de ventilatiesystemen als het gaat om verspreiding van aerosolen via zo’n systeem. KBO-PCOB dringt er daarom op aan dat ventilatiesystemen bij verpleeghuizen voor 1 oktober gecheckt worden door uitbreiding van de taken van het Landelijk Coördinatieteam Ventilatie op Scholen. Vanderkaa:“In verpleeghuizen verblijven kwetsbare mensen, daar moet de luchtkwaliteit goed zijn. Het mag niet zo zijn dat bewoners gevaar lopen door ondeugdelijke ventilatiesystemen.”” (KBO-PCOB website)

Belang luchtkwaliteit: continue check

Wij denken dat het wenselijk is dat de luchtkwaliteit continue gecheckt wordt. Niet alleen vanwege Covid-19. Ook om te zorgen dat de luchtkwaliteit goed is vanwege de kwetsbaarheid van oudere mensen.  Om zo de verspreiding van andere virussen zo goed mogelijk tegen te gaan. Daarnaast kan een slecht binnenklimaat leiden tot klachten als niezen, hoofdpijn, duizeligheid. Ook kunnen allergieën en astma worden verergerd. Een oplossing als Airmex meet zowel luchtvochtigheid, temperatuur, volatiele deeltjes als CO2.