01signal.com

Umrechnung zwischen Galois- und Fibonacci-Polynomen eines Linear-Feedback-Schieberegisters

Einleitung

Diese Seite lässt sich in einem Satz zusammenfassen: Wenn man das Polynom eines LFSR von der Galois-Form in die Fibonacci-Form umwandeln möchte, dreht man die Reihenfolge der Koeffizienten einfach um.

Als Beispiel zeigt das folgende Schaltbild das LFSR, das häufig in Verwürflern (engl. scrambler) verwendet wird:

Scrambler based upon Galois polynomial

Jeder Block, der mit D markiert ist, ist eine Verzögerung um einen Taktzyklus. Die Darstellung dieses LFSR als Galois-Polynom lautet:

G(x) = x16 + x5 + x4 + x3 + 1

Beachten Sie: Die Exponenten im Polynom (3, 4 und 5) geben an, wie viele Verzögerungsglieder sich links von jedem XOR befinden.

Dasselbe LFSR kann auch in Fibonacci-Form implementiert werden, wie dieses Schaltbild zeigt:

Scrambler based upon Fibonacci polynomial

Trotz der Ähnlichkeit der beiden Schaltbilder sind die Pfeilrichtungen umgekehrt. Die Implementierungen der LFSRs sind vollkommen verschieden.

Das Fibonacci-Polynom (auch Rückkopplungspolynom genannt) lautet:

F(x) = x16 + x13 + x12 + x11 + 1

Der Grad des Polynoms ist n=16, daher wird jedes xi in G(x) in F(x) durch xn-i dargestellt. Der Rest dieser Seite zeigt, warum das kein Zufall ist.

Eine allgemeine Erklärung zu LFSRs finden Sie auf der Wikipedia-Seite zu diesem Thema.

LFSR und digitale Filter

Die Theorie digitaler Filter (z. B. FIR-Filter und IIR-Filter) wird normalerweise auf dem Körper der komplexen Zahlen angewendet. Man kann diese Theorie jedoch auch auf GF(2) anwenden, also auf den endlichen Körper (Galois-Feld), der aus den zwei Zahlen 0 und 1 besteht. Dabei sind ein paar Dinge zu beachten:

Die grundlegende Theorie digitaler Filter setzt lediglich voraus, dass das System linear und zeitinvariant (LTI) ist. Ein LFSR erfüllt diese Voraussetzungen, denn XOR ist linear, und das Verhalten eines LFSR ist zeitinvariant.

Die interessanteste Konsequenz ist, dass man die z-Transformation zur Analyse von LFSRs verwenden kann. Betrachten wir zum Beispiel dieses Schaltbild:

Simple filter with logic delay

Das lässt sich durch die folgende Gleichung beschreiben:

y(t) = x(t) ⊕ x(t-1)

t ist eine ganze Zahl, die die Zeit repräsentiert.

Man kann das als FIR-Filter behandeln und die z-Transformation dieser Gleichung aufschreiben:

Y(z) = X(z) + X(z)z-1 = X(z) (1 + z-1)

Die „Impulsantwort“ kann also wie üblich definiert werden: H(z) = Y(z)/X(z), oder einfach:

H(z) = 1 + z-1

Was aber passiert, wenn man zwei dieser Filter hintereinanderschaltet? Wie lautet dann die „Impulsantwort“ dieses Filters?

Two filters with logic delay in cascade

Die Theorie digitaler Filter liefert eine einfache Antwort:

H2(z) = H(z)H(z) = (1 + z-1)(1 + z-1) = 1 + 2z-1 + z-2

Zur Erinnerung: In GF(2) entspricht die Multiplikation mit einer geraden Zahl der Multiplikation mit null. Entsprechend gilt:

H2(z) = 1 + 2z-1 + z-2 = 1 + 0z-1 + z-2 = 1 + z-2

Das entspricht folgendem Schaltbild:

Equivalent filter to two filters with logic delay in cascade

Es ist nicht leicht zu erkennen, dass die in den beiden letzten Abbildungen gezeigten Filter äquivalent sind. Beide Filter erzeugen jedoch dasselbe y(t), wenn sie mit demselben x(t) gespeist werden. Die Filter sind also identisch, auch wenn die im zweiten Verzögerungsglied gespeicherten Werte nicht übereinstimmen.

Dieses Beispiel zeigt den Vorteil der z-Transformation (und ähnlicher Polynommethoden) bei der Analyse logischer Filter.

Erwähnen sollte ich noch, dass statt z-1 häufig die Symbole D oder D-1 verwendet werden. Das x in den Galois- und Fibonacci-Polynomen hat dieselbe Bedeutung wie z-1. Alle diese Symbole bezeichnen eine Verzögerung.

Das Galois-LFSR

Um die Fibonacci-Darstellung zu finden, betrachte ich zuerst das Galois-LFSR.

Schauen wir uns das obige Schaltbild des Galois-LFSR an. Die Reihe aus Verzögerungsgliedern und Abgriffen kann als FIR-Filter aufgefasst werden, das ich mit A(z) bezeichne. Das Galois-LFSR ist also äquivalent zu folgendem Aufbau:

Galois LFSR represented as a FIR and feedback

Wegen der Rückkopplung ergibt sich die Gleichung für Y(z):

Y(z) = Y(z)A(z)

Welcher Zusammenhang besteht also zwischen den Parametern dieses FIR-Filters und dem Galois-Polynom? Schreiben wir die allgemeine Form des Galois-Polynoms auf:

