Over the decades Microsoft has produced various programming languages (e.g. C#, F#, Visual Basic) and flavours of their .NET paradigm, such as the very popular 4.x .NET Framework.
C# is very popular among Windows developers, as it is based on objected orientated programming concepts together with a few other pearls, such as automatic memory management (something that had to be handled manually in C++), in an attempt to provide many of the advantages of C++ in a much more simplified way.
These pros combined with the .NET Framework’s extensive charting library, UI toolbox, Networking, ML engine libraries and general ease of use in Microsoft Visual Studio was one of the primary reasons that many Windows-based scientific programs (e.g. ASN Filter Designer) were developed using the C# language and .NET Framework.
Over the last few years, Microsoft has tried to consolidate their .NET solution into a single, fast, cross-platform solution with the advent of the .NET Core paradigm. .NET Core is an open-source framework for developing Windows, web applications, services, and mobile applications and it can be run on Windows, Mac and Linux. Microsoft contends that .NET Core is much faster than the .NET Framework since the architecture has been completely rewritten to make it modular, lightweight, fast and cross-platform compatible.
DSP filtering library for C# .NET applications
For many modern scientific applications digital filtering of datasets is just one of the many components needed for an algorithm. This could be extracting ECG and PPG biomedical features, cancelling powerline interference or removing the noise from a dataset. In many cases, it is desirable to perform the filtering in real-time on streaming data as part of an algorithm updating dashboard analytics.
ASN Filter Designer provides .NET developers with an automatic code generator and SDK for developing high-performance data filtering applications in C#.
The tool’s project wizard bundles all of the necessary SDK framework files needed to run a designed filter cascade without the need for any other dependencies or 3rd party plugins. The deployed code is fully compatible with Microsoft Visual Studio and all .NET versions.
Sanjeev is an AIoT visionary and expert in signals and systems with a track record of successfully developing over 25 commercial products. He advises top international blue chip companies on their AIoT solutions and strategies for I4.0, telemedicine, smart healthcare, smart grids and smart buildings.
https://www.advsolned.com/wp-content/uploads/2021/08/benchmarks.png476832ASN consultancy teamhttps://www.advsolned.com/wp-content/uploads/2018/02/ASN_logo.jpgASN consultancy team2021-09-12 14:00:042023-05-11 15:37:40Two new C and C# code generators added to ASN Filter Designer v5
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:
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.
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:
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.
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.
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,
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:
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_CM0
Cortex-M0 core.
ARM_MATH_CM4
Cortex-M4 core.
ARM_MATH_CM0PLUS
Cortex-M0+ core.
ARM_MATH_CM7
Cortex-M7 core.
ARM_MATH_CM3
Cortex-M3 core.
ARM_MATH_ARMV8MBL
ARMv8M Baseline target (Cortex-M23 core).
ARM_MATH_ARMV8MML
ARMv8M 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.
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:
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_CM0
Cortex-M0 core.
ARM_MATH_CM4
Cortex-M4 core.
ARM_MATH_CM0PLUS
Cortex-M0+ core.
ARM_MATH_CM7
Cortex-M7 core.
ARM_MATH_CM3
Cortex-M3 core.
ARM_MATH_ARMV8MBL
ARMv8M Baseline target (Cortex-M23 core).
ARM_MATH_ARMV8MML
ARMv8M 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
Digital signal processing: principles, algorithms and applications, J.Proakis and D.Manoloakis
Digital signal processing: a practical approach, E.Ifeachor and B.Jervis.
Digital filters and signal processing, L.Jackson.
Step by step video tutorial of designing an IIR and deploying it to Keil MDK uVision.
Implementing Biquad IIR filters with the ASN Filter Designer and the Arm CMSIS-DSP software framework (ASN-AN025)
https://www.advsolned.com/wp-content/uploads/2020/04/asn25_DFI.png331867ASN consultancy teamhttps://www.advsolned.com/wp-content/uploads/2018/02/ASN_logo.jpgASN consultancy team2021-05-17 14:20:262021-05-17 14:37:02Implementierung von Biquad-IIR-Filtern mit dem ASN Filter Designer und dem Arm CMSIS-DSP Software Framework
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.
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,
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:
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,
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
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.
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 :
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.
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.
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).
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
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.
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.
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.
https://www.advsolned.com/wp-content/uploads/2020/04/fir_iir.png453622ASN consultancy teamhttps://www.advsolned.com/wp-content/uploads/2018/02/ASN_logo.jpgASN consultancy team2021-05-15 12:32:032021-05-15 12:32:06Différence entre les filtres RII et RIF: un guide pratique de conception
Many Audio/acoustics engineers and researchers and audio hobbyists work with DSP (Digital Signal Processing). Some now and then, some on daily basis. Working on DSP for audio and speech, common challenges to create digital filters are: Noise cancellation, due to interference and Audio and Speech enhancement. And for whom DSP is not his daily job: filter design in general. In this blog, you’ll find out how the ASN Filter Designer may help for both experienced audio engineers and engineers where DSP is not their daily job to create digital filters for audio and speech.
For whom? For those with some and experienced DSP knowledge alike
If you are a audio/acoustics engineer or researcher or hobbyist: ASN Filter Designer is tailored for whom DSP is not his daily job and with some knowledge DSP. For those who need filter design and have to create some signal analysis. But also for those whom DSP is his daily job and want to save time and money. Most engineers who are working with DSP on a daily basis, are usually working with extensive but also expensive tools. Or want to do the maths themselves. Also for them ASN Filter Designer is useful:
Intuitive and easy to use.
Save days of time spending calculating on your own for the price of 2-3 hours of work.
Few lesser costs then extensive tooling with features you don’t use anyway.
Automatic code generation: export for further analysis to Matlab, etc, or to Cortex-M Arm based processors via the Arm CMSIS-DSP software framework.
How DSP for Speech and audio benefit from ASN Filter Designer:
Experiment with a variety of equalisation, noise cancellation and sound effect audio filtering algorithms.
Perform data analysis in the frequency domain and via specialised methods, including Cepstral analysis on the streaming data.
Import your own wav audio files (mono or stereo up to 48kHz) for streaming, and modify the filter characteristics in real-time while listening to the filtered audio stream.
Some features for creating digital filters for Audio and Speech:
The sampling frequency may be specified up to 4 decimal places
which is useful for designing filters based on fractional sampling frequencies, such as multiples of the 44.1kHz audio standard. Common examples include audio interpolation filters: 44.1kHz × 128 = 5.6448MHz and 44.1kHz × 256 = 11.2896MHz.
Filter orders of up to 499
may be constructed, where this is limited to 200 for streaming audio applications. As with the IIR filters, a FIR’s zeros may be modified by the P-Z editor (Method dropdown list changes to User defined), including the ability of adding poles and converting it into an IIR filter.
Audio and user data playback streaming
Signal Generator Controller: Choose what you want to listen to; Adjust the amplitude of the input signal
The signal analyzer allows designers to test their design on audio, real (user) data or synthetic data via the built-in signal generator. Default data playback is implemented as streaming data, providing a simple way of assessing the filter’s dynamic performance, which is especially useful for fixed point implementations. Both frequency domain and time domain charts are fully supported, allowing for design verification via transfer function estimation using the cross and power spectral density functions. As with all other charts, the signal analyzer chart fully supports advanced zooming and panning, as well as comprehensive chart data file export options.
Load .wav for playback
The signal generator allows you to load .wav audio files for playback via the Audio File method. Both mono and stereo formats are fully supported for 8.000, 11.025, 16.000, 22.05, 44.1 and 48kHz. sampling rates. There is no restriction as to the length of the .wav file.
You may add extra signals to input audio stream
Use the signal generator to add sinewaves and white noise to the data stream.
Intuitive data analysis with the mouse
Move the mouse over the chart will automatically produce data markers and data analytics (shown at the bottom right side of the GUI). The signal analyzer is directly coupled to the filter designer GUI. This means that you may modify the filter characteristics, and see the effects in real-time in the signal analyzer. This functionality is very useful when designing audio filters, as the new filter settings can be heard immediately on the streaming audio feed.
Digital filters commonly used in audio and speech
The ASN Filter designer includes digital filters commonly used in audio such as:
New book on Arm’s latest processors: The Definitive Guide to Arm Cortex-M23 and Cortex-M33 Processors. The book is written by Joseph Yiu, Arm’s resident architecture guru. It features benchmarks and experiments with our DSP filter design tooling (ASN Filter Designer) using CMSIS-DSP for Arm’s latest processors
We’re proud that Dr. Sanjeev Sarpal, Director of AI at Advanced Solutions Nederland has provided support in the digital filter design topic. We’re also very pleased to announce that Joseph Yiu’s new book features a chapter on the ASN Filter Designer for AI/IoT applications using the M23 and M33 Cortex-M cores. Advanced Solutions Nederland works closely with Arm’s DSP/architecture team for AI/DSP solutions using their cores. We’re currently working with Arm on releasing whitepapers on the Cortex-M55.
Armv8-M architecture and its features
The Definitive Guide to Arm® Cortex®-M23 and Cortex-M33 Processors focuses on the Armv8-M architecture and the features that are available in the Cortex-M23 and Cortex- M33 processors.
This book covers a range of topics, including:
the instruction set
the programmer’s model
interrupt handling
OS support
debug features
It demonstrates how to create software for the Cortex-M23 and Cortex-M33 processors by way of a range of examples. This enables embedded software developers to understand the Armv8-M architecture.
Worked out examples with ASN Filter Designer
Joseph Yiu’s new book features a chapter on the ASN Filter Designer for AI/IoT applications using the M23 and M33 Cortex-M cores. Our Director of AI, Dr. Sanjeev Sarpal, has provided support.
“The ASN Filter Designer Professional software supports a wide range of filter types. Its design allows filters to be designed via an interactive user interface, where various parameters can be adjusted and the design’s output can immediately be viewed. It also supports the simulation of the filter’s response so that the simulation outputs can be examined to determine whether the filter meets the requirements of the application. An added bonus, for developers creating software for Cortex-M processors, is that it generates C code that directly call CMSIS-DSP library functions (the designed filters can also be exported to C/C++, Python, Matlab, etc.).”
Defining the frequency response of the filter
“A number of commercial filter-design software tools are designed specifically for filter-design tasks and make it easier tot analyze a filters’ characteristics. For software developers who are not familiar with filter designs, these tools can be a great help” (p. 820). Thereby, Joseph Yiu uses the ASN Filter Designer for worked out examples. He creates a low pass biquad filter for a system with 48kHz sampling rate and with single-precision floating-point data type.
https://www.advsolned.com/wp-content/uploads/2021/03/Joseph-Yiu-Arm-Cortex-ASN-Filter-Designer-book.jpg427630ASN consultancy teamhttps://www.advsolned.com/wp-content/uploads/2018/02/ASN_logo.jpgASN consultancy team2021-03-16 12:30:532022-12-13 16:07:28New book: "Definitive Guide to Arm Cortex-M23 and Cortex-M33 Processors” by Joseph Yiu
What are Finite Impulse Respsonse (FIR) Filters? And how to design FIR Filters in ASN Filter Designer and which filters does ASN Filter Designer support?
https://www.advsolned.com/wp-content/uploads/2018/07/Direct-Form.png11151050ASN consultancy teamhttps://www.advsolned.com/wp-content/uploads/2018/02/ASN_logo.jpgASN consultancy team2020-08-22 14:30:522021-03-12 16:19:02How to design FIR Filters in ASN Filter Designer
The P-Z (pole-zero) editor, comprehensive and easy to use pole-zero editor. Together with useful options not commonly found in other filter design software.