Kammfilter werden als Netzfilter (50/60 Hz) zur Auslöschung von Oberwellen in Audioanwendungen eingesetzt und bilden die Grundlage für sogenannte CIC-Filter (Cascaded Integrator-Comb), die für Anti-Aliasing bei der Dezimierung (Verringerung der Abtastrate) und Anti-Imaging bei Interpolationsanwendungen (Erhöhung der Abtastrate) verwendet werden.
Der Frequenzgang eines Kammfilters besteht aus einer Reihe von regelmäßig beabstandeten Mulden, die das Aussehen eines Kamms ergeben. Wie in der Abbildung unten zu sehen ist, erscheint der Abstand der einzelnen Senken entweder bei ungeraden oder geraden Oberwellen der gewünschten Grundfrequenz.
Frequenzgang eines typischen FIR-Kammfilters (Auslöschung ungerader Harmonischer): \(f_s=500Hz\), \(f_c=25Hz\), \(L=10\) und \(\alpha=1\)
Ein FIR-Kammfilter kann durch die folgende Übertragungsfunktion beschrieben werden:
Offensichtlich ist das Kammfilter einfach ein gewichtetes verzögertes Replikat seiner selbst, spezifiziert durch \(L\). Durch inverse z-Transformationen erhalten wir die für die Implementierung benötigte Differenzengleichung,
\(y(n)=x(n)+\alpha x(n-L)\)
wobei \(\alpha\) zur Einstellung der Q (Bandbreite) der Kerbe verwendet wird und entweder positiv oder negativ sein kann, je nachdem, welche Art von Frequenzgang erforderlich ist. Um dies zu verdeutlichen: Negative Werte von \(\alpha\) haben ihren ersten Tiefpunkt bei DC und ihren zweiten Tiefpunkt bei der Grundfrequenz. Es ist klar, dass diese Art von Kammfilter verwendet werden kann, um DC-Komponenten aus einer gemessenen Wellenform zu entfernen, falls dies erforderlich ist. Alle nachfolgenden Tiefpunkte erscheinen bei geraden Harmonischen bis einschließlich der Nyquist-Frequenz.
Positive Werte von \(\alpha\) hingegen haben nur Mulden bei der Grundfrequenz und den ungeraden Harmonischen und können daher nicht zur Entfernung von Gleichstromanteilen verwendet werden.
Anwendung zur Powerline-Entstörung
Die Wirksamkeit des Kammfilters ist abhängig von der Abtastfrequenz \(f_s\), da \(L\) nur auf ganzzahlige Werte beschränkt ist. Außerdem ist eine Beziehung zwischen \(f_s\), da \(L\) und vom Vorzeichen von \(\alpha\) abhängig. Daher werden für die Zwecke der in dieser Diskussion betrachteten Anwendung zur Netzentstörung nur positive Werte von berücksichtigt, da wir nur ungerade Oberwellen auslöschen müssen.
Eine einfache Beziehung zur Bestimmung von \(L\) lässt sich für positive Werte von \(\alpha\) wie folgt zusammenfassen:
\(L=ceil\left( \large{\frac{f_s}{2f_c}}\right)\)
wobei \(f_c\) der gewünschte Mittelpunkt der Kerbgrundfrequenz ist. Basierend auf diesem Ausdruck können wir die Abtastfrequenz neu berechnen, so dass \(f_c\) ein echtes Vielfaches von \(f_s\) ist
\(f_{snew}=2f_c L\)
Beispiel für ein Kammfilter
Für das hier betrachtete Beispiel, d. h. \(fs=500Hz\) und \(fc=25Hz\), erhalten wir \(L=10\). Bei \(f_c=60Hz\) bräuchten wir jedoch \(L=5\), bzw. eine neue Abtastrate von \(600Hz\), wobei interessant ist, dass auch \(f_s=480Hz\) für \(L=4\) ausreichen würde.
Implementierung
Ein FIR-Kammfilter kann in ASN FilterScript wie folgt implementiert werden:
[code language=”java”]
ClearH1; // clear primary filter from cascade
interface L = {4,20,1,5}; // delay
interface alpha = {-1,1,0.01,1};
Main()
Num = {1,zeros(L-1),alpha}; // numerator coefficients
Den = {1};
Gain = 1/sum(abs(Num));
[/code]
https://www.advsolned.com/wp-content/uploads/2018/07/fircomb.png549464ASN consultancy teamhttps://www.advsolned.com/wp-content/uploads/2018/02/ASN_logo.jpgASN consultancy team2021-05-29 18:36:002021-06-29 18:37:37Kammfilter: Unterdrückung von Oberschwingungen im Stromnetz und CIC
FIR-Filter (finite impulse response) sind für viele sanwendungen von Signalverarbeitung nützlich, z.B. Audiosignalverarbeitung und Rauschunterdrückung.
Sensoren gibt es in allen möglichen Formen und Ausprägungen. Es gibt Sensoren für Audio, Druck, Temperatur, Gewicht, Dehnung, Licht, Feuchtigkeit… die Liste ist fast endlos. Die Herausforderung für die meisten besteht darin, dass viele Sensoren, die in diesen IoT-Messanwendungen eingesetzt werden, gefiltert werden müssen, um die Leistung der Sensormessdaten zu verbessern und sie für die Analyse nutzbar zu machen. Bei der Signalverarbeitung hat man die Wahl zwischen analoger Signalverarbeitung (ASP) und digitaler Signalverarbeitung (DSP). Wie entscheidet man sich für ASP oder DSP; analoge Filter oder digitale Filter?
Bevor wir in die Diskussion einsteigen, sollten wir zunächst einen Blick darauf werfen, was Sensordaten eigentlich sind….
Alle Sensoren erzeugen Messdaten. Diese Messdaten enthalten zwei Arten von Komponenten:
Gewünschte Komponenten, d. h. Informationen, die wir wissen wollen
Unerwünschte Komponenten, Messrauschen, 50/60Hz-Stromleitungsstörungen, Störungen usw. – was wir nicht wissen wollen
Unerwünschte Komponenten beeinträchtigen die Systemleistung und müssen herausgenommen werden.
Die Herausforderung für jeden Konstrukteur besteht also zunächst darin, herauszufinden, welche Aspekte der Daten wir behalten wollen. Das heißt “die erwünschten Komponenten”, und was wir herausfiltern müssen, die so genannten “unerwünschten Komponenten”. Nachdem wir festgestellt haben, was herausgefiltert werden muss, stellt sich die Frage, in welchem Bereich wir dieses Problem angehen: im analogen oder im digitalen Bereich? Jede Domäne hat ihre Vor- und Nachteile, wie wir jetzt anhand einer praktischen klassischen Sensormessung mit einer Kraftmesszelle diskutieren werden.
Kraftmesszelle analog
Eine klassische Sensormessung mit einer Kraftmesszelle ist unten dargestellt.
Ein Blick auf den Hardwareaufbau zeigt, dass die Kraftmesszelle durch eine Gleichstromerregerspannung erregt wird. Die allgemeine Idee ist, dass die differentielle Brückenspannung des Sensors durch den Instrumentenverstärker (IA) verstärkt wird, wenn eine Spannung angelegt wird.
Für diejenigen unter Ihnen, die mit dieser Art von Technologie nicht vertraut sind, ist eine Kraftmesszelle ein Dehnungsmesssensor, der aus 4 Dehnungsmessstreifen besteht und auch als Wheatstone-Brücke bezeichnet wird, daher die Bezeichnung Brückensensor.
Wenn wir die Signale im Schaltplan analysieren, sehen wir, dass die Differenzspannung durch 2 Filter geleitet wird, um Netzstörungen zu beseitigen und das Messrauschen zu reduzieren.
Was sind die Herausforderungen?
Der Instrumentenverstärker (IA) hat hochohmige Eingänge, so dass EMI-Filter (elektromagnetische Störungen) leicht an die Eingänge angeschlossen werden können. Fehlanpassungen bei diesen Filtern verschlechtern jedoch im Allgemeinen das Gleichtaktunterdrückungsverhältnis des Instrumentenverstärkers, was unerwünscht ist.
Der Instrumentenverstärker hat in der Regel eine hohe Verstärkung (100 ist recht typisch), so dass jede unerwünschte Differenzspannung an den Eingängen verstärkt wird. Bei den Filtern hängt die Kerbentiefe des Filters zur Unterdrückung von Stromleitungen (50Hz/60Hz) von den Komponententoleranzen ab und variiert im Laufe der Zeit und mit der Temperatur… Dies ist problematisch, wie wir im folgenden Abschnitt erörtern werden.
Schließlich erfordern alle analogen Filter ein sorgfältiges PCB-Layout und beanspruchen wertvollen Platz auf der Leiterplatte, was bei vielen modernen Geräten unerwünscht ist.
Loadcell digital – ist digital besser?
Wenn wir den Instrumentenverstärker durch einen 24-Bit-Sigma-Delta-ADC (Analog-Digital-Wandler) ersetzen, vereinfachen wir die Schaltung – obwohl viele ADCs keine hohe Impedanz an ihren Eingängen vertragen, was für ein gutes RFI-Filterdesign problematisch sein kann.
Einige Sigma-Delta-Bausteine haben jedoch einen eingebauten 50/60Hz-Sperrfilter, der die Filteranforderungen vereinfacht. Obwohl diese Bausteine teurer sind und die Wahl der Abtastfrequenz begrenzt ist, können sie für einige Anwendungen gut genug sein.
ASP vs DSP
Welcher Bereich eignet sich also am besten für die Lösung unserer Messaufgabe, d. h. verwenden wir analoge Signalverarbeitung (ASP) oder digitale Signalverarbeitung (DSP)? Um diese Frage objektiv beantworten zu können, müssen wir zunächst die Vor- und Nachteile der einzelnen Bereiche aufschlüsseln.
Analoge Filter
Schauen wir uns zunächst eine Implementierung mit ASP an.
Der offensichtlichste Vorteil ist, dass analoge Filter eine hervorragende Auflösung haben, da es keine “Anzahl von Bits” zu berücksichtigen gibt. Analoge Filter haben gute EMV-Eigenschaften, da es kein takterzeugendes Rauschen gibt. Es gibt keine Aliasing-Effekte, was sicherlich auf die einfacheren Operationsverstärker zutrifft, die keine ausgeklügelten Zerhackungs- oder Autokalibrierungsschaltungen eingebaut haben, und analoge Designs können billig sein, was für kostenempfindliche Anwendungen großartig ist.
Klingt gut, aber was ist die schlechte Nachricht?
Analoge Filter haben eine Reihe von Nachteilen, die die Filterleistung beeinträchtigen, z. B. die Alterung der Bauteile, Temperaturdrift und Bauteiltoleranz. Außerdem erfordert eine gute Leistung gute Fähigkeiten im Analogdesign und ein gutes PCB-Layout, was auf dem heutigen Markt schwer zu finden ist.
Ein großer Minuspunkt ist, dass der Frequenzgang des Filters fest bleibt, d. h. ein Butterworth-Filter wird immer ein Butterworth-Filter bleiben – jede Änderung des Frequenzgangs würde einen physischen Austausch von Komponenten auf der Leiterplatte erfordern – nicht ideal!
Digitale Filter
Schauen wir uns nun eine Implementierung mit DSP an.
Der erste Eindruck ist, dass eine digitale Lösung komplizierter ist, wie oben bei den fünf Bausteinen zu sehen ist. Digitale Filter haben jedoch eine hohe Wiederholbarkeit der Eigenschaften, und nehmen wir als Beispiel an, dass Sie nach der Optimierung Ihres Filterentwurfs 1000 Messmodule herstellen möchten. Mit einer digitalen Lösung können Sie sicher sein, dass die Leistung Ihres Filters in allen Modulen identisch sein wird. Bei einer analogen Lösung ist dies sicherlich nicht der Fall, da Bauteiltoleranz, Bauteilalterung und Temperaturdrift dazu führen, dass der Filter jedes Moduls seine eigenen Eigenschaften hat.
Digitale Filter sind anpassungsfähig und flexibel. Wir können einen Filter mit einem beliebigen Frequenzgang entwerfen und implementieren, ihn einsetzen und dann die Filterkoeffizienten aktualisieren, ohne etwas auf der Leiterplatte zu ändern!
Außerdem ist es einfach, Filter mit linearer Phase und bei sehr niedrigen Abtastfrequenzen zu entwickeln – zwei Dinge, die bei analogen Filtern schwierig sind.
Klingt gut, aber was ist die schlechte Nachricht?
Die Auswirkung von Aliasing und bei Festkomma-Designs die endliche Wortlänge müssen berücksichtigt werden, einschließlich der Begrenzung des ADC und DAC. Da es eine Taktquelle gibt, werden digitale Designs mehr EMI erzeugen als analoge Filter.
Schlussfolgerung
Bei der Entwicklung moderner IoT-Sensormessanwendungen bieten digitale Filter im Vergleich zu ihren analogen Gegenstücken ein höheres Maß an Designflexibilität und eine hohe Wiederholbarkeit der Eigenschaften.
Mit dem Aufkommen moderner Prozessortechnologie und Design-Tools werden schätzungsweise 80 % der intelligenten IoT-Sensorgeräte derzeit mit digitalen Bausteinen, wie der Cortex-M-Familie von Arm, eingesetzt. Der Arm Cortex-M4 ist bei Hunderten von Siliziumherstellern sehr beliebt, da er DSP-Funktionen bietet, die sonst nur in teureren DSPs zu finden sind. Die Implementierung wird durch die starke Partnerschaft von ASN mit Arm weiter vereinfacht, die gemeinsam ein reichhaltiges Angebot an einfach zu bedienenden Filter-Design-Tools und ein filter design tooling and a kostenloses DSP-Software-Framework (CMSIS-DSP) bereitstellen. Diese Tools und das gut dokumentierte Software-Framework ermöglichen es Ihnen, Ihre IoT-Anwendung innerhalb weniger Minuten zum Laufen zu bringen.
https://www.advsolned.com/wp-content/uploads/2018/07/analog_loadcellfilt.png2901224ASN consultancy teamhttps://www.advsolned.com/wp-content/uploads/2018/02/ASN_logo.jpgASN consultancy team2021-05-25 19:28:002021-08-18 19:29:44ASP vs. DSP: Welche Lösung wähle ich für meine IoT-Anwendung?
Syntax Hd = butter (Order, Frequencies, Rp, Rs, Type, DFormat)
Beschreibung
Klassischer IIR-Butterworth-Filterentwurf
Glatter monotoner Frequenzgang (keine Welligkeit)
Langsamster Roll-Off für äquivalente Ordnung
Höchste Ordnung von allen unterstützten Prototypen
Order: kann bis zu 20 (Professional) und bis zu 10 (Educational) Edition angegeben werden. Wenn Sie die Ordnung auf Order setzen, 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: Welligkeit des Durchlassbereichs in dB. Dies ist eine falsche Bezeichnung, da das Butterworth-Filter einen maximal flachen Durchlassbereich hat. Ein guter Standardwert ist 0,001 dB, aber eine Erhöhung dieses Wertes beeinflusst die Position der unteren Grenzfrequenz des Filters.
Rs: Dämpfung des Sperrbereichs in dB. Dies ist eine etwas falsche Bezeichnung, da das Butterworth-Filter ein maximal flaches Sperrband hat, was bedeutet, dass die Sperrbanddämpfung (unter der Annahme, dass die korrekte Filterordnung angegeben ist) ≥ der Sperrbandspezifikation ist.
Type: Die Butterworth-Methode ermöglicht den Entwurf von lowpass, highpass, bandpass bzw.bandstopfiltern.
Hd: Die Butterworth-Methode entwirft ein IIR-Butterworth-Filter auf der Grundlage der eingegebenen Spezifikationen und legt die Übertragungsfunktion (d. h. Zähler, Nenner, Verstärkung) in einem digitalen 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 span style=”font-family: courier;”>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
Anzeige einer Matrixdarstellung des Filterobjekts
void
Ein Filterobjekt erzeugen, aber keine Ausgabe anzeigen
Beispiel
[code lang=”java”]
ClearH1; // clear primary filter from cascade
ShowH2DM; // show DM on chart
https://www.advsolned.com/wp-content/uploads/2018/02/ASN_logo.jpg00ASN consultancy teamhttps://www.advsolned.com/wp-content/uploads/2018/02/ASN_logo.jpgASN consultancy team2021-05-25 16:58:002021-09-11 17:00:50Was ist ein Butterworth-Filter
Für viele IoT-Sensormessanwendungen ist ein IIR- oder FIR-Filter nur eine der vielen Komponenten, die für einen Algorithmus benötigt werden. Dabei kann es sich um einen Powerline Interference Canceller für eine biomedizinische Anwendung oder sogar um einen einfacheren DC-Wägezellenfilter handeln. In vielen Fällen ist es notwendig, einen Filter in einen vollständigen Algorithmus in einem anderen Bereich zu integrieren.
Matlab ist eine etablierte, von Mathworks entwickelte Sprache für numerische Berechnungen, die den Entwurf von Algorithmen, Matrixdatenmanipulationen und Datenanalysen ermöglicht. Das Produkt bietet eine breite Palette von Algorithmen und Unterstützungsfunktionen für Signalverarbeitungsanwendungen und ist daher bei vielen Wissenschaftlern und Ingenieuren weltweit sehr beliebt.
ASN Filter Designer automatischer Code-Generator für Matlab
Der ASN Filter Designer vereinfacht durch seinen automatischen Codegenerator den Export eines entworfenen Filters nach Matlab erheblich. Der Code-Generator unterstützt alle Aspekte des ASN Filter Designer, so dass ein komplettes Design, bestehend aus H1, H2 und H3 Filtern und mathematischen Operatoren, vollständig in einen Algorithmus in Matlab integriert werden kann.
Auf den Matlab-Codegenerator kann über die Filterzusammenfassungsoptionen zugegriffen werden (wie rechts dargestellt). Wenn Sie diese Option auswählen, wird automatisch eine Matlab .m-Datei auf der Grundlage des aktuellen Entwurfs erzeugt.
Eine bequeme Verknüpfung zu den relevanten Framework-Dateien und Beispielen ist in der Symbolleiste Filterzusammenfassung über das Ordnersymbol verfügbar (siehe links).
Mit Hilfe der drei Framework-Dateien können Sie eine Demo Ihrer Wahl auf der Grundlage der exportierten Filter-Spezifikationen erstellen. Das Framework unterstützt sowohl reelle als auch komplexe Filter nur in Fließkomma.
Framework-Dateien und Beispiele
Um den generierten Code in Matlab zu verwenden, ohne die Signal Processing Toolbox zu benötigen, werden die folgenden drei Framework-Dateien im Verzeichnis \Matlab des ASN Filter Designers bereitgestellt:
Diese Framework-Dateien haben keine speziellen Matlab-Toolbox-Abhängigkeiten, und das Beispielskript ASNFDMatlabDemo.m demonstriert die Einfachheit, mit der das Framework in Ihre Anwendung für Ihren entworfenen Filter integriert werden kann. In ASNFDMatlabDemo.m sind mehrere Beispielfilter enthalten, die mit dem automatischen Codegenerator erzeugt wurden, damit Sie gleich loslegen können!
Vergleich der Ergebnisse mit Matlab’s Signal Processing Toolbox
Es ist manchmal aufschlussreich, die Ergebnisse der DSP-Bibliotheksfunktionen des ASN Filter Designers mit denen der Signal Processing Toolbox von Matlab zu vergleichen.
Entwurf eines IIR-Tschebyscheff-Filters vom Typ I mit den folgenden Spezifikationen:
Fs:
500Hz
Passband frequency:
0-25Hz
Type:
Lowpass
Method:
Chebyshev Type I
Stopband attenuation @ 125Hz:
≥ 80 dB
Passband ripple:
≤ 0.1dB
Order:
5
Durch die grafische Eingabe der Spezifikationen in den ASN Filter Designer und die Feinabstimmung der Designmarkerpositionen entwirft das Tool das Filter automatisch als Biquad-Kaskade. Beachten Sie, dass das Tool automatisch die erforderliche Filterordnung findet und im Wesentlichen automatisch die genaue technische Spezifikation des Filters erstellt!
Der Frequenzgang eines IIR-Tschebyscheff-Tiefpassfilters 5. Ordnung, der den Spezifikationen entspricht, ist unten dargestellt:
Die resultierenden Filterkoeffizienten sind:
Entwurf desselben Filters in Matlab mit der Signal Processing Toolbox:
Fs=500;
Rp=0.1;
Rs=80;
F=2*[25,125]/Fs;
[N,Wn]=cheb1ord(F(1),F(2),Rp,Rs)
[z, p, k] = cheby1(N,Rp,Wn,'low'); % design lowpass
[sos,g]=zp2sos(z,p,k,'up') % generate SOS form
Wenn wir das Skript ausführen, erhalten wir das folgende Ergebnis, wobei jede Zeile von sos ein Biquad ist, das wie folgt angeordnet ist: b0 b1 b2 a0 a1 a2
Analysiert man beide Koeffizientensätze im Zähler und im Nenner, erhält man genau das gleiche Ergebnis! Aber was ist mit der Verstärkung? Matlab gibt eine Nettoverstärkung aus, g = 3.0096e-05 , aber der ASN Filter Designer weist jedem Biquad eine optimale Verstärkung zu. Kombiniert man also die Verstärkungen der Biquad-Abschnitte, d.h. 0.078643, 0.013823 und 0.027685 , so ergibt sich eine Nettoverstärkung von 3.0096e-05, was genau der gleichen Nettoverstärkung wie in Matlab entspricht!
Fazit: Die Funktionen der DSP IIR Bibliothek des ASN Filter Designers entsprechen vollständig den Ergebnissen der Signal Processing Toolbox von Matlab!
Der komplette automatisch generierte Code ist unten dargestellt, wo man sehen kann, dass die Biquad-Verstärkungen mit den Feedforward-Koeffizienten vormultipliziert wurden.
Verwendung des generierten Codes mit Signal Processing Toolbox
Wenn Sie Signal Processing Toolbox installiert haben, können Sie die in SOS generierten Koeffizienten direkt mit dem Befehl sosfilt()verwenden, z. B.
Clear all;
ASNFD_SOS=[ 0.07864301814, 0.07864301814, 0.00000000000, 1.00000000000,-0.84271396371, 0.00000000000;...
0.01382289248, 0.02764578495, 0.01382289248, 1.00000000000,-1.70536517618, 0.76065674608;...
0.02768538360, 0.05537076720, 0.02768538360, 1.00000000000,-1.79181447713, 0.90255601154;...
];
y=sosfilt(ASNFD_SOS, x); % x is your input data
plot(x,y); % plot results
Wie man sieht, ist es so einfach wie das Kopieren und Einfügen der Filterkoeffizienten aus der Filterübersicht des ASN Filter Designers in ein Matlab-Skript.
Für viele IoT-Sensormessanwendungen ist ein IIR- oder FIR-Filter nur eine der vielen Komponenten, die für einen Algorithmus benötigt werden. Dabei kann es sich um einen Powerline Interference Canceller für eine biomedizinische Anwendung oder sogar um einen einfacheren DC-Wägezellenfilter handeln. In vielen Fällen ist es notwendig, einen Filter in einen kompletten Algorithmus in einem anderen Bereich zu integrieren. Der automatische Codegenerator des ASN Filter Designers vereinfacht den Export nach Python erheblich.
Python ist eine sehr beliebte allgemeine Programmiersprache mit Unterstützung für numerische Berechnungen, die den Entwurf von Algorithmen und die Durchführung von Datenanalysen ermöglicht. Die numpy– und signal-Zusatzmodule der Sprache versuchen, die Lücke zwischen numerischen algorithmischen Sprachen wie Matlab und traditionelleren Programmiersprachen wie C/C++ zu schließen. Daher ist sie für erfahrene Programmierer, die mit den Datentypen, der Syntax und der Funktionalität von C/C++ vertraut sind, viel attraktiver als die Skriptsprache von Matlab, die sich eher an Mathematiker richtet, die algorithmische Konzepte entwickeln.
ASN Filter Designer – automatischer Codegenerator für Python
Der ASN Filter Designer vereinfacht den Export eines entworfenen Filters nach Python durch seinen automatischen Codegenerator erheblich. Der Code-Generator unterstützt alle Aspekte des ASN Filter Designers, so dass ein komplettes Design, bestehend aus H1, H2 und H3 Filtern und mathematischen Operatoren, vollständig in einen Algorithmus in Python integriert werden kann.
Der Python-Code-Generator kann über die Optionen für die Filterzusammenfassung aufgerufen werden (wie rechts dargestellt). Wenn Sie diese Option auswählen, wird automatisch eine Python .py-Datei auf der Grundlage der aktuellen Entwurfseinstellungen generiert.
Um den generierten Code in einem Python-Projekt verwenden zu können, werden die folgenden zwei Framework-Dateien im ASN Filter Designer Installationsverzeichnis im Verzeichnis \Python zur Verfügung gestellt:
ASNFDFilterData.py ASNFDImport.py
Eine bequeme Verknüpfung zu den relevanten Framework-Dateien und Beispielen ist in der Filter-Symbolleiste über das Ordnersymbol verfügbar (siehe links).
Mit Hilfe der beiden Framework-Dateien können Sie eine Demo Ihrer Wahl auf der Grundlage der exportierten Filter-Spezifikationen erstellen. Das Framework unterstützt sowohl reelle als auch komplexe Filter nur in Fließkommazahlen und basiert auf ASN-IP-Blöcken und nicht auf dem signal Modul von Python, das mit der Verwaltung komplexer Daten Schwierigkeiten hatte. Um die Entwicklung von Algorithmen mit dem Framework zu beschleunigen, werden die folgenden drei Demos bereitgestellt:
ASNFDPythonDemo: Hauptdemo-Datei mit verschiedenen Beispielen RMSmeterDemo: Eine Demo zur Messung der RMS-Amplitude der Stromleitung EMGDataDemo: Eine biomedizinische EMG-Demo mit HPF, 50Hz Kerbfilter und Mittelwertbildung
Diese Framework-Dateien benötigen die folgenden Python-Abhängigkeitsmodule:
matplotlib.pyplot numpy
Ein Beispiel für den generierten Code zur Verwendung mit dem ASNFD-Python-Framework ist unten dargestellt.
Wie Sie sehen, ist es so einfach wie das Kopieren und Einfügen der Filterkoeffizienten aus der Filterzusammenfassung des ASN Filter Designers in ein Python-Projektskript.
Bei der Signalverarbeitung besteht manchmal die Notwendigkeit, die Abtastzeitpunkte eines Signals um einen Bruchteil einer Abtastung zu verschieben oder fein abzustimmen. Für diese Aufgabe wird in der Regel ein FIR-Farrow-Verzögerungsfilter verwendet, das mit einer herkömmlichen ganzzahligen Verzögerungsleitung kombiniert werden kann, um eine universelle Verzögerungsleitung mit gebrochener Länge zu erhalten.
Eine fraktionale Verzögerung auf der Grundlage einer FIR-Farrow-Struktur kann wie folgt definiert werden:
Daraus ergibt sich eine fraktionierte lineare Verzögerung von \(\alpha\) zwischen 0 und 1 Samples. Ein universellerer Baustein kann jedoch durch die Kombination der Farrow-Verzögerungsstruktur mit einer ganzzahligen Verzögerung, \(\Delta\) erreicht werden.
Die nachstehende Grafik zeigt die Spektren von Betrag (blau) und Phase (lila) für \(\Delta=9, \, \alpha=0.52\). Wie man sieht, führt das fraktionierte Verzögerungselement zu einem nicht flachen Betragsspektrum bei höheren Frequenzen.
Frequenzgang des Farrow-Verzögerungsfilters
Implementierung
Ein Farrow-Delay-Filter kann in ASN FilterScript wie folgt implementiert werden:
[code language=”java”]
ClearH1; // clear primary filter from cascade
Main()
Num = {zeros(D),1-alpha,alpha}; // numerator coefficients
Den = {1}; // denominator coefficient
Gain = 1/sum(Num); // normalise gain at DC
[/code]
Syntax Hd = bessel (Order, Frequencies, Type, DFormat)
Beschreibung
Entwurf eines IIR-Bessel-Filters. Analoge Bessel-Filter haben eine konstante Gruppenlaufzeit im Durchlassbereich, was für eine Vielzahl von Messanwendungen sehr wünschenswert ist. Die in FilterScript implementierte Methode verwendet die Bilinear-Transformation, die die Standardcharakteristik des analogen Bessel-Filters modifiziert und folglich die konstante Gruppenlaufzeit im Durchlassbereich nicht beibehält. Sie können die Gruppenlaufzeit durch Verwendung eines Allpassfilters ausgleichen, entweder in FilterScript oder im Hauptwerkzeug mit dem Allpassfilter-Designer.
Nahezu konstante Gruppenlaufzeit im Durchlassbereich.
Langsamerer Roll-Off als bei anderen Prototypen
Die Kaskadierung eines einzelnen Allpassfilters (entworfen mit dem Allpassfilter-Designer) mit dem Bessel-Filter linearisiert die Gruppenlaufzeit im Durchlassbereich – siehe unten.
Hd = bessel (Order, Frequencies, Type, DFormat)
Order: kann bis zu 20 (professional) und bis zu 10 (educational) Auflage angegeben werden.
Frequencies: Tief- und Hochpass werden über eine Grenzfrequenz angegeben, während Bandpass- und Bandsperrfilter zwei Frequenzen benötigen (d. h. untere und obere Grenzfrequenz). Alle Frequenzen müssen in aufsteigender Reihenfolge und < Nyquist sein (siehe das Beispiel unten).
Type: Die Bessel-Methode ermöglicht den Entwurf von span style=”font-family: courier;”>lowpass, highpass, bandpass bzw. bandstopfiltern.
Hd: Die Bessel-Methode entwirft ein IIR-Bessel-Filter auf der Grundlage der eingegebenen Spezifikationen und legt die Übertragungsfunktion (d.h. Zähler, Nenner, Verstärkung) in einem digitalen Filterobjekt, Hd, ab. Das digitale Filterobjekt kann dann bei Bedarf mit anderen Methoden kombiniert werden. Für ein digitales Filterobjekt Hd werden durch den Aufruf von Hd, calling getnum(Hd), getden(Hd) bzw. 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
Anzeige einer Matrixdarstellung des Filterobjekts
void
Ein Filterobjekt erzeugen, aber keine Ausgabe anzeigen
Beispiel
[code lang=”java”]
ClearH1; // clear primary filter from cascade
ShowH2DM; // show DM on chart
https://www.advsolned.com/wp-content/uploads/2018/02/ASN_logo.jpg00ASN consultancy teamhttps://www.advsolned.com/wp-content/uploads/2018/02/ASN_logo.jpgASN consultancy team2021-05-25 14:06:002021-09-12 14:06:42Was ist ein Bessel-Filter
FIR-Filter (Finite Impulse Response) sind für eine Vielzahl von Sensor-Signalverarbeitungsanwendungen nützlich, einschließlich Audio- und biomedizinischer Signalverarbeitung. Obwohl es mehrere praktische FIR-Implementierungen gibt, bietet die Direct Form Transposed-Struktur die beste numerische Genauigkeit für die Fließkomma-Implementierung. Wenn jedoch eine Festkomma-Implementierung auf einem Mikrocontroller in Betracht gezogen wird, gilt die Direct-Form-Struktur aufgrund ihres großen Akkumulators, der alle Zwischenüberläufe aufnehmen kann, als beste Wahl.
Diese Application Note befasst sich speziell mit dem Entwurf und der Implementierung von FIR-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 Arm-Referenz-Softwarepakets) zur Implementierung des FIR-Filters in Arm/Keils MDK-Industriestandard-Cortex-M-Mikrocontroller-Entwicklungskit gegeben.
Einführung
ASN Filter Designer bietet Ingenieuren eine leistungsstarke DSP-Experimentierplattform, die den Entwurf, die Erprobung und den Einsatz komplexer digitaler FIR-Filterdesigns für eine Vielzahl von Sensormessanwendungen ermöglicht. Die fortschrittliche Funktionalität des Tools umfasst einen grafikbasierten Echtzeit-Filterdesigner, mehrere Filterblöcke, verschiedene mathematische E/A-Blöcke, symbolische Live-Mathe-Skripte und Echtzeit-Signalanalyse (über einen integrierten Signalanalysator). Diese Vorteile in Verbindung mit der automatischen Dokumentation und Code-Generierung ermöglichen es den Ingenieuren, einen digitalen 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, komplexer mathematischer 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 sie vom Kern unterstützt werden) in Verbindung mit anderen Optimierungen ermöglichen es Ingenieuren, schnell und einfach hoch optimierte 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 FIR-Filtern mit dem ASN Filter Designer
Der ASN Filter Designer bietet Ingenieuren eine einfach zu bedienende, intuitive grafische Entwicklungsplattform für den Entwurf digitaler FIR-Filter. Das Echtzeit-Entwurfsparadigma des Tools nutzt grafische Entwurfsmarkierungen, die es den Entwicklern ermöglichen, ihre Anforderungen an den Frequenzgang in Echtzeit zu zeichnen und zu ändern, während das Tool automatisch die genauen Spezifikationen für sie ausfüllt.
Betrachten Sie den Entwurf der folgenden technischen Spezifikation:
Fs:
500Hz
Durchlassband-Frequenz:
0-25Hz
Typ:
Lowpass
Methode:
Parks-McClellan
Dämpfung des Sperrbereichs @ 125Hz:
≥ 80 dB
Durchlassband-Welligkeit:
< 0.01dB
Ordnung:
So klein wie möglich
Durch die grafische Eingabe der Spezifikationen in den ASN Filter Designer und die Feinabstimmung der Design-Marker-Positionen entwirft das Tool automatisch das Filter, wählt automatisch die erforderliche Filterordnung und produziert im Wesentlichen automatisch die exakte technische Spezifikation des Filters!
Der Frequenzgang eines Filters, das die Spezifikation erfüllt, ist unten dargestellt:
Dieser Tiefpassfilter bildet die Grundlage für die hier geführte Diskussion.
Parks-McClellan-Algorithmus
Der Parks-McClellan-Algorithmus ist ein iterativer Algorithmus zur Ermittlung des optimalen Tschebyscheff-FIR-Filters. Der Algorithmus verwendet eine indirekte Methode zur Ermittlung der optimalen Filterkoeffizienten, die im Vergleich zu anderen FIR-Entwurfsmethoden ein gewisses Maß an Flexibilität bietet, da jedes Band individuell angepasst werden kann, um den Anforderungen des Designers zu entsprechen.
Die primäre FIR-Filter-Designer-UI implementiert den Parks-McClellan-Algorithmus und ermöglicht den Entwurf der folgenden Filtertypen:
Filtertypen
Beschreibung
Tiefpass
Entwirft einen Tiefpassfilter
Hochpass
Entwirft einen Hochpassfilter
Bandpass
Entwirft ein Bandpassfilter
Bandsperre
Entwirft ein Bandsperrfilter
Multiband
Entwirft ein Multiband-Filter mit beliebigem Frequenzgang
Hilbert-Transformator
Entwirft ein Allpassfilter mit einer Phasenverschiebung von -90 Grad
Differentiator
Entwirft einen Filter mit +20dB/Dekade Steigung und +90 Grad Phasenverschiebung
Doppelter Differenzierer
Entwirft einen Filter mit einer Steigung von +40 dB/Dekade und einer Phasenverschiebung von +90 Grad
Integrator
Entwirft einen Filter mit einer Steigung von -20 dB/Dekade und einer Phasenverschiebung von -90 Grad
Doppelintegrator
Designs a filter with -40dB/decade slope and a -90 degree phase shift.
Diese zehn Filtertypen bieten Entwicklern eine große Flexibilität für eine Vielzahl von IoT-Anwendungen. Die Designanforderungen können einfach durch die Verwendung der Designmarker spezifiziert werden. In allen Fällen berechnet das Tool automatisch die erforderliche Filterreihenfolge, um die Spezifikation des Designers zu erfüllen.
Der Parks-McClellan-Algorithmus ist eine optimale Tschebyscheff-FIR-Entwurfsmethode. Allerdings konvergiert der Algorithmus bei einigen Spezifikationen möglicherweise nicht. In solchen Fällen hilft es im Allgemeinen, den Abstand zwischen den Entwurfsmarkierungsbändern zu vergrößern.
Andere FIR-Entwurfsmethoden
Designer, die mit anderen Arten von FIR-Entwurfsmethoden experimentieren möchten, können die symbolische Live-Mathe-Skriptsprache ASN FilterScript verwenden. Die Skriptsprache unterstützt über 65 wissenschaftliche Befehle und bietet Entwicklern eine vertraute und leistungsstarke Programmiersprache, die es ihnen gleichzeitig ermöglicht, komplexe symbolische mathematische Ausdrücke zu implementieren. Die folgenden Funktionen werden unterstützt:
Funktion
Beschreibung
movaver
Moving average FIR filter design: Entwurf eines FIR-Filters mit gleitendem Mittelwert
firwin
FIR filter Window method: FIR-Filterentwurf auf der Grundlage der Fenstermethode
firarb
Entwirft ein FIR-Filter auf Basis der Fenstermethode mit beliebigem Amplitudengang
firkaiser
Entwurf eines FIR-Filters nach der Kaiser-Fenstermethode
firgauss
Entwurf eines FIR Gaußschen Tiefpassfilters
savgolay
Entwirft ein FIR Savitzky-Golay Tiefpass-Glättungsfilter
Weitere Details finden Sie im ASN FilterScript Reference Guide.
Alle Filter, die in ASN FilterScript entworfen werden, werden unter Verwendung von Arithmetik mit doppelter Genauigkeit in der H2-Filter-Sandbox entworfen. Ein H2-Filter muss für den Einsatz in einen H1-(Primär-)Filter umgewandelt werden.
Dies kann einfach über das Optionsmenü P-Z erreicht werden:
Die Re-Optimierungsmethode analysiert automatisch den H2-Filter und wandelt ihn in einen H1-Filter um.
Fließkomma-Implementierung
Bei der Implementierung eines Filters in Fließkomma (‘floating point’; d.h. unter Verwendung von Arithmetik mit doppelter oder einfacher Genauigkeit) gilt die Struktur Direct Form Transposed als die numerisch genaueste. Dies lässt sich leicht erkennen, wenn man die nachstehenden (für die Implementierung verwendeten) Differenzgleichungen analysiert, da die unerwünschten Auswirkungen der numerischen Übersättigung minimiert werden, da die Fließkommaaddition auf Zahlen ähnlicher Größenordnung durchgeführt wird.
Die Quantisierungs- und Filterstruktureinstellungen, die zur Implementierung der FIR verwendet werden, finden Sie auf der Registerkarte Q (wie unten dargestellt).
Obwohl die Direct Form Transposed-Struktur für die Fließkomma-Implementierung am effizientesten ist, unterstützt die Arm CMSIS-DSP-Bibliothek derzeit nicht die Direct Form Transposed-Struktur für FIR-Filter. Es wird nur die Direct Form Struktur unterstützt.
Wenn Sie die Arithmetic auf Single Precision und Structure auf Direct Form einstellen und auf die Schaltfläche Apply klicken, wird die hier betrachtete FIR für das CMSIS-DSP Software Framework konfiguriert.
Die optimierten Funktionen innerhalb des Arm CMSIS-DSP Frameworks unterstützen derzeit nur Single Precision Arithmetik.
Unterstützung für Double Precision und die Direct Form Transposed-Struktur wird in zukünftigen Versionen hinzugefügt werden.
Festkomma-Implementierung
Bei der Implementierung eines Filters mit Festkomma-Arithmetik wird die Direct-Form-Struktur aufgrund ihres großen Akkumulators, der alle Zwischenüberläufe aufnimmt, als die beste Wahl angesehen. Die Direct-Form-Struktur und die zugehörige Differenzengleichung sind im Folgenden dargestellt.
Das CMSIS-DSP-Framework unterstützt nur die Quantisierung der Koeffizienten Q7, Q15 und Q31. Die Optionen können einfach über die Registerkarte Q für die Quantisierung angegeben werden, wie unten gezeigt:
Die eingebauten Analysen des Tools (in der Textbox) sollen dem Designer helfen, die am besten geeigneten Quantisierungseinstellungen zu wählen.
Wie links zu sehen ist, hat das Tool eine RFWL (empfohlene Fraktionslänge) von 15 Bits (Q15) für die Koeffizienten empfohlen, was den Anforderungen entspricht.
Die Struktur Direkte Form wird der Struktur Direkte Form Transponiert vorgezogen, da ein einziger Akkumulator (40 Bit) verwendet werden kann. Der automatische Code-Generator des Tools nutzt die 64-Bit-Akkumulatoren-Funktionen von CMSIS-DSP, so dass der endgültige C-Code, der auf einem Cortex-M-Baustein eingesetzt wird, nicht überläuft.
Bereitstellung von Arm CMSIS-DSP-konformem Code
Die automatische Code-Generierungs-Engine des ASN Filter Designers erleichtert den Export eines entworfenen Filters auf Cortex-M Arm-basierte Prozessoren über das Arm 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.
Wählen Sie das Arm CMSIS-DSP-Framework aus der Auswahlbox im Filterübersichtsfenster aus:
Der automatisch generierte C-Code auf Basis des Arm CMSIS-DSP-Frameworks für die direkte Implementierung auf einem Arm-basierten Cortex-M-Prozessor ist unten dargestellt:
Dieser Code kann direkt in jedem Cortex-M-basierten Entwicklungsprojekt verwendet werden.
Arm Keil MDK (uVision)
Wie bereits 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 uVision MDK (Micro-Controller Development Kit).
Das folgende Arm-Softwarepaket ist auf Keils Website verfügbar, um diesen Code direkt mit Keil uVision MDK zu verwenden.
https://www.advsolned.com/wp-content/uploads/2018/07/firdirectformPNG.png217670ASN consultancy teamhttps://www.advsolned.com/wp-content/uploads/2018/02/ASN_logo.jpgASN consultancy team2021-05-25 14:00:002021-08-20 14:00:59Implementierung von FIR-Filtern mit dem ASN Filter Designer und dem Arm CMSIS-DSP Software Framework