Die mehrphasige Implementierung von Interpolationsfiltern in der digitalen Signalverarbeitung

Die Welt der Werkstoffe, Kapitel 1, Teil I, Hinter Gittern, Atomaufbau und Bindungsarten (Juli 2019).

$config[ads_text] not found
Anonim

Die mehrphasige Implementierung von Interpolationsfiltern in der digitalen Signalverarbeitung


Dieser Artikel beschreibt eine effiziente Implementierung der Interpolationsfilter, die als Polyphasenimplementierung bezeichnet werden.

In der digitalen Signalverarbeitung (DSP) verwenden wir häufig das Multiraten-Konzept, um ein System, wie einen A / D- oder D / A-Wandler, effizienter zu machen. Dieser Artikel beschreibt eine effiziente Implementierung eines der Hauptbausteine ​​der Multiratensysteme, des Interpolationsfilters. Die Methode, die wir hier behandeln werden, wird als Polyphasen-Implementierung bezeichnet.

Wir können die mehrphasige Implementierung der Dezimations- und Interpolationssysteme unter Verwendung der Frequenzdomänendarstellung der Signale und Systeme ableiten. Das ist außerhalb des Rahmens dieses Artikels, aber Sie können mehr in Abschnitt 11.5 des Buches Digitale Signalverarbeitung von John Proakis erfahren.

Hier werden wir versuchen, die Funktionsweise eines Polyphasen-Interpolationsfilters zu klären, der ein spezifisches Beispiel im Zeitbereich untersucht.

Interpolation

Wie in Fig. 1 gezeigt, verwendet die direkte Implementierung der Interpolation einen Upsampler mit einem Faktor von $$ L $$ und wendet dann ein Tiefpassfilter mit einer normierten Cutoff-Frequenz von $$ \ frac {\ pi} {L} $ an . Sie können über den Interpolationsfilter in meinem Artikel Multirate DSP und seine Anwendung in D / A-Konvertierung lesen.

Abbildung 1. Upsampling gefolgt von einem Tiefpassfilter mit einer normierten Grenzfrequenz der Lperforms-Interpolation.

Der Upsampler platziert $$ L-1 $$ nullwertige Abtastwerte zwischen benachbarten Abtastwerten der Eingabe, $$ x (n) $$, und erhöht die Abtastrate um einen Faktor von $$ L $$. Daher ist das Filter in Fig. 1 an dem Teil des Systems angeordnet, der eine höhere Abtastrate aufweist.

Ein Finite-Impulse-Response-Filter (FIR) der Länge $$ N $$, das vor dem Upsampler platziert wird, muss für jeden Abtastwert von $ x (n) $ $$ N $$ Multiplikationen und $$ N-1 $$ Additionen durchführen $. Der Filter von Fig. 1, der nach dem Aufwärtsabtaster angeordnet ist, muss jedoch für jeden Abtastwert von $ x (n) $$ $$ LN $$ Multiplikationen und $$ L (N-1) $$ Additionen durchführen.

Gibt es eine Möglichkeit, die Rechenkomplexität dieses Systems zu lockern? "Text-align: center;"> $$ y (n) = \ sum_ {k = 0} ^ {5} b_ {k} x (nk) $$

Gleichung 1

Angenommen, das Eingangssignal $$ x (n) $$ ist wie in Fig. 2 gezeigt.

Abbildung 2. Die Eingabesequenz $$ x (n) $$.

Nach dem Upsampling um einen Faktor zwei haben wir $$ x_1 (m) $$, wie in Abbildung 3 gezeigt:

Abbildung 3. Die upgesampelte Sequenz $$ x_1 (m) $$.

Angenommen, der FIR-Filter mit sechs Abgriffen ist mit der folgenden Direktformularstruktur implementiert:

Abbildung 4. Die direkte Realisierung eines FIR-Filters mit sechs Abgriffen.

Mit diesen Annahmen wollen wir die einfache Implementierung des Interpolationsfilters in Fig. 1 untersuchen. Zum Zeitindex $$ m = 5 $$ wird das FIR-Filter wie in Fig. 5 gezeigt sein.

Abbildung 5. Das FIR-Filter bei $$ m = 5 $$.

Wie Sie sehen können, hat bei $$ m = 5 $$ die Hälfte der Multiplikationen des FIR-Filters eine nullwertige Eingabe. Die diesen Multiplikationen entsprechenden Zweige sind durch die gestrichelten Linien dargestellt. Sie können überprüfen, dass diese Multiplikationen für eine ungerade immer Null sind und $$ y (m) $ nur durch die Koeffizienten $$ b_1 $$, $$ b_3 $$ und $$ b_5 $$ bestimmt wird. Beim nächsten Zeitindex, dh $$ m = 6 $$, erhalten wir die folgende Abbildung 6:

