In diesem Artikel werden die Vor- und Nachteile des Tschebyscheff-Filters erörtert, einschließlich Codebeispielen in ASN Filterscript.

Moderne eingebettete Prozessoren, Software-Frameworks und Design-Tools ermöglichen es Ingenieuren jetzt, im Rahmen der I4.0-Revolution fortschrittliche Messkonzepte in intelligenten Fabriken anzuwenden.

In den letzten Jahren hat die vorausschauende Wartung (Predictive Maintenance) von Maschinen große Beachtung gefunden, da Fabriken ihre Produktionseffizienz maximieren und gleichzeitig die unschätzbaren Fähigkeiten erfahrener Vorarbeiter und Produktionsmitarbeiter erhalten wollen.

Früher ging ein Vorarbeiter durch die Werkshalle und hörte auf die Geräusche, die eine Maschine machte, um eine Vorstellung von einem bevorstehenden Ausfall zu bekommen. Mit dem Aufkommen der I4.0-Technologie können nun Mikrofone, DSP-Algorithmen und ML eingesetzt werden, um den Geräuschen einer Maschine zuzuhören” und dann eine Klassifizierung und Vorhersage zu treffen.

Eine der größten Herausforderungen ist die Frage, wie man einen Computer dazu bringt, wie ein Mensch zu hören.

Die Physik des menschlichen Ohrs

Rechts ist eine Abbildung des menschlichen Ohrs zu sehen. Wie man sieht, besteht die grundlegende Aufgabe des Ohrs darin, Schall (Luftschwingungen) in elektrische Nervenimpulse umzuwandeln, die vom Gehirn interpretiert werden.

Eine Illustration des menschlichen Ohrs auf der rechten Seite. Wie man sieht, besteht die grundlegende Aufgabe des Ohrs darin, Schall (Luftschwingungen) in elektrische Nervenimpulse zu übersetzen, die vom Gehirn interpretiert werden.

Wie funktioniert das?

Das Ohr erreicht dies über drei Knochen (Stapes, Incus und Malleus), die als mechanische Verstärker für die am Trommelfell empfangenen Schwingungen fungieren. Diese verstärkten Töne werden dann über das ovale Fenster (nicht abgebildet) an die Cochlea weitergeleitet. Die Cochlea (lila dargestellt) ist mit einer Flüssigkeit gefüllt, die sich als Reaktion auf die Schwingungen des ovalen Fensters bewegt. Während sich die Flüssigkeit bewegt, werden Tausende von Nervenenden in Bewegung gesetzt. Diese Nervenenden wandeln die Schallschwingungen in elektrische Impulse um, die entlang der Hörnervenfasern zum Gehirn geleitet und dort ausgewertet werden.

Modellierung des wahrgenommenen Schalls

Aufgrund der Komplexität des strömungsmechanischen Aufbaus des menschlichen Gehörs sind tiefe und hohe Frequenzen normalerweise nicht wahrnehmbar. Forscher haben im Laufe der Jahre herausgefunden, dass der Mensch Geräusche im Bereich von 1-6 kHz am besten wahrnimmt, wobei dieser Bereich je nach dem Gesundheitszustand der Person variiert.

Diese Forschung führte zur Definition einer Reihe von Bewertungskurven: die sogenannten A-, B-, C- und D-Bewertungskurven, die den Frequenzgang eines Mikrofons ausgleichen. Diese Gewichtungskurven zielen darauf ab, die digitale und die physische Welt einander anzunähern, indem sie es einem computergestützten Mikrofonsystem ermöglichen, wie ein Mensch zu hören.

Die A-Bewertungskurve ist die am weitesten verbreitete Kurve, da sie gemäß IEC-61672 in allen Schallpegelmessern enthalten sein muss. Die B- und D-Kurven werden kaum verwendet, aber die C-Bewertung kann zur Prüfung der Auswirkungen von Lärm in Telekommunikationssystemen eingesetzt werden.

A-Bewertungskurve

