Übung zu Drahtlose Kommunikation 9. Übung 07.01.2012
(n,k,k) k -> Eingangsbit (Informationszeichen ist 1 Bit lang) K -> Begrenzungsfaktor (Länge des Schieberegisters ist k*k) n -> Ausgangsbit (für jedes Eingangsbit entstehen n Ausgangsbits) -> somit n Verknüpfungen (n, k, K) code Input processes k bits at a time Output produces n bits for every k input bits K = constraint factor k and n generally very small n-bit output of (n, k, K) code depends on: Current block of k input bits Previous K-1 blocks of k input bits 2
(n,k,k) = (2,1,3) Faltungscodes (Wiederholung) Beispiel: Eingangscodefolge: 10 11 Coderate R = 1 2 Faltungscode: 11 10 00 01 01 11 input u n u n-1 u n-2 v n1 =u n-2 u n-1 u n v n2 =u n-2 u n v n1 +v n2 0 0 0 0 0 -- 1 1 0 0 1 1 11 0 0 1 0 1 0 10 1 1 0 1 0 0 00 1 1 1 0 0 1 01 0 0 1 1 0 1 01 0 0 0 1 1 1 11 0 0 0 0 0 -- 3
(n,k,k) = (2,1,3) Eingangscodefolge: 1 0 1 1 0 0 Faltungscode: 11 10 00 01 01 11 Beim Codebaum repräsentiert jedes Eingangsbit eine neue Verzweigung des Baumes. Die Ausgabefolge wird an den dazugehörigen Ästen abgelesen. Dabei ist besonders wichtig, dass jede Eingebefolge mit 00 abgeschlossen wird. Aus der Eingangsfolge 1011 wird deshalb 101100. Codebaum Somit entspricht jede Informationsfolge genau einem Pfad durch den Baum, dies führt zu einem exponentiellen Anwachsen des Baumes mit entsprechend großer Redundanz. Der Codebaum wird benutzt um die sequentielle Decodierung zu beschreiben. 4
(n,k,k) = (2,1,3) Netzdiagramm (trellis) Eingangscodefolge: 1 0 1 1 0 0 Faltungscode: 11 10 00 01 01 11 Das Netzdiagramm besteht aus Knoten und Zweigen, dabei stellen die Knoten die Zustände (also das Gedächtnis des Codierers) dar. Die Zweige beschreiben den Übergang von einem Zustand in den darauf folgenden. An den Zweigen stehen wie beim Codebaum die durch die jeweiligen Eingangsbit erzeugten Ausgangsbit, auch hier muss die Eingangsfolge mit 00 abschließen. Das trellis enthält weniger Redundanz als der Codebaum, da hier gleiche Zweige für mehrere Wege benutzt werden können. 5
(n,k,k) = (2,1,3) Eingangscodefolge: 1 0 1 1 0 0 Faltungscode: 11 10 00 01 01 11 Der Darstellung des Zustandsdiagramm liegt ein Mealy-Automat zugrunde. Sie geht im Endeffekt aus dem Netzdiagramm hervor, indem man die zeitliche Komponente des trellis weglässt. Die Darstellung ist sehr kompakt. Jegliche Redundanz, die das Netzdiagramm noch aufwies entfällt Jeder Zustand wird genau einmal gekennzeichnet. Da die Darstellung ein Mealy-Automat ist, steht in den Zuständen der Inhalt des Gedächtnisses und an den Kanten die Ausgabe bzw. das Eingangsbit. Für unsere Eingangsfolge 10 11 ergibt sich wieder der Faltungscode 11 10 00 01 01 11. Allgemein ist zum Zustandsdiagramm zu sagen, dass diese Zustandsdiagramm 6
Betrachten Sie einen Encoder für Faltungscodes der mit (vn1=u n u n-2 ) und (v n2 = u n-1 u n-2 ) definiert ist. 1) Zeichnen Sie eine Register Implementation. 2) Zeichnen Sie ein Zustandsdiagramm für diesen Encoder. 3) Zeichnen Sie ein Trellis Diagramm für diesen Encoder 7
b) Betrachten Sie einen Encoder für Faltungscodes der mit (vn1=u n u n-2 ) und (v n2 = u n-1 u n-2 ) definiert ist. 1) Zeichnen Sie eine Register Implementation. 8
u n u n-1 u n-2 v n1 =u n-2 u n v n2 =u n-2 u n-1 v n1 +v n2 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 9
u n u n-1 u n-2 v n1 =u n-2 u n v n2 =u n-2 u n-1 v n1 +v n2 0 0 0 0 0 00 0 0 1 1 1 11 0 1 0 0 1 01 0 1 1 1 0 10 1 0 0 1 0 10 1 0 1 0 1 01 1 1 0 1 1 11 1 1 1 0 0 00 10
b) Betrachten Sie einen Encoder für Faltungscodes der mit (v n1 =u n u n-2 ) und (v n2 = u n-1 u n-2 ) definiert ist. 2) Zeichnen Sie ein Zustandsdiagramm für diesen Encoder. 11
b) Betrachten Sie einen Encoder für Faltungscodes der mit (v n1 =u n u n-2 ) und (v n2 = u n-1 u n-2 ) definiert ist. 2) Zeichnen Sie ein Zustandsdiagramm für diesen Encoder. Gruppe: BlaisePascal 12
Trellis-Diagramm 00 01 10 11 13
b) Betrachten Sie einen Encoder für Faltungscodes der mit (vn1=u n u n-2 ) und (v n2 = u n-1 u n-2 ) definiert ist. 3) Zeichnen Sie ein Trellis Diagramm für diesen Encoder 14
b) Betrachten Sie einen Encoder für Faltungscodes der mit (vn1=u n u n-2 ) und (v n2 = u n-1 u n-2 ) definiert ist. 3) Zeichnen Sie ein Trellis Diagramm für diesen Encoder Gruppe: BlaisePascal 15
Trellis diagram expanded encoder diagram Viterbi code error correction algorithm Compares received sequence with all possible transmitted sequences Algorithm chooses path through trellis whose coded sequence differs from received sequence in the fewest number of places Once a valid path is selected as the correct path, the decoder can recover the input data bits from the output code bits 16
Decodieren von Faltungscodes mithilfe des Viterbi-Decodierverfahrens Maximum-Likelihood-Decoder, d.h., er wählt aus allen möglichen Codefolgen die wahrscheinlichste aus. Die Codefolge ist am wahrscheinlichsten, die sich in möglichst wenigen Stellen von der empfangenen Folge unterscheidet, -> bedeutet, den geringsten Hammingabstand zur Empfangscodefolge besitzt. Um diese Unterscheidung fassbar zu machen, wurde eine Metrik λ wie folgt eingeführt. Hierbei entspricht i der jeweiligen Bitstelle x i, der empfangenen Codefolge und y i eines von allen möglichen Codewörtern. Für jede mögliche mögliche Codefolge Y i wird die Summe i = i gebildet und am Ende des Decodiervorgangs ist die Codefolge am wahrscheinlichsten, die die kleinste Summe i hat -> diese ist dann die richtige Eingangsfolge. 17
Decodieren von Faltungscodes mithilfe des Viterbi-Decodierverfahrens 1) Beginne Netzdiagramm im Nullzustand zum Zeitpunkt i =0 2) Berechne ( x(i) y(1) ) zwischen empfangenen Codewort x(i) und allen möglichen Codewörtern y(i) 3) Addiere unter 2. berechnete Pfadmetriken zu alten Zustandsmetriken 4) An jedem Zustand Auswahl des jenigen Pfades mit kleinster euklidischer Distanz und Verwerfung der anderen Pfade 5) Wiederholung ab 2. bis alle n empfangenen Wörter abgearbeitet wurden 6) Ende des Netzdiagramms: - Netzdiagramm endet im Nullzustand - Bestimmung des Pfades mit der besten Metrik (n) 7) Zurückverfolgen des in 6. bestimmten Pfades und Ausgabe der zugehörigen Informationsbit. 18
Decodieren von Faltungscodes mithilfe des Viterbi-Decodierverfahrens Beispiel für Fehlerkorrektur des Viterbi-Decoders: Richtiger Faltungscode: 11 10 10 01 00 11 Falscher Faltungscode: 11 10 00 01 01 11 http://www.tu-chemnitz.de/informatik/this/downloads/courses/ss03/kv/faltungscodes.pdf 19
1 0 1 1 0 0 Falscher Faltungscode: 11 10 00 01 01 11 00 01 10 11 20
Falscher Faltungscode: 11 10 00 01 01 11 21
Falscher Faltungscode: 11 10 00 01 01 11 22
Falscher Faltungscode: 11 10 00 01 01 11 23
Falscher Faltungscode: 11 10 00 01 01 11 24