Abbildung 6. Der FIR-Filter bei m = 6.

Wiederum sind diejenigen Zweige, die eine nullwertige Eingabe enthalten, durch gestrichelte Linien gezeigt. Fig. 6 zeigt, dass wiederum die Hälfte der Multiplikationen eine nullwertige Eingabe aufweist. Betrachtet man die 5 und 6, so beobachten wir, dass für einen ungeraden Zeitindex die Hälfte der Koeffizienten, nämlich $$ b_1 $$, $$ b_3 $$ und $$ b_5 $$, den Ausgabewert und die Summe der Produkte, die die anderen Koeffizienten enthalten, sind Null. Für einen geraden Zeitindex sind die Koeffizienten, dh $$ b_0 $$, $$ b_2 $$ und $$ b_4 $$, wichtig und die Summe der Produkte für den Rest der Koeffizienten wird Null.

Lassen Sie uns nach dem Upsampler zwei verschiedene Filter verwenden: einen mit den ungeraden Koeffizienten und den anderen mit den geraden Koeffizienten und addieren die Ausgabe dieser beiden Filter, um $$ y (m) $$ zu erhalten. Das Ergebnis ist in Abbildung 7 dargestellt.

Abbildung 7. Die Differenzgleichung des Filters in zwei Koeffizientensätze aufteilen: die ungeraden Koeffizienten und die geraden Koeffizienten.

Wir können leicht die obige Figur erhalten, indem wir Gleichung 1 als manipulieren

$$ y (n) = \ groß (b_0 x (n) + b_2 x (n-2) + b_4 x (n-4) \ groß) + \ groß (b_1 x (n-1) + b_3 x (n -3) + b_5 x (n-5) \ groß) $$

Gleichung 2

Unsere vorherige Diskussion zeigt jedoch, warum wir an dieser Zerlegung interessiert sind: Bei jedem Zeitindex kann nur einer dieser beiden Filter eine von Null verschiedene Ausgabe erzeugen und die andere Ausgabe Null. Um dies weiter zu verdeutlichen, betrachten wir den unteren Pfad von Abbildung 7. Wir wissen, dass die Ausgabe dieses Pfades nur für geradzahlige Zeitindizes ungleich Null ist. Folglich müssen wir nur die Kaskade des Upsamplers und FIR2 bei geraden Zeitindizes vereinfachen, bei denen die Filterausgabe nicht null ist. Beim nächsten Zeitindex können wir einfach die Ausgabe des Pfades mit Null verbinden. Dies wird im Rest des Artikels weiter erläutert.

Betrachten wir nun den Upsampler, gefolgt vom unteren Pfad von Fig. 7, der die geraden Koeffizienten enthält. In diesem Pfad werden zuerst die Eingaben $ x (n) $$ hochgerechnet, um $$ x_1 (m) $$ zu erhalten. Mit dieser Operation, wie in den Fig. 2 und 3 gezeigt, erzeugen wir eine Zeitdifferenz gleich zwei Zeiteinheiten zwischen jeweils zwei aufeinanderfolgenden Abtastungen von $$ x (n) $$. Auf der anderen Seite "schaut" das Filter FIR2 in Fig. 7 seinen Eingang bei Vielfachen von "zwei Zeiteinheiten". Zum Beispiel, während die Multiplikation mit $$ b_0 $$ den aktuellen Abtastwert nimmt, erhalten Multiplikationen durch $$ b_2 $$ und $$ b_4 $$ Abtastwerte mit zwei Zeiteinheiten bzw. vier Zeiteinheiten Distanzen. Wenn daher die Ausgabe von FIR2 nicht Null ist, können wir einfach die Ausgabe finden, indem wir $$ x (n) $$ anstelle von $$ x_1 (m) $$ auf die Koeffizienten $$ b_0 $$ anwenden, $$ b_2 $$ und $$ b_4 $$ vorausgesetzt, dass wir zwischen diesen Koeffizienten eine Verzögerung von einer Zeiteinheit, dh $$ Z ^ {- 1} $$, verwenden. Diese äquivalente Filterung ist in Abbildung 8 dargestellt.

Abbildung 8. Das Schema entspricht der Kaskade von Upsampler und FIR2 in Abbildung 7.