Der Frequenzgang der A-Bewertungskurve ist oben abgebildet. Es ist zu erkennen, dass Geräusche, die in unser Ohr eindringen, unterhalb von 500 Hz unterdrückt werden und zwischen 0,5 und 6 kHz am stärksten wahrnehmbar sind. Beachten Sie, dass die Kurve oberhalb von 20kHz nicht spezifiziert ist, da dies den menschlichen Hörbereich überschreitet.

ASN FilterScript

Die symbolische mathematische Skriptsprache FilterScript von ASN bietet Entwicklern die Möglichkeit, eine analoge Filterübertragungsfunktion mit nur wenigen Zeilen Code in ihr digitales Äquivalent umzuwandeln.

Die analogen Übertragungsfunktionen der A- und C-Bewertungskurven sind unten angegeben:

\(H_A(s) \approx \displaystyle{7.39705×10^9 \cdot s^4 \over (s + 129.4)^2\quad(s + 676.7)\quad (s + 4636)\quad (s + 76655)^2}\)

\(H_C(s) \approx \displaystyle{5.91797×10^9 \cdot s^2\over(s + 129.4)^2\quad (s + 76655)^2}\)

Diese analogen Übertragungsfunktionen können mit Hilfe der Funktion bilinear() in ihre digitalen Äquivalente umgewandelt werden. Es ist jedoch zu beachten, dass \(H_A(s) \) ein erhebliches Maß an algebraischer Manipulation erfordert, um die Koeffizienten des Nenners in Potenzen von \(s\) zu extrahieren.

Faltung

Ein einfacher Trick für die Multiplikation von Polynomen ist die lineare Faltung, die dieselbe algebraische Operation ist wie die Multiplikation von zwei Polynomen miteinander. Dies lässt sich leicht mit der Funktion conv() von Filterscript wie folgt durchführen:

y=conv(a,b);

Als einfaches Beispiel würde die Multiplikation von \((s^2+2s+10)\) mit \((s+5)\) durch die folgenden drei Zeilen FilterScript-Code definiert:

a={1,2,10};
b={1,5};
y=conv(a,b);

which yields, 1 7 20 50 or \((s^3+7s^2+20s+50)\)

Für die Laplace-Übertragungsfunktion der A-Bewertungskurve ist der vollständige FilterScript-Code unten angegeben:

ClearH1;  // clear primary filter from cascade

Main() // main loop

a={1, 129.4};
b={1, 676.7};
c={1, 4636};
d={1, 76655};

aa=conv(a,a); // polynomial multiplication
dd=conv(d,d);

aab=conv(aa,b);
aabc=conv(aab,c);

Na=conv(aabc,dd);
Nb = {0 ,0 , 1 ,0 ,0 , 0, 0}; // define numerator coefficients
G = 7.397e+09; // define gain

Ha = analogtf(Nb, Na, G, "symbolic");
Hd = bilinear(Ha,0, "symbolic");

Num = getnum(Hd);
Den = getden(Hd);
Gain = getgain(Hd)/computegain(Hd,1e3); // set gain to 0dB@1kHz



Frequenzgang des analogen gegenüber dem digitalen A-Bewertungsfilter für \(f_s=48kHz\). Wie zu sehen ist, stimmt der digitale äquivalente Amplitudengang bis \(6kHz\) sehr gut mit dem idealen analogen Amplitudengang überein.

Die ITU-R 486-4-Bewertungskurve

Eine weitere interessante Bewertungskurve ist die von der BBC entwickelte ITU-R 486-4-Bewertungskurve. Im Gegensatz zum A-Bewertungsfilter beschreibt die ITU-R 468-4-Kurve die subjektive Lautheit für breitbandige Reize. Der Hauptnachteil der A-Bewertungskurve besteht darin, dass sie die Lautheitsbeurteilung realer Reize insbesondere im Frequenzband von etwa 1-9 kHz unterschätzt.

Aufgrund der genauen Definition der 486-4-Bewertungskurve ist keine analoge Übertragungsfunktion verfügbar. Stattdessen liefert die Norm eine Tabelle mit Amplituden und Frequenzen – siehe hier. Diese Spezifikation kann direkt in die firarb() -Funktion von Filterscript eingegeben werden, um ein geeignetes FIR-Filter zu entwerfen, wie unten gezeigt:

