Vorhersage der Eigenschaften von Filtern

Ich würde gerne eine Sache wissen, die besagt, dass Sie, wenn Sie die Prozessorwortlänge (TMS320VC5510 DSP), den Akkumulator und die Schutzbits kennen, eine Vermutung über die für diese Architektur zu verwendenden Filtereigenschaften anstellen können. Um genauer zu sein, nehmen wir die folgenden Werte als Beispiel.

Die Wortlänge des Prozessors beträgt 16 Bit und er hat einen 40-Bit-Akkumulator mit 8 Schutzbits. Welche Art von Filtern (Filtereigenschaften) können Sie also für die oben erwähnte Architektur verwenden und wie haben Sie vorhergesagt, was ich meine, indem Sie was analysieren?. Was ich bisher tun kann, ist, dass möglicherweise ein Tiefpassfilter mit einem Bereich um [-3,3) verwendet werden kann.

Grüße

Die Wortlänge hängt überhaupt nicht mit der Filtercharakteristik zusammen, wenn ich Ihre Frage richtig verstehe. Hast du mal nach FIR- und IIR-Filtern gesucht?

Antworten (2)

Nein, die Architektur hat nichts mit der Art der Filter zu tun, die implementiert werden können. Die Architektur gibt Ihnen eine bestimmte Geschwindigkeit und Auflösung für jede bestimmte Filterimplementierung.

In Ihrem Fall denken Sie anscheinend an einen Faltungsfilter. Der Koeffizient beträgt 16 Bit, und Sie sagen, der Akkumulator ist 40 Bit breit. Vermutlich sind die Datenabtastwerte im Speicher ebenfalls 16 Bit breit. Das bedeutet, dass pro Datenpunkt eine 16 x 16-Bit-Multiplikation durchgeführt wird. Dies erzeugt eine bis zu 32-Bit-Zahl. Bei einem 40-Bit-Akkumulator wissen Sie, dass Sie mindestens 256 solcher Zahlen addieren können. Je nachdem, wie die Guard-Bits funktionieren, können Sie möglicherweise tatsächlich 65536 Datenpunkte vor einem echten Überlauf summieren. In diesem Fall gibt es wahrscheinlich eine Anweisung, das höchstwertige Bit des Ergebnisses zu finden, so dass eine Verschiebung durchgeführt werden kann, um letztendlich die oberen Bits zu behalten. In einigen Fällen ist der maximale Bereich des Ergebnisses aufgrund inhärenter Eigenschaften des Filters und des zu filternden Datenstroms begrenzt.

In diesem Beispiel gibt es ein gewisses Quantisierungsrauschen bei jedem Koeffizienten, jeder Datenabtastung, einer Begrenzung der Anzahl von signifikanten Ergebnisbits und einer gewissen maximalen Anzahl von Multiplikations-Akkumulationen, die in jeder Datenabtastperiode durchgeführt werden können. Das sind alles Parameter, die eine Funktion der Architektur sind. Beachten Sie, dass der Koeffizientenwert und damit die Reaktion des Filters nichts mit der Architektur zu tun hat.

Sie müssen die DSP-Hardware auch nicht direkt verwenden. Sie könnten zum Beispiel Ihren eigenen breiten Multiplikations-Akkumulation-Code erstellen, der mehr Bits pro Wert behält und ein breiteres Ergebniswort hat. Der Nachteil ist, dass die Anzahl der Koeffizienten viel geringer wäre, da dies erheblich langsamer wäre. Alles ist ein Kompromiss.

Vielen Dank für diese ausführliche Erklärung. Ich bin wirklich überwältigt von Ihrer Antwort
Ein besserer Ansatz, wenn man eine Summe haben möchte, die breiter ist, als der Akkumulator des DSP direkt unterstützen kann, besteht darin, die Operation in Blöcke zu unterteilen, die in den Akkumulator des DSP passen. Das Ausführen einer 1024-Punkte-Multiplikation-Akkumulation als vier 256-Punkte-Operationen ist zum Beispiel geeignet, viel schneller zu sein, als 1024 einzelne Multiplikations- und Additionsoperationen auszuführen. Selbst wenn man 16-Bit-Datenpunkte mit 32-Bit-Koeffizienten multiplizieren und akkumulieren wollte und die Hardware nur 16x16-Multiplikationen verarbeiten könnte und jeden 32-Bit-Koeffizienten als separate High- und Low-Half- und ...
... separate MAC-Operationen für (dataPoints * highCoefficients) und (dataPoints * lowCoefficientss) durchzuführen, die Ergebnisse zu skalieren und sie zusammenzufügen, wäre schneller, als Dinge Punkt für Punkt zu tun.

Eine begrenzte Wortlänge in einem DSP verursacht eine übermäßige Quantisierung (dh eine große Quantisierungsschrittgröße) von Datenabtastwerten, wodurch das Grundrauschen und Filterkoeffizienten angehoben werden, wodurch die tatsächliche Reaktion des Filters von seinem theoretischen Wert abweichen kann. Letzterer Effekt ist am deutlichsten im Bereich der reduzierten Sperrdämpfung.

Ist das die Art von Dingen, nach denen Sie suchen?

Beispielsweise definieren die Koeffizienten in einem FIR-Filter auch die Impulsantwort des Filters. Außerdem ist für jeden Filter die Fourier-Transformation seiner Impulsantwort seine Frequenzantwort.

Es ist eine interessante Übung, eine Kurve zu zeichnen, die den gewünschten Frequenzgang darstellt, und ihre inverse Fourier-Transformation zu nehmen, um die Impulsantwort zu erhalten. In jeder realen Implementierung müssen Sie eine endliche Anzahl von Koeffizienten auswählen und eine "Fenster"-Funktion auf diese Koeffizienten anwenden, um die Auswirkungen der Kürzung auf die Impulsantwort zu begrenzen.

Nehmen Sie die Fourier-Transformation dieser Koeffizienten und sehen Sie, wie der resultierende Frequenzgang von dem idealen Frequenzgang abweicht, mit dem Sie begonnen haben.

Quantisieren Sie nun diese Koeffizienten auf die Genauigkeit, die sie tatsächlich auf dem DSP haben werden. Machen Sie eine weitere Fourier-Transformation und sehen Sie, wie dies den Frequenzgang weiter modifiziert hat.

In einigen Fällen können die Auswirkungen dramatisch sein. Wenn Sie dies ein paar Mal tun, können Sie sich ein gutes Bild von der Filterleistung machen, die Sie für verschiedene Werte von Filterlänge und Wortbreite erwarten können.

Um die Überlaufprobleme anzugehen, auf die Olin anspielt, würden Sie normalerweise die Koeffizienten während der Entwurfsphase so skalieren, dass die maximale Verstärkung im Durchlassbereich des Filters Eins ist. Dies kann jedoch zusätzliche Quantisierungsfehler in den Koeffizienten erzeugen, wodurch die kleineren vollständig verschwinden. Wenn die Hardware des DSP beispielsweise ein 8-Bit-Überlauffeld auf dem MAC-Akkumulator enthält, können Sie die Koeffizientenverstärkung stattdessen auf 256 setzen und dann die Ausgangsabtastwerte um 8 Bit nach rechts verschieben, um eine Gesamtverstärkung von Eins zu erhalten.