G(x) = xn + gn-1xn-1+ gn-2xn-2+…+ g0

Beachten Sie, dass gn in diesem Ausdruck nicht vorkommt, um die Mathematik weiter unten zu vereinfachen. Außerdem ist gn immer gleich 1.

Der Zusammenhang zwischen G(x) und A(z) ist folgender:

A(z) = gn-1z-1+gn-2z-2+…+g1z1-n+g0z-n

Warum ist das richtig? Nehmen wir das Galois-LFSR aus dem obigen Schaltbild und sehen uns an, wie dieser Ausdruck zustande kommt.

Zuerst schauen wir auf das XOR, das zu g5 gehört. Die Zahl 5 bedeutet, dass sich fünf Verzögerungsglieder auf der linken Seite dieses XOR befinden. Der Exponent von z hängt jedoch von der Anzahl der Verzögerungsglieder zwischen dem XOR und dem Ausgang des FIR-Filters ab. Gemeint sind die Verzögerungsglieder auf der rechten Seite des XOR. Insgesamt gibt es 16 Verzögerungsglieder. Deshalb erscheint g5 in A(z) als g5z-11. Das passt zu dem Muster gn-iz-i.

Eine andere Erklärung besteht darin, A(z) im Zeitbereich als FIR-Filter zu betrachten. Der Eingang dieses FIR-Filters ist x(t), sein Ausgang y(t):

y(t) = x(t–16) ⊕ x(t–13) ⊕ x(t–12) ⊕ x(t–11)

Auch hier ist t eine ganze Zahl, die die Zeit repräsentiert. Dieser Ausdruck beschreibt das Galois-LFSR ohne Rückkopplung. Die Übertragungsfunktion dieses FIR-Filters lautet:

A(z) = Y(z)/X(z) = z-16 + z-13 + z-12 + z-11

Das passt zu dem allgemeinen Ausdruck für A(z) mit G(x) = x16 + x5 + x4 + x3 + 1.

Das Fibonacci-Äquivalent

Ein LFSR in Fibonacci-Form wird durch das folgende Polynom dargestellt:

F(x) = fnxn+fn-1xn-1+…+f1x + 1

Beachten Sie, dass f0 in diesem Polynom nicht auftaucht, weil es immer gleich 1 ist. Das ist ähnlich wie bei gn, das in G(x) nicht auftaucht.

Die Implementierung dieses Polynoms lässt sich so schreiben:

y(t) = f1y(t-1) + f2y(t-2) +…+ fny(t-n)

Die z-Transformation lautet entsprechend:

Y(z) = f1Y(z)z-1+f2Y(z)z-2+…+fnY(z)z-n

Wir definieren B(z) wie folgt:

B(z) = f1z-1+f2z-2+…+fnz-n

Y(z) lässt sich damit folgendermaßen schreiben:

Y(z) = Y(z)B(z)

Zur Erinnerung an oben: Y(z) = Y(z)A(z). Wenn sich die Fibonacci-Form des LFSR also genauso verhält wie das LFSR, das durch das Galois-Polynom gegeben ist, folgt daraus, dass A(z) = B(z) ist. Das bedeutet wiederum:

fi=gn-i (i=1,2, … , n)

Es gilt also, wie ich von Anfang an gesagt habe: Um ein LFSR-Polynom von der Galois-Form in die Fibonacci-Form umzuwandeln, muss man die Reihenfolge der Koeffizienten umkehren.

Das inverse Filter des LFSR

Noch einmal: Dies ist die Fibonacci-Implementierung des LFSR:

y(t) = f1y(t-1) + f2y(t-2) +…+ fny(t-n)

Man kann diesen Ausdruck jedoch auch wie folgt umschreiben:

y(t) + f1y(t-1) + f2y(t-2) +…+ fny(t-n) = 0

(Zur Erinnerung: + und – sind in GF(2) dasselbe.)

Die Koeffizienten des Fibonacci-Polynoms sagen uns also auch, wie wir die Werte von y(t-i) miteinander per XOR verknüpfen müssen, um immer den Wert null zu erhalten. Mit anderen Worten beschreibt dies ein interessantes FIR-Filter.

Die z-Transformation des letzten Ausdrucks lautet:

Y(z) + f1Y(z)z-1+f2Y(z)z-2+…+fnY(z)z-n = 0

Oder äquivalent:

Y(z)(1+ f1z-1+f2z-2+…+fnz-n) = Y(z)H(z) = 0

Y(z)H(z) ist der Ausgang, der entsteht, wenn man das Filter H(z) auf Y(z) anwendet. Und dieser Ausgang ist null.

H(z) ist also die Übertragungsfunktion eines FIR-Filters. Speist man dieses FIR-Filter mit dem Ausgang des durch F(x) definierten LFSR, bleibt der Ausgang zu jedem Zeitpunkt null. Aus der obigen Definition von B(z) ergibt sich die Übertragungsfunktion dieses FIR-Filters zu:

H(z) = 1 + f1z-1+f2z-2+…+fnz-n

Oder im Zeitbereich, wenn der Eingang x(t) und der Ausgang y(t) ist:

y(t) = x(t) ⊕ f1x(t-1) ⊕ f2x(t-2) ⊕ … ⊕ fnx(t-n)

Wenn x(t) der Ausgang des LFSR ist, das durch F(x) definiert ist, ist y(t) für alle t null.

Diese Seite wurde maschinell aus dem Englischen übersetzt. Im Zweifelsfall siehe den Originaltext.
Copyright © 2021-2026. All rights reserved. (dcc38493)