ClearH1;  // clear primary filter from cascade
ShowH2DM;

interface L = {10,400,10,250}; // filter order

Main()

// ITU-R 468 Weighting
A={-29.9,-23.9,-19.8,-13.8,-7.8,-1.9,0,5.6,9,10.5,11.7,12.2,12,11.4,10.1,8.1,0,-5.3,-11.7,-22.2};
F={63,100,200,400,800,1e3,2e3,3.15e3,4e3,5e3,6.3e3,7.1e3,8e3,9e3,1e4,1.25e4,1.4e4,1.6e4,2e4};

A={-30,A};  //  specify arb response
F={0,F,fs/2};   //

Hd=firarb(L,A,F,"blackman","numeric");

Num=getnum(Hd);
Den={1};
Gain=getgain(Hd);


Frequenzgang eines ITU-R 468-4 FIR-Filters, der mit der firarb()-Funktion von Filterscript für \(f_s=48kHz\) entworfen wurde.

Wie Sie gesehen haben, bietet FilterScript dem Designer eine sehr leistungsfähige symbolische Skriptsprache für den Entwurf von Gewichtungskurvenfiltern. Die folgende Diskussion konzentriert sich nun auf die Implementierung des A-Bewertungsfilters auf einem Arm-basierten Prozessor über den automatischen Codegenerator des Tools. Die im Folgenden vorgestellten Konzepte und Schritte gelten gleichermaßen für FIR-Filter.

Automatische Codegenerierung für Arm-Prozessorkerne über CMSIS-DSP

Die automatische Codegenerierung 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.

Vor der Generierung des Codes muss der H2-Filter (d. h. der in FilterScript entworfene Filter) zunächst für den Einsatz in eine H1-Filterstruktur (Hauptfilter) umoptimiert (transformiert) werden. Das Options Menü befindet sich unter der Registerkarte P-Z in der Hauptbenutzeroberfläche.

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. Die Struktur Direct Form II Transposed wird für die Fließkomma-Implementierung empfohlen, da sie eine höhere numerische Genauigkeit aufweist.

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

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

ARM Code selection

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 ist dargestellt

Wie man sieht, generiert der automatische Code-Generator des ASN Filter Designers den gesamten Initialisierungscode, die Skalierung und die Datenstrukturen, die für die Implementierung des IIR-Filters mit A-Bewertung über die CMSIS-DSP-Bibliothek von Arm erforderlich sind.

ASN Filter Designer box
ASN Filter Designer Leistungsstarke DSP-Plattform

Syntax

Hd = ellip (Order, Frequencies, Rp, Rs, Type, DFormat)

Beschreibung

Klassischer IIR-elliptischer Filterentwurf.

  • Gleichwelligkeit sowohl im Durchlass- als auch im Sperrbereich.
  • Schnellster Roll-Off.
  • Filter mit der niedrigsten Ordnung von allen unterstützten Prototypen.

Cauer-Filter oder elliptische Filter

Hd = ellip (Order, Frequencies, Rp, Rs, Type, DFormat)

Order: kann bis zu 20 (Professional) und bis zu 10 (Educational) Edition angegeben werden. Wird die Order auf 0 gesetzt, wird der Algorithmus zur automatischen Bestimmung der Ordnung aktiviert.

Frequencies: Tiefpass- und Hochpassfilter haben ein Übergangsband und benötigen daher zwei Frequenzen (d.h. untere und obere Grenzfrequenz des Übergangsbandes). Für Bandpass- und Bandsperrfilter werden vier Frequenzen benötigt (d. h. zwei Übergangsbänder). Alle Frequenzen müssen in aufsteigender Reihenfolge und < Nyquist sein (siehe das nachstehende Beispiel).

Rp: Durchlassband-Welligkeit in dB.

Rs: Sperrbanddämpfung in dB.

Type: Die elliptische Methode ermöglicht den Entwurf von lowpass, highpass, bandpass bzw. bandstopfiltern.

