Übung zu
Drahtlose Kommunikation
7. Übung
03.12.2012
Aufgabe 1 (Cyclic Redundancy Check)
Gegeben ist das Generator-Polynom C(x) = x4 + x3+ 1
a) Zeichnen Sie die Hardware-Implementation zum obigen Generator-Polynom (bestehend aus Schieberegistern und XOR-Gattern).
b) Die folgende Nachricht soll übertragen werden: M(x) = x8+x7+x6+x4+x3+1 Sichern Sie die Nachricht mit dem obigen Generator-Polynom C(x) ab. Wie lautet die zu übertragende Nachricht T(x)?
c) Gehen Sie davon aus, dass das 8. Bit (von rechts, an der Stelle x7) bei der übertragenen Nachricht T(x) gekippt ist.
Cyclic Redundancy Check
polynomielle Arithmetik modulo 2
• Koeffizienten entweder 0 oder 1
• kein Übertrag zu berücksichtigen
• Addition und Subtraktion identisch, XOR
Cyclic Redundancy Check
Was wird übertragen, wenn gilt
Aufgabe 1 (Cyclic Redundancy Check)
Gegeben ist das Generator-Polynom C(x) = x4 + x3+ 1
a) Zeichnen Sie die Hardware-Implementation zum obigen Generator-Polynom (bestehend aus Schieberegistern und XOR-Gattern).
Cyclic Redundancy Check
Aufgabe 1 (Cyclic Redundancy Check)
Gegeben ist das Generator-Polynom C(x) = x4 + x3+ 1
a) Zeichnen Sie die Hardware-Implementation zum obigen Generator-Polynom (bestehend aus Schieberegistern und XOR-Gattern).
Aufgabe 1 (Cyclic Redundancy Check)
Gegeben ist das Generator-Polynom C(x) = x4 + x3+ 1
a) Zeichnen Sie die Hardware-Implementation zum obigen Generator-Polynom (bestehend aus Schieberegistern und XOR-Gattern).
C3 ⊕ C2 C1 C0
⊕ Output
Input x0
x1 x2
x3 x4
C3 ⊕ C2 C1 C0
x1 x2
x3
x4 x3 1
⊕
+ +
x0 x4
Aufgabe 1 (Cyclic Redundancy Check)
C(x) = x4 + x3+ 1 C(x) = 11001
M(x) = x8+x7+x6+x4+x3+1 M(x) = 111011001
C3 C2 C1 C0 C3 ⊕C2 ⊕ I C3 ⊕ I I=Input
0 0 0 0 1 1 1
1 0 0 1 0 0 1
0 0 1 0 1 1 1
1 1 0 1 0 1 0
0 0 1 1 1 1 1
1 1 1 1 1 0 1
1 1 1 0 0 1 0
0 1 0 1 1 0 0
1 0 1 0 0 0 1
0 1 0 0
C3 ⊕ C2 C1 C0
x1 x2
x3
x4 x3 1
⊕
+ +
x0 x4
Aufgabe 1 (Cyclic Redundancy Check)
C(x) = x4 + x3+ 1 T(x) = x12+x11+x10+x8+x7+x4+x2
C(x) = 11001 T(x) = 1110110010100
C3 C2 C1 C0 C3 ⊕C2 ⊕ I C3 ⊕ I I=Input
0 0 0 0 1 1 1
1 0 0 1 0 0 1
0 0 1 0 1 1 1
1 1 0 1 0 1 0
0 0 1 1 1 1 1
1 1 1 1 1 0 1
1 1 1 0 0 1 0
0 1 0 1 1 0 0
1 0 1 0 0 0 1
0 1 0 0 1 0 0
1 0 0 0 0 0 1
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0
Aufgabe 1 (Cyclic Redundancy Check)
Gegeben ist das Generator-Polynom C(x) = x4 + x3+ 1
b) Die folgende Nachricht soll übertragen werden: M(x) = x8+x7+x6+x4+x3+1
Wie lautet die zu übertragende Nachricht T(x)?
T(x) = 1110110010100
Aufgabe 1 (Cyclic Redundancy Check)
Gegeben ist das Generator-Polynom C(x) = x4 + x3+ 1
M(x) = x8+x7+x6+x4+x3+1 T(x) = x12+x11+x10+x8+x7+x4+x2
M(x) = 111011001 T(x) = 1110110010100
x7 gekippt ->T‘(X) = 1110100010100
c) Gehen Sie davon aus, dass das 8. Bit (von rechts, an der Stelle x7) bei der übertragenen Nachricht T(x) gekippt ist.
Aufgabe 1 (Cyclic Redundancy Check)
Gegeben ist das Generator-Polynom C(x) = x4 + x3+ 1
M(x) = x8+x7+x6+x4+x3+1 T(x) = x12+x11+x10+x8+x7+x4+x2 M(x) = 111011001 T(x) = 1110110010100
d) Manipulieren Sie die übertragene Nachricht T(x) so, dass der Fehler mittels CRC nicht erkannt wird.
Aufgabe 1 (Cyclic Redundancy Check)
Gegeben ist das Generator-Polynom C(x) = x4 + x3+ 1
M(x) = x8+x7+x6+x4+x3+1 T(x) = x12+x11+x10+x8+x7+x4+x2 M(x) = 111011001 T(x) = 1110110010100
d) Manipulieren Sie die übertragene Nachricht T(x) so, dass der Fehler mittels CRC nicht erkannt wird.
Cyclic Codes
C(x) = x3 + x2+ 1 -> 1101 Error-Pattern:
1000000 : 1101
Cyclic Codes
C(x) = x3 + x2+ 1 -> 1101 T(X) = 1101101
Aufgabe 2 (Faltungscodes)
Faltungscode (engl. Convolutional Code)
• Informationsbits sind explizit im Codewort enthalten
• Folgezustand hängt vom aktuellen Zustand, dem Eingangswert und der Rückkopplungsstruktur des Codierers ab
• Ans Ende der Informationsfolge wird ein sogenanntes Tailbit gesetzt um einen definierten Zustand zu erreichen.
• Hauptmerkmal von Faltungscodes (Unterscheidung zu Blockcodes):
Decodierung beruht nicht auf einer Prüfgleichung , sondern auf der optimalen Schätzung einer Empfangsfolge.
Faltungscode (engl. Convolutional Code) mit (n,k,K) = (2,1,3)
Implementation über Register und XOR
Aufgabe 2 (Faltungscodes)
Zustandsdiagramm
Aufgabe 2 (Faltungscodes)
(n,k,K) = (2,1,3)
Anfangszustand:
Inhalt des Schieberegisters ist 0…0
Von links wird aktuelles Informationsbit in das Schieberegister eingeschoben.
Dort wird es mit anderen Informationsbit des Schieberegisters zu n-Codebit Ausgabe verknüpft.
Aufgabe 2 (Faltungscodes)
(n,k,K) = (2,1,3)
Allgemein:
• Es gibt eine Einflusslänge Lc = (K*k), welche der Länge des Schiebregisters
entspricht, d.h. jedes Informationszeichen beeinflusst Lc-mal das Ausgangswort.
• Je größer diese Einflusslänge ist, desto mehr Kombinationsmöglichkeiten sind zur Bildung des Codes vorhanden und desto leistungsfähiger ist der Faltungscoder.
• Einflusslänge entspricht der Rolle der Blocklänge n bei den linearen Blockcodes.
• Coderate bei Faltungscodes beträgt: R = 𝑘𝑛
Hamming Code
Aufgabe 2 (Faltungscodes)
a) Erläutern Sie, was in einem (n,k,K) Faltungscode die Variablen n, k und K repräsentieren?
(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
Aufgabe 2 (Faltungscodes)
(n,k,K) = (2,1,3)
Beispiel: Eingangscodefolge: 10 11 Coderate R = 12
Faltungscode: 11 10 00 01 01 11
input un un-1 un-2 vn1=un-2⊕un-1⊕un vn2=un-2⊕un vn1+vn2
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 --
Aufgabe 2 (Faltungscodes)
(n,k,K) = (2,1,3) Codebaum
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’.
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.
Aufgabe 2 (Faltungscodes)
(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.
(n,k,K) = (2,1,3) Zustandsdiagramm 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
Aufgabe 2 (Faltungscodes)
Aufgabe 2 (Faltungscodes)
• 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
Aufgabe 2 (Faltungscodes)
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 xi, der empfangenen Codefolge und yi eines von allen möglichen Codewörtern.
Für jede mögliche mögliche Codefolge Yi 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.
Aufgabe 2 (Faltungscodes)
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.
Aufgabe 2 (Faltungscodes)
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
Aufgabe 2 (Faltungscodes)
Falscher Faltungscode: 11 10 00 01 01 11
Aufgabe 2 (Faltungscodes)
Falscher Faltungscode: 11 10 00 01 01 11
Aufgabe 2 (Faltungscodes)
Falscher Faltungscode: 11 10 00 01 01 11
Aufgabe 2 (Faltungscodes)
Falscher Faltungscode: 11 10 00 01 01 11
Aufgabe 2 (Faltungscodes)
b) Betrachten Sie einen Encoder für Faltungscodes der mit (vn1=un ⊕un-2) und (vn2= un-1 ⊕ un-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
Aufgabe 2 (Faltungscodes)
b) Betrachten Sie einen Encoder für Faltungscodes der mit (vn1=un ⊕un-2) und (vn2= un-1 ⊕ un-2) definiert ist.
1) Zeichnen Sie eine Register Implementation.
Aufgabe 2 (Faltungscodes)
b) Betrachten Sie einen Encoder für Faltungscodes der mit (vn1=un ⊕un-2) und (vn2= un-1 ⊕ un-2) definiert ist.
2) Zeichnen Sie ein Zustandsdiagramm für diesen Encoder.
Aufgabe 2 (Faltungscodes)
b) Betrachten Sie einen Encoder für Faltungscodes der mit (vn1=un ⊕un-2) und (vn2= un-1 ⊕ un-2) definiert ist.
3) Zeichnen Sie ein Trellis Diagramm für diesen Encoder