Decodierung von Faltungscodes
Inhaltsverzeichnis
- 1 Blockschaltbild und Voraussetzungen
- 2 Vorbemerkungen zu den nachfolgenden Decodierbeispielen (1)
- 3 Vorbemerkungen zu den nachfolgenden Decodierbeispielen (2)
- 4 Decodierbeispiel für den fehlerfreien Fall (1)
- 5 Decodierbeispiel für den fehlerfreien Fall (2)
- 6 Decodierbeispiele für den fehlerbehafteten Fall (1)
- 7 Decodierbeispiele für den fehlerbehafteten Fall (2)
- 8 Zusammenhang zwischen Hamming–Distanz und Korrelation
- 9 Viterbi–Algorithmus, basierend auf Korrelation und Metriken (1)
- 10 Viterbi–Algorithmus, basierend auf Korrelation und Metriken (2)
Blockschaltbild und Voraussetzungen
Ein wesentlicher Vorteil der Faltungscodierung ist, dass es hierfür mit dem Viterbi–Algorithmus ein sehr effizientes Decodierverfahren gibt. Dieser von Andrew J. Viterbi entwickelte Algorithmus wurde bereits im Kapitel 3.8 des Buches „Digitalsignalübertragung” im Hinblick auf seinen Einsatz zur Entzerrung im Detail beschrieben. Für seinen Einsatz als Faltungsdecodierer gehen wir von folgendem Blockschaltbild und den folgenden Voraussetzungen aus:
- Die Informationssequenz u = (u1, u2, ...) ist hier im Gegensatz zur Beschreibung der linearen Blockcodes ⇒ Kapitel 1.5 oder von Reed–Solomon–Codes ⇒ Kapitel 2.4 im allgemeinen unendlich lang („semi–infinite”). Für die Informationssymbole gilt stets ui ∈ {0, 1}.
- Die Codesequenz x = (x1, x2, ...) mit xi ∈ {0, 1} hängt außer von u auch noch von der Coderate R = 1/n, dem Gedächtnis m und der Übertragungsfunktionsmatrix G(D) ab. Bei endlicher Anzahl L an Informationsbits sollte der Faltungscode durch Anfügen von m Nullen terminiert werden:
- \[\underline{u}= (u_1,\hspace{0.05cm} u_2,\hspace{0.05cm} ... \hspace{0.1cm}, u_L, \hspace{0.05cm} 0 \hspace{0.05cm},\hspace{0.05cm} ... \hspace{0.1cm}, 0 ) \hspace{0.3cm}\Rightarrow \hspace{0.3cm} \underline{x}= (x_1,\hspace{0.05cm} x_2,\hspace{0.05cm} ... \hspace{0.1cm}, x_{2L}, \hspace{0.05cm} x_{2L+1} ,\hspace{0.05cm} ... \hspace{0.1cm}, \hspace{0.05cm} x_{2L+2m} ) \hspace{0.05cm}.\]
- Die Empfangssequenz y = (y1, y2, ...) ergibt sich entsprechend dem angenommenen Kanalmodell. Bei einem digitalen Modell wie dem Binary Symmetric Channel (BSC) gilt yi ∈ {0, 1}, so dass die Verfälschung von x auf y mit der Hamming–Distanz dH (x, y) quantifiziert werden kann. Die erforderlichen Modifikationen für den AWGN–Kanal folgen auf Seite 6 dieses Kapitels.
- Der nachfolgend beschriebene Viterbi–Algorithmus liefert eine Schätzung z für die Codesequenz x und eine weitere Schätzung υ für die Informationssequenz u. Dabei gilt:
- \[{\rm Pr}(\underline{z} \ne \underline{x})\stackrel{!}{=}{\rm Minimum} \hspace{0.25cm}\Rightarrow \hspace{0.25cm} {\rm Pr}(\underline{\upsilon} \ne \underline{u})\stackrel{!}{=}{\rm Minimum} \hspace{0.05cm}.\]
Zusammenfassung : Der Viterbi–Algorithmus sucht bei einem digitalen Kanalmodell (zum Beispiel BSC) von allen möglichen Codesequenzen x' diejenige Sequenz z mit der minimalen Hamming–Distanz dH(x', y) zur Empfangssequenz y:
\[\underline{z} = {\rm arg} \min_{\underline{x}' \in \hspace{0.05cm} \mathcal{C}} \hspace{0.1cm} d_{\rm H}( \underline{x}'\hspace{0.02cm},\hspace{0.02cm} \underline{y} ) = {\rm arg} \max_{\underline{x}' \in \hspace{0.05cm} \mathcal{C}} \hspace{0.1cm} {\rm Pr}( \underline{y} \hspace{0.05cm}|\hspace{0.05cm} \underline{x}')\hspace{0.05cm}.\]
Das bedeutet auch: Der Viterbi–Algorithmus erfüllt das Maximum–Likelihood–Kriterium.
Vorbemerkungen zu den nachfolgenden Decodierbeispielen (1)
In den Beispielen dieses Kapitels wird stets von unserem Standard–Faltungscodierer der Rate R = 1/2, mit dem Gedächtnis m = 2 sowie der Übertragungsfunktionsmatrix G(D) = (1 + D + D2, 1 + D2) ausgegangen. Die Länge der Informationssequenz sei L = 5 und unter Berücksichtigung der Terminierung L′ = 7. Die betrachteten Codesequenzen x und auch die Empfangssequenzen y setzen sich somit jeweils aus 14 Bit zusammen. Durch Aufteilung entsprechend y = ( y1, y2, ... , y7) ergeben sich die Bitpaare yi ∈ {00, 01, 10, 11}.
Die Viterbi–Decodierung erfolgt mit Hilfe des dargestellten Trellisdiagramms. Ein roter Pfeil steht für die Hypothese ui = 0, ein blauer für ui = 1. Um Verwechslungen zu vermeiden, versehen wir hypothetische Größen mit Apostroph. Auch dann, wenn wir sicher wissen, dass das Informationsbit ui = 1 ist, gilt ui' ∈ {0, 1}. Neben den Pfeilen steht die jeweilige hypothetische Codesequenz xi' ∈ {00, 01, 10, 11}.
Wir gehen auf dieser und den nachfolgenden Seiten davon aus, dass die Viterbi–Decodierung auf der Hamming–Distanz dH(xi', yi) zwischen dem Empfangswort yi und den vier möglichen Codeworten xi' ∈ {00, 01, 10, 11} basiert. Dann gehen wir wie folgt vor:
- In den noch leeren Kreisen werden die Fehlergrößen Γi(Sμ) der Zustände Sμ (0 ≤ μ ≤ 3) zu den Zeitpunkten i eingetragen. Der Startwert ist stets Γ0(S0) = 0.
- Die Fehlergrößen für i = 1 und i = 2 ergeben sich zu
- \[{\it \Gamma}_1(S_0) \hspace{-0.15cm} = \hspace{-0.15cm} d_{\rm H} \big ((00)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_1 \big ) \hspace{0.05cm}, \hspace{2.13cm}{\it \Gamma}_1(S_1) = d_{\rm H} \big ((11)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_1 \big ) \hspace{0.05cm},\]
- \[{\it \Gamma}_2(S_0) \hspace{-0.15cm} = \hspace{-0.15cm}{\it \Gamma}_1(S_0) + d_{\rm H} \big ((00)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_2 \big )\hspace{0.05cm}, \hspace{0.4cm}{\it \Gamma}_2(S_1) = {\it \Gamma}_1(S_0)+ d_{\rm H} \big ((11)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_2 \big ) \hspace{0.05cm},\]
- \[{\it \Gamma}_2(S_2) \hspace{-0.15cm} = \hspace{-0.15cm}{\it \Gamma}_1(S_1) + d_{\rm H} \big ((10)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_2 \big )\hspace{0.05cm}, \hspace{0.4cm}{\it \Gamma}_2(S_3) = {\it \Gamma}_1(S_1)+ d_{\rm H} \big ((01)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_2 \big ) \hspace{0.05cm}.\]
Die Beschreibung wird auf der nächsten Seite fortgesetzt.
Vorbemerkungen zu den nachfolgenden Decodierbeispielen (2)
Fortsetzung der allgemeinen Viterbi–Beschreibung:
- Ab dem Zeitpunkt i = 3 hat das Trellisdiagramm seine Grundform erreicht, und zur Berechnung aller Γi(Sμ) muss jeweils das Minimum zwischen zwei Summen ermittelt werden:
- \[{\it \Gamma}_i(S_0) \hspace{-0.15cm} = \hspace{-0.15cm}{\rm Min} \left [{\it \Gamma}_{i-1}(S_0) + d_{\rm H} \big ((00)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_i \big )\hspace{0.05cm}, \hspace{0.2cm}{\it \Gamma}_{i-1}(S_2) + d_{\rm H} \big ((11)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_i \big ) \right ] \hspace{0.05cm},\]
- \[{\it \Gamma}_i(S_1) \hspace{-0.15cm} = \hspace{-0.15cm}{\rm Min} \left [{\it \Gamma}_{i-1}(S_0) + d_{\rm H} \big ((11)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_i \big )\hspace{0.05cm}, \hspace{0.2cm}{\it \Gamma}_{i-1}(S_2) + d_{\rm H} \big ((00)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_i \big ) \right ] \hspace{0.05cm},\]
- \[{\it \Gamma}_i(S_2) \hspace{-0.15cm} = \hspace{-0.15cm}{\rm Min} \left [{\it \Gamma}_{i-1}(S_1) + d_{\rm H} \big ((10)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_i \big )\hspace{0.05cm}, \hspace{0.2cm}{\it \Gamma}_{i-1}(S_3) + d_{\rm H} \big ((01)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_i \big ) \right ] \hspace{0.05cm},\]
- \[{\it \Gamma}_i(S_3) \hspace{-0.15cm} = \hspace{-0.15cm}{\rm Min} \left [{\it \Gamma}_{i-1}(S_1) + d_{\rm H} \big ((01)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_i \big )\hspace{0.05cm}, \hspace{0.2cm}{\it \Gamma}_{i-1}(S_3) + d_{\rm H} \big ((10)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_i \big ) \right ] \hspace{0.05cm}.\]
- Von den zwei an einem Knoten Γi(Sμ) ankommenden Zweigen wird der schlechtere (der zu einem größeren Γi(Sμ) geführt hätte) eliminiert. Zu jedem Knoten führt dann nur noch ein einziger Zweig.
- Sind alle Fehlergrößen bis einschließlich i = 7 ermittelt, so kann der Viterbi–Algotithmus mit der Suche das zusammenhängenden Pfades vom Ende des Trellis ⇒ Γ7(S0) bis zum Anfang ⇒ Γ0(S0) abgeschlossen werden.
- Durch diesen Pfad liegen dann die am wahrscheinlichsten erscheinende Codesequenz z und die wahrscheinlichste Informationssequenz υ fest. Nicht für alle Empfangssequenzen y gilt aber z = x und υ = u. Das heißt: Bei zu vielen Übertragungsfehlern versagt auch der Viterbi–Algorithmus.
Decodierbeispiel für den fehlerfreien Fall (1)
Zunächst gehen wir von der Empfangssequenz y = (11, 01, 01, 11, 11, 10, 11) aus, die hier – wegen der Codewortlänge n = 2 – bereits in Bitpaare y1, ... , y7 unterteilt ist.
Die eingetragenen Zahlenwerte und die verschiedenen Stricharten werden im folgenden Text erklärt:
- Ausgehend vom Initialwert Γ0(S0) = 0 kommt man mit y1 = (11) durch Addition der Hamming-Distanzen dH ((00), y1) = 2 bzw. dH ((11), y1) = 0 zu den Fehlergrößen Γ1(S0) = 2, Γ1(S1) = 0.
- Im zweiten Decodierschritt gibt es Fehlergrößen für alle vier Zustände: Mit y2 = (01) erhält man:
- \[{\it \Gamma}_2(S_0) \hspace{-0.15cm} = \hspace{-0.15cm} {\it \Gamma}_1(S_0) + d_{\rm H} \big ((00)\hspace{0.05cm},\hspace{0.05cm} (01) \big ) = 2+1 = 3 \hspace{0.05cm},\]
- \[{\it \Gamma}_2(S_1) \hspace{-0.15cm} = \hspace{-0.15cm} {\it \Gamma}_1(S_0) + d_{\rm H} \big ((11)\hspace{0.05cm},\hspace{0.05cm} (01) \big ) = 2+1 = 3 \hspace{0.05cm},\]
- \[{\it \Gamma}_2(S_2) \hspace{-0.15cm} = \hspace{-0.15cm} {\it \Gamma}_1(S_1) + d_{\rm H} \big ((10)\hspace{0.05cm},\hspace{0.05cm} (01) \big ) = 0+2=2 \hspace{0.05cm},\]
- \[{\it \Gamma}_2(S_3) \hspace{-0.15cm} = \hspace{-0.15cm} {\it \Gamma}_1(S_1) + d_{\rm H} \big ((01)\hspace{0.05cm},\hspace{0.05cm} (01) \big ) = 0+0=0 \hspace{0.05cm}.\]
- In allen weiteren Decodierschritten müssen jeweils zwei Werte verglichen werden, wobei dem Knoten Γi(Sμ) stets der kleinere Wert zugewiesen wird. Beispielsweise gilt für i = 3 mit y3 = (01):
- \[{\it \Gamma}_3(S_0) \hspace{-0.15cm} = \hspace{-0.15cm}{\rm min} \left [{\it \Gamma}_{2}(S_0) + d_{\rm H} \big ((00)\hspace{0.05cm},\hspace{0.05cm} (01) \big )\hspace{0.05cm}, \hspace{0.2cm}{\it \Gamma}_{2}(S_2) + d_{\rm H} \big ((11)\hspace{0.05cm},\hspace{0.05cm} (01) \big ) \right ] =\]
- \[ \hspace{1.2cm} = \hspace{-0.15cm}{\rm min} \left [ 3+1\hspace{0.05cm},\hspace{0.05cm} 2+1 \right ] = 3\hspace{0.05cm},\]
- \[{\it \Gamma}_3(S_3) \hspace{-0.15cm} = \hspace{-0.15cm}{\rm min} \left [{\it \Gamma}_{2}(S_1) + d_{\rm H} \big ((01)\hspace{0.05cm},\hspace{0.05cm} (01) \big )\hspace{0.05cm}, \hspace{0.2cm}{\it \Gamma}_{2}(S_3) + d_{\rm H} \big ((10)\hspace{0.05cm},\hspace{0.05cm} (01) \big ) \right ] =\]
- \[ \hspace{1.2cm} = \hspace{-0.15cm}{\rm min} \left [ 3+0\hspace{0.05cm},\hspace{0.05cm} 0+2 \right ] = 2\hspace{0.05cm}.\]
- Ab i = 6 wird im betrachteten Beispiel die Terminierung des Faltungscodes wirksam. Hier sind nur noch zwei Vergleiche zur Bestimmung von Γ6(S0) und Γ6(S2) anzustellen, und für i = 7 nur noch ein Vergleich mit dem Endergebnis Γ7(S0).
- Von den jeweils zwei an einem Knoten ankommenden Zweigen wird stets nur derjenige bei der abschließenden Pfadsuche herangezogen, der zur minimalen Fehlergröße Γi(Sμ) geführt hat. Die „schlechten” Zweige werden verworfen. Sie sind in obiger Grafik jeweils punktiert dargestellt.
Die Beschreibung wird auf der nächsten Seite fortgesetzt.
Decodierbeispiel für den fehlerfreien Fall (2)
Nachdem alle Fehlergrößen Γi(Sμ) – in dem vorliegenden Beispiel für 1 ≤ i ≤ 7 und 0 ≤ μ ≤ 3 – ermittelt wurden, kann der Viterbi–Decoder mit der Pfadsuche beginnen.
Die Pfadsuche läuft wie folgt ab:
- Ausgehend vom Endwert Γ7(S0) wird in Rückwärtsrichtung ein zusammenhängender Pfad bis zum Startwert Γ0(S0) gesucht. Erlaubt sind nur die durchgezogenen Zweige. Punktierte Linien können nicht Teil des ausgewählten Pfades sein.
- Der ausgewählte Pfad ist in der Grafik grau markiert. Er durchläuft von rechts nach links die Zustände S0 ← S2 ← S1 ← S0 ← S2 ← S3 ← S1 ← S0. Es gibt keinen zweiten durchgehenden Pfad von Γ7(S0) zu Γ0(S0). Das bedeutet: Das Decodierergebnis ist eindeutig.
- Das Ergebnis υ = (1, 1, 0, 0, 1, 0, 0) des Viterbi–Decoders hinsichtlich der Informationssequenz erhält man, wenn man für den durchgehenden Pfad – nun aber in Vorwärtsrichtung von links nach rechts – die Farben der einzelnen Zweige auswertet (rot entspricht einer 0, blau einer 1).
Aus dem Endwert Γ7(S0) = 0 erkennt man, dass in diesem ersten Beispiel keine Übertragungsfehler vorlagen. Das Decodierergebnis z stimmt also mit dem Empfangsvektor y = (11, 01, 01, 11, 11, 10, 11) und der tatsächlichen Codesequenz x überein. Außerdem ist υ nicht nur die nach dem ML–Kriterium wahrscheinlichste Informationssequenz u, sondern es gilt auch hier die Identität: υ = u.
Anmerkung: Bei der beschriebenen Decodierung wurde von der bereits in der Überschrift enthaltenen Information „Fehlerfreier Fall” natürlich kein Gebrauch gemacht wurde.
Decodierbeispiele für den fehlerbehafteten Fall (1)
Es folgen zwei weitere Beispiele zur Viterbi–Decodierung. Die Berechnung der Fehlergrößen Γi(Sμ) geschieht wie auf Seite 2 beschrieben und auf der letzten Seite für den fehlerfreien Fall demonstriert.
Als Resümee dieses ersten Beispiels mit obigem Trellis ist festzuhalten:
- Auch hier lässt sich ein eindeutiger Pfad (dunkelgraue Markierung) zurückverfolgen, der zu den folgenden Ergebnissen führt (erkennbar an den Beschriftungen bzw. den Farben dieses Pfades):
- \[\underline{z} \hspace{-0.15cm} = \hspace{-0.15cm} \big (00\hspace{0.05cm}, 11\hspace{0.05cm}, 10\hspace{0.05cm}, 00\hspace{0.05cm}, 01\hspace{0.05cm}, 01\hspace{0.05cm}, 11 \hspace{0.05cm} \big ) \hspace{0.05cm},\]
- \[ \underline{\upsilon} \hspace{-0.15cm} = \hspace{-0.15cm} \big (0\hspace{0.05cm}, 1\hspace{0.05cm}, 0\hspace{0.05cm}, 1\hspace{0.05cm}, 1\hspace{0.05cm}, 0\hspace{0.05cm}, 0 \hspace{0.05cm} \big ) \hspace{0.05cm}.\]
- Der Vergleich der am wahrscheinlichsten gesendeten Codesequenz z mit dem Empfangsvektor y zeigt, dass hier zwei Bitfehler (am Beginn) vorlagen. Da aber der verwendete Faltungscode die freie Distanz dF = 5 aufweist, führen zwei Fehler noch nicht zu einem falschen Decodierergebnis.
- Es gibt andere Pfade wie zum Beispiel den heller markierten Pfad (S0 → S1 → S3 → S3 → S3 → S2 → S0 → S0), die zunächst als vielversprechend erscheinen. Erst im letzten Decodierschritt (i = 7) kann dieser hellgraue Pfad endgültig verworfen werden.
- Dieses Beispiel zeigt, dass eine zu frühe Entscheidung oft zu einem Decodierfehler führt, und man erkennt auch die Zweckmäßigkeit der Terminierung: Bei endgültiger Entscheidung zum Zeitpunkt i = 5 (dem Ende der eigentlichen Informationssequenz) wären die Sequenzen (0, 1, 0, 1, 1) und (1, 1, 1, 1, 0) noch als gleichwahrscheinlich angesehen worden.
Anmerkung: Bei der Berechnung von Γ5(S0) = 3 und Γ5(S1) = 3 führen hier jeweils die beiden Vergleichszweige zur gleichen minimalen Fehlergröße. In der Grafik sind diese beiden Sonderfälle durch Strichpunktierung markiert.
In diesem Beispiel hat dieser Sonderfall keine Auswirkung auf die Pfadsuche. Der Algorithmus erwartet trotzdem stets eine Entscheidung zwischen zwei konkurrierenden Zweigen. In der Praxis hilft man sich dadurch, dass man bei Gleichheit einen der beiden Pfade zufällig auswählt.
Decodierbeispiele für den fehlerbehafteten Fall (2)
Im letzten Beispiel gehen wir stets von folgenden Voraussetzungen bezüglich Quelle und Coder aus:
\[\underline{u} = \big (1\hspace{0.05cm}, 1\hspace{0.05cm}, 0\hspace{0.05cm}, 0\hspace{0.05cm}, 1 \hspace{0.05cm}, 0\hspace{0.05cm}, 0 \big )\hspace{0.3cm}\Rightarrow \hspace{0.3cm} \underline{x} = \big (11\hspace{0.05cm}, 01\hspace{0.05cm}, 01\hspace{0.05cm}, 11\hspace{0.05cm}, 11\hspace{0.05cm}, 10\hspace{0.05cm}, 11 \hspace{0.05cm} \hspace{0.05cm} \big ) \hspace{0.05cm}.\]
Aus der ersten der beiden Grafiken erkennt man, dass sich hier der Decoder trotz dreier Bitfehler für den richtigen Pfad (dunkle Hinterlegung) entscheidet. Es gibt also nicht immer eine Fehlentscheidung, wenn mehr als dF/2 Bitfehler aufgetreten sind.
In der unteren Grafik ist noch ein vierter Bitfehler in Form von y7 = (01) hinzugefügt:
- Nun führen beide Zweige im Schritt i = 7 zur minimalen Fehlergröße Γ7(S0) = 4, erkennbar an den strichpunktierten Übergängen. Entscheidet man sich im dann erforderlichen Losverfahren für den dunkel hinterlegten Pfad, so wird auch bei vier Bitfehlern noch die richtige Entscheidung getroffen.
- Andernfalls kommt es zu einer Fehlentscheidung. Je nachdem, wie das Auswürfeln im Schritt i = 6 zwischen den beiden strichpunktierten Konkurrenten ausgeht, entscheidet man sich entweder für den violetten oder den hellgrauen Pfad. Mit dem richtigen Pfad haben beide wenig gemein.
Zusammenhang zwischen Hamming–Distanz und Korrelation
Insbesondere beim BSC–Modell – aber auch bei jedem anderen Binärkanal ⇒ Eingang xi ∈ {0, 1}, Ausgang yi ∈ {0, 1} wie zum Beispiel dem Gilbert–Elliott–Modell – liefert die Hamming–Distanz dH(x, y) genau die gleiche Information über die Ähnlichkeit der Eingangsfolge x und der Ausgangsfolge y wie das innere Produkt. Nimmt man an, dass die beiden Folgen in bipolarer Darstellung vorliegen (gekennzeichnet durch Tilden) und dass die Folgenlänge jeweils L ist, so gilt für das innere Produkt:
\[<\hspace{-0.1cm}\underline{\tilde{x}}, \hspace{0.05cm}\underline{\tilde{y}} \hspace{-0.1cm}> \hspace{0.15cm} = \sum_{i = 1}^{L} \tilde{x}_i \cdot \tilde{y}_i \hspace{0.3cm}{\rm mit } \hspace{0.2cm} \tilde{x}_i = 1 - 2 \cdot x_i \hspace{0.05cm},\hspace{0.2cm} \tilde{y}_i = 1 - 2 \cdot y_i \hspace{0.05cm},\hspace{0.2cm} \tilde{x}_i, \hspace{0.05cm}\tilde{y}_i \in \hspace{0.1cm}\{ -1, +1\} \hspace{0.05cm}.\]
Wir bezeichnen dieses innere Produkt manchmal auch als „Korrelationswert”. Die Anführungszeichen sollen darauf hinweisen, dass der Wertebereich eines Korrelationskoeffizienten eigentlich ±1 ist.
- Links dargestellt sind die unipolaren Folgen x und y sowie das Produkt x · y. Man erkennt die Hamming–Distanz dH(x, y) = 6 ⇒ sechs Bitfehler an den Pfeilpositionen. Das innere Produkt 〈x · y〉 = 0 hat hier keine Aussagekraft. Zum Beispiel ist 〈0 · y〉 unabhängig von y stets Null.
- Die Hamming–Distanz dH = 6 erkennt man auch aus der bipolaren (antipodalen) Darstellung der rechten Grafik. Die „Korrelationswert” hat aber nun den richtigen Wert 4 · (+1) + 6 · (–1) = –2. Es gilt der deterministische Zusammenhang zwischen den beiden Größen mit der Folgenlänge L:
- \[<\hspace{-0.1cm}\underline{\tilde{x}}, \hspace{0.05cm}\underline{\tilde{y}} \hspace{-0.1cm}> \hspace{0.15cm} = L - 2 \cdot d_{\rm H} (\underline{\tilde{x}}, \hspace{0.05cm}\underline{\tilde{y}})\hspace{0.05cm}.\]
Interpretieren wir nun diese Gleichung für einige Sonderfälle:
- Identische Folgen: Die Hamming–Distanz ist gleich 0 und der „Korrelationswert” gleich L.
- Invertierte: Folgen: Die Hamming–Distanz ist gleich L und der „Korrelationswert” gleich –L.
- Unkorrelierte Folgen: Die Hamming–Distanz ist gleich L/2, der „Korrelationswert” gleich 0.
Viterbi–Algorithmus, basierend auf Korrelation und Metriken (1)
Mit den Erkenntnissen der letzten Seite lässt sich der Viterbi–Algorithmus auch wie folgt charakterisieren. Der Algorithmus sucht von allen möglichen Codesequenzen x′ ∈ C die Sequenz z mit der maximalen Korrelation zur Empfangssequenz y:
\[\underline{z} = {\rm arg} \max_{\underline{x}' \in \hspace{0.05cm} \mathcal{C}} \hspace{0.1cm} \left\langle \tilde{\underline{x}}'\hspace{0.05cm} ,\hspace{0.05cm} \tilde{\underline{y}} \right\rangle \hspace{0.4cm}{\rm mit }\hspace{0.4cm}\tilde{\underline{x}}'= 1 - 2 \cdot \underline{x}'\hspace{0.05cm}, \hspace{0.2cm} \tilde{\underline{y}}= 1 - 2 \cdot \underline{y} \hspace{0.05cm}.\]
〈 ... 〉 bezeichnet einen „Korrelationswert” entsprechend den Aussagen auf der letzten Seite. Die Tilden weisen wieder auf die bipolare (antipodale) Darstellung hin.
Die Grafik zeigt die diesbezügliche Trellisauswertung. Zugrunde liegt
- der gleiche Faltungscode mit R = 1/2, m = 2 und G(D) = (1 + D + D2, 1 + D2), und
- der gleiche Empfangsvektor y = (11, 11, 10, 00, 01, 01, 11)
wie für das Trellisdiagramm auf Seite 3a dieses Kapitels, basierend auf der minimalen Hamming–Distanz und den Fehlergrößen Γi(Sμ). Beide Darstellungen ähneln sich sehr.
Ebenso wie die Suche nach der Sequenz mit der minimalen Hamming–Distanz geschieht auch die Suche nach dem maximalen Korrelationswert schrittweise:
- Die Knoten bezeichnet man hier als die Metriken Λi(Sμ). Die englische Bezeichnung hierfür ist Cumulative Metric, während Branch Metric den Metrikzuwachs angibt.
- Der Endwert Λ7(S0) = 10 gibt den „Korrelationswert” zwischen der ausgewählten Folge z und dem Empfangsvektor y an. Im fehlerfreien Fall ergäbe sich Λ7(S0) = 14.
Die Trellisbeschreibung wird auf der nächsten Seite fortgesetzt.
Viterbi–Algorithmus, basierend auf Korrelation und Metriken (2)
Die nachfolgende Beschreibung bezieht sich auf die Trellisauswertung entsprechend der letzten Seite, basierend auf „Korrelationswerten” und den Metriken Λi(Sμ). Zum Vergleich zeigt die Grafik auf Seite 3a Trellisauswertung, die auf Hamming–Distanzen und den Fehlergrößen Γi(Sμ) basieren.
- Die Metriken zum Zeitpunkt i = 1 ergeben sich mit y1 = (11) zu
- \[{\it \Lambda}_1(S_0) \hspace{0.15cm} = \hspace{0.15cm} <\hspace{-0.05cm}(00)\hspace{0.05cm}, \hspace{0.05cm}(11) \hspace{-0.05cm}>\hspace{0.2cm} = \hspace{0.2cm}<(+1,\hspace{0.05cm} +1)\hspace{0.05cm}, \hspace{0.05cm}(-1,\hspace{0.05cm} -1) >\hspace{0.1cm} = \hspace{0.1cm} -2 \hspace{0.05cm},\]
- \[{\it \Lambda}_1(S_1) \hspace{0.15cm} = \hspace{0.15cm} <\hspace{-0.05cm}(11)\hspace{0.05cm}, \hspace{0.05cm}(11) \hspace{-0.05cm}>\hspace{0.2cm} = \hspace{0.2cm}<(-1,\hspace{0.05cm} -1)\hspace{0.05cm}, \hspace{0.05cm}(-1,\hspace{0.05cm} -1) >\hspace{0.1cm} = \hspace{0.1cm} +2 \hspace{0.05cm}.\]
- Entsprechend gilt zum Zeitpunkt i = 2 mit y2 = (11):
- \[{\it \Lambda}_2(S_0) \hspace{-0.15cm} = \hspace{-0.15cm} {\it \Lambda}_1(S_0) \hspace{0.2cm}+ \hspace{0.1cm}<\hspace{-0.05cm}(00)\hspace{0.05cm}, \hspace{0.05cm}(11) \hspace{-0.05cm}>\hspace{0.2cm} = \hspace{0.1cm} -2-2 = -4 \hspace{0.05cm},\]
- \[{\it \Lambda}_2(S_1) \hspace{-0.15cm} = \hspace{-0.15cm} {\it \Lambda}_1(S_0) \hspace{0.2cm}+ \hspace{0.1cm}<\hspace{-0.05cm}(11)\hspace{0.05cm}, \hspace{0.05cm}(11) \hspace{-0.05cm}>\hspace{0.2cm} = \hspace{0.1cm} -2+2 = 0 \hspace{0.05cm},\]
- \[{\it \Lambda}_2(S_2) \hspace{-0.15cm} = \hspace{-0.15cm} {\it \Lambda}_1(S_1) \hspace{0.2cm}+ \hspace{0.1cm}<\hspace{-0.05cm}(10)\hspace{0.05cm}, \hspace{0.05cm}(11) \hspace{-0.05cm}>\hspace{0.2cm} = \hspace{0.1cm} 2+0 = 2 \hspace{0.05cm},\]
- \[{\it \Lambda}_2(S_3) \hspace{-0.15cm} = \hspace{-0.15cm} {\it \Lambda}_1(S_1) \hspace{0.2cm}+ \hspace{0.1cm}<\hspace{-0.05cm}(01)\hspace{0.05cm}, \hspace{0.05cm}(11) \hspace{-0.05cm}>\hspace{0.2cm} = \hspace{0.1cm} 2+0 = 2 \hspace{0.05cm}.\]
- Ab dem Zeitpunkt i = 3 muss eine Entscheidung zwischen zwei Metriken getroffen werden. Beispielsweise erhält man mit y3 = (10) für die oberste und die unterste Metrik im Trellis:
- \[{\it \Lambda}_3(S_0) \hspace{-0.15cm} = \hspace{-0.15cm}{\rm max} \left [{\it \Lambda}_{2}(S_0) \hspace{0.2cm}+ \hspace{0.1cm}<\hspace{-0.05cm}(00)\hspace{0.05cm}, \hspace{0.05cm}(11) \hspace{-0.05cm}>\hspace{0.2cm} \hspace{0.05cm}, \hspace{0.2cm}{\it \Lambda}_{2}(S_1) \hspace{0.2cm}+ \hspace{0.1cm}<\hspace{-0.05cm}(00)\hspace{0.05cm}, \hspace{0.05cm}(11) \hspace{-0.05cm}> \right ] =\]
- \[\hspace{1.25cm} = \hspace{-0.15cm} {\rm max} \left [ -4+0\hspace{0.05cm},\hspace{0.05cm} 2+0 \right ] = 2\hspace{0.05cm},\]
- \[{\it \Lambda}_3(S_3) \hspace{-0.15cm} = \hspace{-0.15cm}{\rm max} \left [{\it \Lambda}_{2}(S_1) \hspace{0.2cm}+ \hspace{0.1cm}<\hspace{-0.05cm}(01)\hspace{0.05cm}, \hspace{0.05cm}(10) \hspace{-0.05cm}>\hspace{0.2cm} \hspace{0.05cm}, \hspace{0.2cm}{\it \Lambda}_{2}(S_3) \hspace{0.2cm}+ \hspace{0.1cm}<\hspace{-0.05cm}(10)\hspace{0.05cm}, \hspace{0.05cm}(10) \hspace{-0.05cm}> \right ] =\]
- \[\hspace{1.25cm} = \hspace{-0.15cm} {\rm max} \left [ 0+0\hspace{0.05cm},\hspace{0.05cm} 2+2 \right ] = 4\hspace{0.05cm}.\]
Vergleicht man die zu minimierenden Fehlergrößen Γi(Sμ) mit den zu maximierenden Metriken Λi(Sμ), so erkennt man den folgenden deterministischen Zusammenhang:
\[{\it \Lambda}_i(S_{\mu}) = 2 \cdot \big [ i - {\it \Gamma}_i(S_{\mu}) \big ] \hspace{0.05cm}.\]
Die Auswahl der zu den einzelnen Decodierschritten überlebenden Zweige ist bei beiden Verfahren identisch, und auch die Pfadsuche liefert das gleiche Ergebnis.
Zusammenfassung:
- Beim Binärkanal – zum Beispiel dem BSC–Modell – führen die beiden beschriebenen Viterbi–Varianten Fehlergrößenminimierung und Metrikmaximierung zum gleichen Ergebnis.
- Beim AWGN–Kanal ist die Fehlergrößenminimierung nicht anwendbar, da keine Hamming–Distanz zwischen dem binären Eingang x und dem analogen Ausgang y angegeben werden kann.
- Die Metrikmaximierung ist beim AWGN–Kanal vielmehr identisch mit der Minimierung der Euklidischen Distanz – siehe Aufgabe Z3.10.
- Ein weiterer Vorteil der Metrikmaximierung ist, dass eine Zuverlässigkeitsinformation über die Empfangswerte y in einfacher Weise berücksichtigt werden kann.