Hd: Die elliptische Methode entwirft ein elliptisches IIR-Filter auf der Grundlage der eingegebenen Spezifikationen und legt die Übertragungsfunktion (d. h. Zähler, Nenner, Verstärkung) in ein digitales Filterobjekt, Hd, ab. Das digitale Filterobjekt kann dann mit anderen Methoden kombiniert werden, falls dies erforderlich ist. Für ein digitales Filterobjekt Hd werden durch den Aufruf von getnum(Hd), getden(Hd) und getgain(Hd) die Zähler-, Nenner- bzw. Verstärkungskoeffizienten extrahiert – siehe unten.

DFormat: ermöglicht die Angabe des Anzeigeformats des resultierenden digitalen Filterobjekts.

symbolic Zeigt eine symbolische Darstellung des Filterobjekts an. Wenn die Ordnung > 10 ist, wird die symbolische Anzeigeoption überschrieben und auf numerisch gesetzt.
numeric Zeigt eine Matrixdarstellung des Filterobjekts an.
void Erzeugt ein Filterobjekt, zeigt aber keine Ausgabe an.

Beispiel
[code lang=”java”]
ClearH1; // clear primary filter from cascade
ShowH2DM; // show DM on chart&amp;lt;/code&amp;gt;

Main()

Rp=1;
Rs=80;
F={50,120};
Hd=ellip(0,F,Rp,Rs,"lowpass","symbolic");

F={50,80,100,120};
Hd=ellip(0,F,Rp,Rs,"bandpass","symbolic");

Num = getnum(Hd); // define numerator coefficients
Den = getden(Hd); // define denominator coefficients
Gain = getgain(Hd); // define gain
[/code]

Siehe auch

bessel / butter / cheby1 / cheby2 / ellip / arbmagphase / cplxfreqshift / dcremover / notch / peaking

Amélioration des conceptions existantes basées sur des filtres analogiques

Les filtres analogiques existent depuis les débuts de l’électronique, depuis les simples réseaux inductance-condensateur jusqu’aux filtres actifs plus avancés avec des amplificateurs opérationnels. En tant que tel, il existe une riche collection de conceptions de filtres une large gamme d’applications de mesure de capteurs. Cependant, avec les exigences de performance des applications modernes de mesure de capteurs IoT (Internet des objets) et la baisse des coûts des produits, les filtres numériques intégrés dans le code d’application du microcontrôleur deviennent la norme, (strong>mais comment obtenir le meilleur des deux mondes??

Plutôt que de réinventer la roue, les concepteurs de produits peuvent prendre une fonction de transfert de filtre analogique existante, la transformer en numérique (via une transformation) et l’implémenter en tant que filtre numérique dans un microcontrôleur ou un DSP (processeur de signal numérique). Bien que les transformations analogiques-numériques existent depuis des décennies, la disponibilité d’outils de conception de DSP permettant d’ajuster le “filtre numérique transformé” a été quelque peu limitée, ce qui a entravé le processus de conception et de validation.

Un filtre passe-bas analogique de 2e ordre est illustré ci-dessous. Dans sa forme la plus simple, seuls 5 composants sont nécessaires pour construire le filtre, ce qui semble facile. N’est-ce pas?Un filtre passe-bas analogique de 2e ordre est illustré ci-dessous. Dans sa forme la plus simple, seuls 5 composants sont nécessaires pour construire le filtre, ce qui semble facile. N'est-ce pas?

Les avantages

L’avantage le plus évident est que les filtres analogiques ont une excellente résolution, car il n’y a pas de “nombre de bits” à prendre en compte. Les filtres analogiques ont de bonnes propriétés CEM (compatibilité électromagnétique) car aucun bruit d’horloge n’est généré. Il n’y a pas d’effets de repliement, ce qui est certainement vrai pour les amplificateurs opérationnels plus simples, qui n’ont pas de circuit fantaisiste de hachage ou d’auto-calibrage intégré, et les conceptions analogiques peuvent être bon marché, ce qui est idéal pour les applications sensibles au coût.

C’est très bien, mais quelle est la mauvaise nouvelle ?

Les filtres analogiques présentent plusieurs inconvénients importants qui affectent leurs performances, tels que le vieillissement des composants, la dérive en température et la tolérance des composants. De plus, de bonnes performances exigent de bonnes compétences en matière de conception analogique et une bonne disposition des circuits imprimés, ce qui est difficile à trouver sur le marché actuel des compétences.

Ces inconvénients rendent les filtres numériques beaucoup plus attrayants pour les applications modernes, qui exigent une grande répétabilité des caractéristiques. Prenons un exemple : disons que vous souhaitez fabriquer 1000 modules de mesure après avoir optimisé la conception de votre filtre. Avec une solution numérique, vous pouvez être sûr que les performances de votre filtre seront identiques dans tous les modules. Ce n’est certainement pas le cas avec l’analogique, car la tolérance des composants, leur vieillissement et la dérive de la température font que le filtre de chaque module aura ses propres caractéristiques. De plus, la réponse en fréquence d’un filtre analogique reste fixe, c’est-à-dire qu’un filtre de Butterworth sera toujours un filtre de Butterworth – toute modification de la réponse en fréquence nécessiterait de changer physiquement les composants sur le circuit imprimé – ce qui n’est pas idéal !

Les filtres numériques sont adaptatifs et flexibles, nous pouvons concevoir et mettre en œuvre un filtre avec la réponse en fréquence que nous voulons, le déployer et mettre à jour les coefficients du filtre sans rien changer sur le PCB ! Il est également facile de concevoir des filtres numériques avec une phase linéaire et à des fréquences d’échantillonnage très basses – deux choses qui sont délicates avec l’analogique.

Transformations de Laplace en transformées discrètes/numériques

Les trois méthodes présentées ici consistent essentiellement à transformer une fonction de transfert de Laplace (analogique), \(H(s)\), en une fonction de transfert discrète, \(H(z)\), de sorte qu’un filtre analogique éprouvé et déjà utilisé dans une conception puisse être mis en œuvre sur un microcontrôleur ou un DSP.

Une sélection de quelques transformées de Laplace en z utiles est donnée dans le tableau ci-dessous :

\(
\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}
\)
Un tableau des transformées de Laplace et de z utiles