Abbildung 8 enthält auch einen Schalter nach dem Filter, warum brauchen wir diesen Schalter? Man erinnere sich, dass FIR2 in Fig. 7 eine Nicht-Null-Ausgabe für eine gerade $$ m $$ aufweist. Für ein ungerades $$ m $$ ist die Ausgabe dieses Filters in unserem Beispiel immer Null. Deshalb müssen wir die Ausgabe der Ersatzschaltung in Fig. 8 für ein ungerades m auf Null setzen. Interessanterweise ist der Betrieb dieses speziellen Schalters genau der gleiche wie der eines Upsamplers um einen Faktor von zwei. Daher erhalten wir das endgültige äquivalente Schema in Abbildung 9.

Abbildung 9. Das Schema entspricht der Kaskade von Upsampler und FIR2 in Abbildung 7.

Was ist der Vorteil von Abbildung 9 gegenüber der Kaskade von Upsampler und FIR2 in Abbildung 7? In Fig. 7 haben wir FIR2 sowohl im ungeradzahligen als auch im ungeraden Zeitindex ausgewertet, ungeachtet der Tatsache, dass für einen ungeraden Zeitindex der Ausgang von FIR2 immer Null ist. In den 8 und 9 wird diese Eigenschaft berücksichtigt, und der Ausgang ist für einen ungeraden Zeitindex direkt mit Null verbunden. Auf diese Weise vermeiden wir unnötige Berechnungen. Mit anderen Worten, das FIR-Filter mit drei Abgriffen in Fig. 9 ist vor dem Aufwärtsabtaster angeordnet, und daher führen wir nur drei Multiplikationen und zwei Additionen für jeden Eingangsabtastwert von x (n) durch. Der untere Pfad von 7 platziert jedoch die Multiplikationen nach dem Aufwärtsabtaster und wir müssten sechs Multiplikationen und vier Additionen für jeden Eingangsabtastwert von $$ x (n) $$ durchführen.

Der Prozess des Vereinfachens des unteren Pfads von 7 zu dem Blockdiagramm in 9 ist tatsächlich ein bestimmtes Beispiel einer Identität, die als zweite edle Identität bezeichnet wird. Diese Identität ist in 10 gezeigt.

Abbildung 10. Die zweite edle Identität besagt, dass diese beiden Systeme gleichwertig sind. Bild mit freundlicher Genehmigung von Digital Signal Processing.

In Anbetracht unserer vorherigen Diskussion sollten Sie sich nun vorstellen können, warum wir ein System einführen können, das in ZI ausgedrückt werden kann, dh H (ZI), bevor der Faktor-I-Upsampler dies für das neue System vorsah, ZI wird durch die Transferfunktion ersetzt. Tatsächlich erzeugt der Upsampler eine Zeitdifferenz, die gleich I Zeiteinheiten zwischen jeweils zwei aufeinanderfolgenden Samples von x (n) ist. Für einen Zeitindex, bei dem die Ausgabe nicht Null ist, "sieht" die Systemfunktion H (ZI) ihren Eingang an Vielfachen von "I Zeiteinheiten". Daher können wir die Kaskade des Upsamplers und die Systemfunktion in ähnlicher Weise vereinfachen, wie wir es mit dem FIR2-Pfad in Fig. 7 getan haben. Um über den Beweis der zweiten edlen Identität zu lesen, lesen Sie Abschnitt 11.5.2 dieses Buches.

Wie können wir den oberen Pfad von Abbildung 7 vereinfachen? Wir können die Systemfunktion FIR1 als erhalten

$$ H_ {FIR1} (z) = b_ {1} z ^ {- 1} + b_ {3} z ^ {- 3} + b_ {5} z ^ {- 5} $$

Um die zweite edle Identität zu verwenden, müssen wir diese Funktion nur in Form von $$ z ^ {- 2} $$ ausdrücken. Wir können die Systemfunktion als neu schreiben

$$ H_ {FIR1} (z) = \ groß (b_ {1} + b_ {3} z ^ {- 2} + b_ {5} z ^ {- 4} \ groß) z ^ {- 1} = P_ {1} (z ^ {2}) z ^ {- 1} $$

Da $$ P_1 (z ^ 2) $$ in $$ z ^ 2 $$ ausgedrückt wird, können wir die edle Identität verwenden, um diesen Teil der Übertragungsfunktion vor dem Upsampler zu verschieben. In diesem Fall müssen wir $$ z ^ 2 $$ durch $$ z $$ in $$ P_1 (z ^ 2) $$ ersetzen. Das endgültige System ist in Abbildung 11 dargestellt.