La transformée en z bilinéaire (BZT)

La transformée bilinéaire en z (BZT) convertit simplement une fonction de transfert analogique, \(H(s)\), en une fonction de transfert discrète, \(s\), en remplaçant tous les termes s par les suivants :

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

Où, \(T\) est la période d’échantillonnage du système discret. Cependant, en substituant \(s=j\Omega\) et \(z=e^{jwT}\) dans l’équation BZT et en simplifiant, on remarque qu’il existe en réalité une relation non linéaire entre les fréquences analogiques, \(\Omega\) et discrètes, \(w\). Cette relation est montrée ci-dessous, et est due à la non-linéarité de la fonction arctangente.

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

En analysant l’équation, on constate que les fréquences analogiques équidistantes dans la plage \(-\infty<\Omega<\infty\) sont compressées de manière non linéaire dans la plage de fréquences \(-\pi<w<\pi\) dans le domaine discret. Cette relation est appelée déformation des fréquences, et peut être compensée par une déformation préalable des fréquences analogiques par:

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

où, \(\displaystyle\Omega_c\) est la fréquence analogique compensée ou pré-gauchie, et \(\displaystyle\Omega_d\) est la fréquence analogique souhaitée.

La commande \(\texttt{bilinear}\) de ASN FilterScript peut être utilisée pour convertir une fonction de transfert de Laplace en son équivalent discret en utilisant la transformée BZT. Un exemple est donné ci-dessous. La commande ASN FilterScript bilinéaire peut être utilisée pour convertir une fonction de transfert Laplace en son équivalent discret en utilisant la transformée BZT. Un exemple est donné ci-dessous.

La transformation invariante en fonction des impulsions

La deuxième transformation est appelée transformation invariante aux impulsions (IIT), car les pôles de la fonction de transfert de Laplace sont convertis en leurs équivalents discrets, de sorte que la réponse impulsionnelle discrète, \(h(n)\), est identique à une représentation régulièrement échantillonnée de la réponse impulsionnelle analogique (c’est-à-dire \(h(n)=h(nT)\), où \(T\) est le taux d’échantillonnage et \(t=nT\)). L’IIT est une technique de transformation beaucoup plus fastidieuse que la BZT, car la fonction de transfert de Laplace doit d’abord être développée à l’aide de fractions partielles avant d’appliquer la transformation.

La technique de transformation est définie ci-dessous:

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

Cette méthode souffre de plusieurs contraintes, puisqu’elle ne permet pas la transformation des zéros ou des termes constants individuels (une fois développés), et doit avoir un taux d’échantillonnage élevé afin de surmonter les effets de l’aliasing spectral. En effet, les effets de repliement gênent considérablement cette méthode, de sorte qu’elle ne devrait être utilisée que lorsque l’exigence est de faire correspondre la réponse impulsionnelle de la fonction de transfert analogique, puisque le modèle discret résultant peut avoir un spectre d’amplitude et de phase (réponse en fréquence) différent de celui du système analogique original. Par conséquent, la méthode d’invariant d’impulsion ne convient pas à la modélisation des filtres passe-haut, et est donc limitée à la modélisation des filtres de type passe-bas ou passe-bande.

En raison des limitations susmentionnées de la méthode IIT, elle n’est actuellement pas supportée dans ASN Filterscript.

La transformation Matched-z

Une autre technique de modélisation analogique à discrète est la transformation matched-z. Comme son nom l’indique, cette transformation convertit les pôles et les zéros de la fonction de transfert analogique directement en pôles et zéros dans le plan z. La transformation est décrite ci-dessous, où \(T\) est la fréquence d’échantillonnage.

\(\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}
\)

En analysant l’équation de transformation, on constate que les pôles transformés du plan z seront identiques aux pôles obtenus avec la méthode de l’invariant d’impulsion. Cependant, notez que les positions des zéros seront différentes, puisque la méthode de l’invariant d’impulsion ne peut pas les transformer.
La commande ASN Filterscript \(\texttt{mztrans}\) est disponible pour cette méthode.

Un exemple détaillé

Afin de démontrer la facilité de transformer les filtres analogiques en leurs équivalents discrets/numériques à l’aide des transformées analogiques/discrètes, un exemple de modélisation avec la BZT va maintenant suivre pour un filtre analogique passe-bas du 2ème ordre.

Un filtre analogique passe-bas d’ordre 2 généralisé est donné par:

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

Où \(w_c=2\pi f_c\) est la fréquence de coupure et \(\zeta\) définit l’amortissement du filtre, où un \(\zeta=1/\sqrt{2}\) est dit être amorti de façon critique ou égal à -3dB à \(w_c\). De nombreux ingénieurs analogiques choisissent de spécifier un facteur de qualité, \(Q =  \displaystyle\frac{1}{2\zeta}\) ou un facteur de crête pour leurs conceptions. En substituant \(Q\) dans \(H(s)\), nous obtenons :

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

En analysant \(H(s)\), on remarque que \(Q=1/\sqrt{2} = 0.707\) donne également une réponse amortie de façon critique. Différentes valeurs de \(Q\) sont illustrées ci-dessous, et comme on le voit lorsque \(Q>1/\sqrt{2}\) un pic se produit.

Spectre d’amplitude du prototype du filtre passe-bas du 2ème ordre pour différentes valeurs de Q:
remarquez que lorsque \(Q>1/\sqrt{2}\) un pic se produit.

Avant d’appliquer la BZT dans ASN FilterScript, la fonction de transfert analogique doit être spécifiée dans un objet filtre analogique. Le code suivant configure un objet filtre analogique pour le prototype passe-bas d’ordre 2 considéré ici :

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

Le mot clé \(\texttt{symbolic}\) génère une représentation symbolique de la fonction de transfert dans la fenêtre de commande. Pour un taux d’échantillonnage de \(f_s=500Hz\) et \(f_c=30Hz\) et \(Q=0.707\), on obtient :

Commande analogique ASN FilterScript

Application de la BZT via la commande \(\texttt{bilinear}\) sans préwarping,

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