Abbildung 11. Das endgültige System, das nach Anwendung der zweiten edlen Identität erhalten wurde.

In diesem System werden alle Multiplikationen vor den Upsampling-Operationen durchgeführt. Daher wird eine signifikante Verringerung der rechnerischen Komplexität erreicht. Das Schema von Fig. 11 wird die mehrphasige Implementierung des Interpolationsfilters genannt.

Betrachten wir nun die allgemeine Form des obigen Beispiels. In diesem Fall haben wir einen M-Upsampler gefolgt von einer Systemfunktion H (z).

Polyphasenzerlegung und effiziente Implementierung eines Interpolators

Um die M-Komponenten-Polyphasen-Zerlegung eines gegebenen Systems $$ H (z) $$ zu finden, müssen wir die Systemfunktion als neu schreiben

$$ H (z) = \ Summe_ {k = 0} ^ {M-1} z ^ {- k} P_ {k} (z ^ M) $$

Gleichung 3

wobei $$ P_k (z) $$ eine Polyphasenkomponente von $$ H (z) $$ genannt wird, die gegeben ist durch

$$ P_ {k} (z) = \ Summe_ {n = - \ infty} ^ {+ \ infty} h (nM + k) z ^ {- n} $$

Gleichung 4

Wenn nun $$ H (z) $$ einem Faktor-von-M-Upsampler vorausgeht, können wir die zweite edle Identität auf die Komponenten $$ P_k (z ^ M) $$ anwenden und eine effizientere Implementierung erreichen.

Wenn beispielsweise H (z) ein Upsampler mit Faktor 3 vorausgeht, können wir die Zerlegung von Gleichung 2 verwenden, um die folgende Abbildung 12 zu erhalten. Wir erhalten Abbildung 12 für M = 3. Wenn wir nun die zweite edle Identität anwenden, haben wir Abbildung 13. Um mit den Gleichungen 2 und 3 vertrauter zu werden, versuchen Sie, diese beiden Gleichungen zu verwenden, um das Schema von Abbildung 11 direkt aus der Systemfunktion des Filters in Gleichung 1 zu erhalten.

Figure 12. Die dreikomponentige Polyphasen-Zerlegung von $$ H (z) $$, der ein dreifacher Upsampler vorausgeht. Bild mit freundlicher Genehmigung von Digital Signal Processing.

Fig. 13. Verwendung der dreikomponentigen Polyphasen-Zerlegung von $$ H (z) $$, um den dreifachen Upsampler gefolgt von $$ H (z) $$ zu implementieren. Bild mit freundlicher Genehmigung von Digital Signal Processing.

Für weitere Details und Beispiele siehe Abschnitt 11.5 der Digitalen Signalverarbeitung, Abschnitt 12.2 der Digitalen Signalverarbeitung: Grundlagen und Anwendungen, und auch dieses ausgezeichnete Papier von IEEE.

Zusammenfassung

  • Die einfache Implementierung des Interpolationsfilters platziert $$ H (z) $$ in dem Teil des Systems, der eine höhere Abtastrate aufweist.
  • Ein FIR-Filter (finite impulse response) der Länge $$ N $$, das vor dem Upsampler platziert wird, muss $ N $$ Multiplikationen und $ N-1 $$ Additionen für jeden Abtastwert von $ x (n) $ ausführen $. Der Filter von Fig. 1, der nach dem Aufwärtsabtaster angeordnet ist, muss jedoch für jeden Abtastwert von $ x (n) $$ $$ LN $$ Multiplikationen und $$ L (N-1) $$ Additionen durchführen.
  • Nach der zweiten edlen Identität dürfen wir ein System vorbringen, das sich als $$ Z ^ I $$, dh $$ H (Z ^ I) $$, vor dem Faktor-I-Upsampler ausdrücken läßt vorausgesetzt, dass für das neue System $$ Z ^ I $$ in der Übertragungsfunktion durch $$ Z $ ersetzt wird.
  • Wenn $$ H (z) $$ einem Faktor-von-M-Upsampler vorausgeht, können wir die Systemfunktion anhand ihrer Polyphasen-Komponenten $$ P_k (z ^ M) $$ umschreiben und die zweite edle Identität anwenden um die Position der Polyphasenkomponenten und des Upsamplers zu vertauschen.

Um eine vollständige Liste meiner DSP-bezogenen Artikel auf AAC zu sehen, sehen Sie bitte diese Seite.