La réponse en fréquence complète du filtre numérique transformé est présentée ci-dessous, où l’on peut voir qu’à \(30Hz\), l’amplitude est de \(-3dB\) et la phase de \( -90^{\circ}\), ce qui est conforme aux attentes. Remarquez également comment l’atténuation de la magnitude du filtre est affectée par la double paire de zéros à Nyquist (voir le graphique du plan z ci-dessous), ce qui entraîne des différences avec son cousin analogique. Graphique pôle-zéro LPF du 2ème ordre

LPF de 2ème ordre

Les positions des pôles et des zéros peuvent être modifiées dans ASN Filterscript ou via l’éditeur interactif du plan z des pôles et des zéros de ASN Filter Designer en utilisant simplement la souris!

Implémentation

Le code complet pour transformer un prototype de filtre passe-bas analogique généralisé du 2ème ordre en son équivalent numérique en utilisant le BZT via ASN FilterScript est donné ci-dessous :


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

Der Filter des gleitenden Durchschnitts (auch gleitender Mittelwert) ist vielleicht einer der am häufigsten verwendeten FIR-Filter aufgrund seiner konzeptionellen Einfachheit und leichten Implementierung. Wie im Diagramm unten zu sehen, ist zu beachten, dass der Filter keine Multiplikationen benötigt. Nur Additionen und eine Verzögerungsleitung. Das macht ihn sehr geeignet für viele extrem stromsparende eingebettete Geräte mit einfachen Rechenfähigkeiten.

fir direct form

Trotz seiner Einfachheit ist das Filter des gleitenden Durchschnitts optimal geeignet, um Rauschen zu reduzieren und gleichzeitig eine scharfe Sprungantwort beizubehalten, was es zu einem vielseitigen Baustein für intelligente Sensorsignalverarbeitungsanwendungen macht.

Ein Filter mit gleitendem Durchschnitt der Länge \(L\) für ein Eingangssignal \(x(n)\) kann wie folgt definiert werden:

\(y(n)=\large{\frac{1}{L}}\normalsize{\sum\limits_{k=0}^{L-1}x(n-k)}\) for \(\normalsize{n=0,1,2,3….}\)

Dabei besagt eine einfache Faustregel, dass der Betrag der Rauschunterdrückung gleich der Quadratwurzel aus der Anzahl der Punkte im Mittelwert ist. Zum Beispiel führt ein Filter des gleitenden Durchschnitts der Länge 9 zu einer Rauschunterdrückung um den Faktor 3.

Filter des gleitenden Durchschnitts (auch gleitender Mittelwert) Frequenzgang eines Filters des gleitenden Durchschnitts-Filters der Länge 9. Beachten Sie die schlechte Dämpfung des Sperrbereichs bei etwa -20 dB.

Vorteile

  • Das am häufigsten verwendete digitale Tiefpassfilter
  • Optimal für die Reduzierung von Rauschen unter Erhaltung einer scharfen Sprungantwort
  • Gute Glättung (Zeitbereich)
  • Einwertige Filterkoeffizienten, keine MAC-Operationen (Multiplizieren und Akkumulieren) erforderlich.
  • Konzeptionell einfach zu implementieren

Nachteile

  • Unflexibler Frequenzgang: das Verschieben eines konjugierten Nullpunktpaares führt zu nicht-einheitlichen Koeffizienten
  • Schlechtes Tiefpassfilter (Frequenzbereich): langsamer Roll-Off und schlechte Dämpfungseigenschaften im Sperrbereich

Implementierung

Der Filter des gleitenden Durchschnitts kann in span style=”color: #0000ff;”>ASN FilterScript wie folgt implementiert werden:

ClearH1;  // clear primary filter from cascade
Main();
Hd=movaver(8,"symbolic");  // design an 8th order MA
Num = getnum(Hd);   // define numerator coefficients
Den = {1};          // define denominator coefficients
Gain = getgain(Hd); // define gain

Eine rechnerisch effizientere Implementierung des Filters des gleitenden Durchschnitts wird hier diskutiert.

Weitere Information

  • Understanding Digital Signal Processing, Chapter 5, R. G. Lyons
  • The Scientist and Engineer’s Guide to Digital Signal Processing, Chapter 15, Steven W. Smith

Demo jetzt herunterladen

Lizenzierung

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