II. CODIERUNGSTHEORIE

Ähnliche Dokumente
Index. Chien-Suche, 220 CIRC, 234 Code, 2, 9 äquidistanter, 81

Einführung in die Kodierungstheorie

Frank Weinhold Professur VSR Fakultät für Informatik TU Chemnitz Mai 2011

Fehlerschutz durch Hamming-Codierung

KANALCODIERUNG AUFGABEN. Aufgabe 1. Aufgabe 2

Rechnernetze Übung 5. Frank Weinhold Professur VSR Fakultät für Informatik TU Chemnitz Mai Wo sind wir?

(Allgemeine) Vektorräume (Teschl/Teschl 9)

Übungen zu Einführung in die Lineare Algebra und Geometrie

Codierungsverfahren SS Reed-Solomon-Codes zur Mehrblock-Bündelfehler-Korrektur

6 Fehlerkorrigierende Codes

Übung 14: Block-Codierung

Endliche Körper Seminar: Diskrete Mathematik Leitung: Prof. Dr. Rainer Lang Von: Steffen Lohrke (ii5105) SS2005

Technische Universität München Zentrum Mathematik. Übungsblatt 7

1.3 Gruppen. Algebra I 9. April 2008 c Rudolf Scharlau,

1 Algebraische Strukturen

Die Mathematik in der CD

Prof. Dr. G. Wagner Ingenieurmathematik Begleittext Seite 1

Mathematik II für Studierende der Informatik. Wirtschaftsinformatik (Analysis und lineare Algebra) im Sommersemester 2016

Mathematik II für Studierende der Informatik. Wirtschaftsinformatik (Analysis und lineare Algebra) im Sommersemester 2015

37 Gauß-Algorithmus und lineare Gleichungssysteme

3.6 Eigenwerte und Eigenvektoren

Seminar Einführung in die Kunst mathematischer Ungleichungen

Übungen zur Vorlesung Grundlagen der Rechnernetze. Zusätzliche Übungen

Definitionen. Merkblatt lineare Algebra. affiner Teilraum Menge, die durch Addition eines Vektors v 0 zu allen Vektoren eines Vektorraumes V entsteht

9.2 Invertierbare Matrizen

Empfänger. Sender. Fehlererkennung und ggf. Fehlerkorrektur durch redundante Informationen. Längssicherung durch Paritätsbildung (Blockweise)

Informationstheorie und Codierung. Prof. Dr.-Ing. Lilia Lajmi

Single Parity check Codes (1)

Codierung zur Fehlerkorrektur und Fehlererkennung

Codierungstheorie Teil 1: Fehlererkennung und -behebung

Matrizen, Determinanten, lineare Gleichungssysteme

Zahlen und metrische Räume

Man unterscheidet zwei Gruppen von Codes: Blockcodes und Faltungscodes.

Kapitel 2: Mathematische Grundlagen

1 Lineare Algebra. 1.1 Matrizen und Vektoren. Slide 3. Matrizen. Eine Matrix ist ein rechteckiges Zahlenschema

Algebraische Kurven. Holger Grzeschik

Fehlererkennung und Fehlerkorrektur in Codes

Einführung in die Codierungstheorie

Vorbereitungskurs Mathematik zum Sommersemester 2011 Tag 7

3 Der Hamming-Code. Hamming-Codes

4 Lineare Algebra (Teil 2): Quadratische Matrizen

Information und Codierung

Lineare Abhängigkeit

2 Die Dimension eines Vektorraums

Kapitel 2. Ganze Zahlen. 2.1 Teilbarkeit

Inverse Matrix. 1-E Ma 1 Lubov Vassilevskaya

Gegeben sei eine Menge V sowie die Verknüpfung der Addition und die skalare Multiplikation der Elemente von V mit reellen Zahlen.

Übung zur Vorlesung. Informationstheorie und Codierung

Nachrichtentechnik 4 3 Kanalcodierung in der Nachrichtenübertragung

GF(2 2 ) Beispiel eines Erweiterungskörpers (1)

Skript zur Vorlesung. Lineare Algebra. Prof. Dr.-Ing. Katina Warendorf. 2. Oktober 2014

5. Gruppen, Ringe, Körper

1.2 Eigenschaften der ganzen Zahlen

Eigenwerte und Diagonalisierung

Lösungsvorschlag für die Probeklausuren und Klausuren zu Algebra für Informations- und Kommunikationstechniker bei Prof. Dr.

Seminar zur Zahlentheorie Spezialfälle des Satzes von Fermat

Lineare Algebra. I. Vektorräume. U. Stammbach. Professor an der ETH-Zürich

Primzahlen. Herbert Koch Mathematisches Institut Universität Bonn Die Primfaktorzerlegung. a = st

1 Zahlentheorie. 1.1 Kongruenzen

Fehlerkorrigierende Codes

4.0.2 Beispiel (Einfacher Wiederholungscode). Im einfachsten Fall wird die Nachricht einfach wiederholt. D.h. man verwendet die Generatorabbildung

Kapitel 3 Kanalcodierung

Lineare Gleichungssysteme - Grundlagen

Zusammenfassung Mathe III. Themenschwerpunkt 3: Analytische Geometrie / lineare Algebra (ean) 1. Rechenregeln mit Vektoren

Vektorräume und Rang einer Matrix

Addition, Subtraktion und Multiplikation von komplexen Zahlen z 1 = (a 1, b 1 ) und z 2 = (a 2, b 2 ):

2 Euklidische Vektorräume

Vektorgeometrie Layout: Tibor Stolz

4. Vektorräume und Gleichungssysteme

Vorlesungsskript Kanalcodierung I WS 2011/2012

Skalarprodukte (Teschl/Teschl Kap. 13)

Diskrete und Schnelle Fourier Transformation. Patrick Arenz

4 Vorlesung: Matrix und Determinante

x, y 2 f(x)g(x) dµ(x). Es ist leicht nachzuprüfen, dass die x 2 setzen. Dann liefert (5.1) n=1 x ny n bzw. f, g = Ω

2. Der Grad von Körpererweiterungen

Aussagenlogik. Lehrstuhl für BWL, insb. Mathematik und Statistik Prof. Dr. Michael Merz Mathematik für Betriebswirte I Wintersemester 2015/2016

Seminararbeit zur Zahlentheorie. Die Gaußschen Zahlen

9 Vektorräume mit Skalarprodukt

Aufgabensammlung aus Mathematik 2 UMIT, SS 2010, Version vom 7. Mai 2010

Lineare Abhängigkeit und Unabhängigkeit. 1-E Ma 1 Lubov Vassilevskaya

Ein (7,4)-Code-Beispiel

Lineare Algebra für D-ITET, D-MATL, RW. Beispiellösung für Serie 10. Aufgabe ETH Zürich D-MATH. Herbstsemester Dr. V. Gradinaru D.

Zahlen und Gleichungen

Vorkurs Mathematik 1

& sind die Vektorkomponenten von und sind die Vektorkoordinaten von. A x. a) Der Betrag eines Vektors

Lineare Gleichungssysteme

1 Potenzen und Polynome

A2.3 Lineare Gleichungssysteme

(Bitte geben Sie bei der Beantwortung von Fragen eine Begründung bzw. bei der Lösung von Kurzaufgaben eine kurze Berechnung an!)

Grundlagen exakter Methoden zur Verschlüsselung von Codewörtern mittels linearer Codes*

00. Einiges zum Vektorraum R n

Lineare Hülle. span(a) := λ i v i : so dass k N, λ i R und v i A.

3.3 Eigenwerte und Eigenräume, Diagonalisierung

Übung zu Drahtlose Kommunikation. 7. Übung

Axiomatische Beschreibung der ganzen Zahlen

Lineare Algebra I. Prof. Dr. M. Rost. Übungen Blatt 10 (WS 2010/2011) Abgabetermin: Donnerstag, 13. Januar.

1 Definition. 2 Besondere Typen. 2.1 Vektoren und transponieren A = 2.2 Quadratische Matrix. 2.3 Diagonalmatrix. 2.

1.5 Duales Gitter und Diskriminantengruppe

Transkript:

II. CODIERUNGSTHEORIE

Inhaltsverzeichnis 1 Einleitung 1 1.1 Literatur................................... 1 1.2 Übersicht.................................. 1 1.3 Mathematische Grundlagen der Codierungstheorie............ 3 1.4 Fehlererkennung und Fehlerkorrektur................... 8 1.5 Code, Codierer............................... 10 2 Lineare Blockcodes 12 2.1 Beschreibung von Blockcodes durch Matrizen.............. 12 2.1.1 Eigenschaften der Generatormatrix................ 12 2.1.2 Block-Codierer........................... 13 2.2 Fehlererkennung und -korrektur...................... 14 2.3 Ergänzungen................................ 15 2.3.1 Modifizierte Codes......................... 15 2.3.2 Beispiel: Hamming-Code (Hamming 1950)............ 16 2.3.3 Schaltungstechnische Realisierung................. 17 3 Zyklische Codes 18 3.1 Mathematische Beschreibung........................ 18 3.1.1 Polynomdarstellung......................... 18 3.1.2 Restklasse der Polynome...................... 19 3.1.3 Zyklische Codes als Restklasse................... 22 3.2 Codierung mit zyklischen Codes...................... 23 3.2.1 Korrespondierende Generatormatrix [G]............. 24 3.2.2 Duale Codes............................. 26 3.2.3 Schieberegister-Schaltungen für zyklische Codes......... 27 3.2.4 Decodierung zyklischer Codes................... 29 3.3 Reed Solomon(RS) Codes......................... 30 3.3.1 Algebraische Strukturen von Reed-Solomon (RS) Codes.... 30 3.3.2 RS Codierung und Diskrete Fourier Transformation...... 31

INHALTSVERZEICHNIS 1 3.3.3 Grundzüge der RS Fehlerkorrektur................ 34 3.4 Beispiele für zyklische Codes, Übersicht über Blockcodes........ 36 3.5 Bündelfehler................................. 38 3.5.1 Erkennung von Bündelfehlern................... 38 3.5.2 Interleaving (Codespreizung).................... 39 4 Faltungscodes 41 4.1 Codierer-Struktur.............................. 41 4.2 Formale Beschreibung........................... 42 4.3 Systematische Faltungscodierer...................... 45 4.4 Katastrophale Faltungscodierer...................... 46 4.5 Beschreibung von Faltungscodes...................... 47 4.6 Decodierung von Faltungscodes...................... 49 4.6.1 Viterbi-Algorithmus........................ 50 4.7 Restfehlerwahrscheinlichkeit bei Faltungscodes............... 52 4.8 Punktierte Faltungscodes.......................... 54

1 Einleitung 1.1 Literatur K. Wesolowski: Introduction to Digital Communication Systems, Wiley, 2009 H. Rohling: Einführung in die Informations- und Codierungstheorie, Teubner, 1995 B. Friedrichs: Kanalcodierung, Springer, 1994 M. Bossert: Kanalcodierung, 2. Aufl., Teubner, 1998 R.G. Proakis: Digital Communication, McGraw, 1989 S. Lin, D. Costello: Error Control Coding, Prentice-Hall, 1983 W.W. Peterson, F. Weldon: Error Correction Coding, Wiley, 2005 W. Heise, P. Quattrocchi: Informations- und Codierungstheorie, Springer, 1995 1.2 Übersicht Kanalcodierung: Verfahren zur Fehlerreduktion bei gestörten Kanälen Theoretische Grenze: Kanalkapazität Methode: Redundanz: zusätzliche Zeichen einfügen Fehleridentifikation, Fehlerlokalisation und Fehlerkorrektur k Info-Zeichen, n Code-Zeichen, r = n k Redundanz-Zeichen (Paritäts /Prüfzeichen), R := k n ; Code-Rate, r := r = 1 R : relative Redundanz n Systematische Codes: Info Zeichen x treten in CW y unverändert auf. Codierungsgedächtnis: Verschmieren von Information und Redundanz; Blocklänge bei Blockcodes, Einflusslänge bei Faltungscodes, Interleaving; Mittelung über die Kanalfehler. Verfahren: Fehleridentifikation und Wiederholung (Automatic Repeat on Request ARQ)

2 1. EINLEITUNG n k r x 0 x 1 x k 1 p 0 p r 1 Info- Zeichen Paritäts- (Prüf-) Zeichen Bild 1.1: Systematisches Codewort Rückkanal zum Sender für Quittung / Neuanforderung, Redundanz nur zur Fehleridentifikation, adaptive Coderate (variable Übertagungsgeschwindigkeit). Fehlerkorrektur (Forward Error Correction FEC) Falsche Zeichen erkennen und korrigieren; nur mit endlicher Wahrscheinlichkeit richtige Korrektur, versagt bei großer Kanalfehlerrate, viel Redundanz erforderlich. Codierungsarten: (n,k)-blockcodes Blöcken aus k Info-Zeichen werden n Code-Zeichen (Codewort CW) zugeordnet (q-wertig; i.a. q = 2). q n mögliche CW, q k zulässige CW Redundanz; R = k n. Reine Abbildungsvorschrift (Schaltnetz), kein Gedächtnis (vergangene Blocks ohne Einfluss). k n x(τ) Ser/Par-Wandler Schieberegister Par/Ser-Wandler y(τ = n k τ) k k τ x(i= τ k ) Block codierer [H] n k τ y(i) Bild 1.2: Blockcodierer Faltungscodes der Rate R und Einflusslänge L Diskrete Faltung der Nachrichtenfolge mit Code-Impulsantwort.

1.3. MATHEMATISCHE GRUNDLAGEN DER CODIERUNGSTHEORIE 3 Code-Rate: R = k n, x(τ) gedächtnisbehaftet: Einflusslänge L (Constraint Length), FIR-Filterstruktur (Schieberegister-Prozess). k k k τ x(i) Schieberegister mit k L Zellen L k k k k Impulsantwort g( x), [G(D)] n k τ n R = k n y(i) y(τ ) Bild 1.3: Faltungscodierer Anmerkung: Die Parallel/Seriell-Wandlung kann auch durch Multiplexer realisiert werden: y 0 (i) n y(i) y(τ ) y n 1 (i) Bild 1.4: Parallel/Seriell Wandlung durch Multiplexer 1.3 Mathematische Grundlagen der Codierungstheorie Codewort (Block von Zeichen) = n-tupel, Vektor : c = ( c(0),c(1),...,c(n 1) ) C q-elementige Menge : c(i) {c 0,c 1,...,c q 1 } = C Operationen:, ; Komponentenweise Anwendung, d.h. a b = ( a(0) b(0),...,a(n 1) b(n 1) ), und (skalare Multiplikation) wobei a, b C; λ C λ a = ( λ a(0),...,λ a(n 1) ),

4 1. EINLEITUNG Axiomatisch gelte: 1.) (C; ; ) bildet Körper (Feld) mit Nullelement 0 C und Einselement 1 C, d.h. es gelten bzgl. (Addition) die Eigenschaften der abelschen Gruppe: 1.) Abgeschlossenheit: c i c j C c i,c j C, 2.) Assoziativgesetz: (c i c j ) c k = c i (c j c k ) c i,c j,c k C, 3.) Kommutativgesetz: c i c j = c j c i c i,c j C, 4.) Neutrales Element: c i 0 = c i c i C, 5.) Inverses Element: ( c i ) c i = 0 c i C, und bzgl. (Multiplikation) für C\{0} die Eigenschaften der abelschen Gruppe: 6.) Abgeschlossenheit: c i c j C c i,c j C, 7.) Assoziativgesetz: (c i c j c k = c i (c j c k ) c i,c j,c k C, 8.) Kommutativgesetz: c i c j = c j c i c i,c j C, 9.) Neutrales Element: c i 1 = c i c i C, 10.) Inverses Element: (c 1 i ) c i = 1 c i C\{0}, sowie für beide 11.) Distributivgesetz: c 1 (c 2 c 3 ) = (c 1 c 2 ) (c 1 c 3 ) c 1,c 2,c 3 C. Anmerkung: Die Axiome gelten auch für Vektoren (Codeworte), wobei 0 = (0,0,...,0) und 1 = (1,1,...,1); beachte skalare Multiplikation! Kurzschreibweise: ( a ( b) := a ( ) b) 2.) Endlicher Körper: Körper mit endlicher Anzahl von q Elementen. Satz: Haben zwei Körper die gleiche Anzahl von q Elementen, so existiert eine umkehrbar eindeutige Zuordnung zwischen deren Elementen derart, dass auch die Ergebnisse der Operationen in den Körpern einander zugeordnet sind. Ein endlicher Körper mit q Elementen wird als Galois-Feld GF(q) bezeichnet. Die Körper-Axiome sind erfüllt, wenn gilt: 1.) Restklassenalgebra: c i c j = (c i +c j ) modq c i c j = (c i c j ) modq 2.) C = {0,1,...,q 1} =GF(q), q 2 : Primzahl Primkörper, oder C = GF(q m ), m N Erweiterungskörper

1.3. MATHEMATISCHE GRUNDLAGEN DER CODIERUNGSTHEORIE 5 Bsp.: GF(2) = {0,1} q = 2: binär, mod 2 -Algebra 0 1 0 0 1 1 1 0 = 0 1 0 0 0 1 0 1 = GF(3) = {0,1,2} q = 3: ternär, mod 3 -Algebra ( c) = c (c 1 ) = c 0 1 2 0 0 1 2 1 1 2 0 2 2 0 1 0 1 2 0 0 0 0 1 0 1 2 2 0 2 1 c c 0 0 1 2 2 1 c c 1 0 / 1 1 2 2 Esgilt: (a+b) modq = [(a) modq +(b) modq ] modq (a b) modq = [(a) modq (b) modq ] modq GF(2 8 ) : Element repräsentiert ein Byte. Primitives Element Def.: Ein Element α GF(q) heißt primitives Element, wenn dessen q 1 Potenzen α i, i = 1,...,q 1 genau alle Elemente c 0 GF(q) erzeugen, d.h. GF(q)\{0} = {α i i = 0,...,q 2}. = Die Elemente von Primkörpern sind als Potenzen darstellbar (0 := α ); Multiplikation = Addition der Exponenten (mod q 1 ) Satz: Jedes Galois-Feld besitzt mindestens ein primitives Element α, wobei α q 1 = α 0 = 1. α heißt deshalb (q 1)-te Einheitswurzel in GF(q). Bsp.: α = 1 ist primitives Element von GF(2) α = 2 ist primitives Element von GF(5), denn 2 1 = 2, 2 2 = 4, 2 3 = 8 =3, 2 4 = 16 =1 = 2 0 ; (auch α = 3 ist primitives Element) Satz: Ein GF(q) hat genau soviele primitive Elemente, wie es zu der Zahl (q 1) teilerfremde Zahlen i im Intervall 1 i < q 1 gibt. Bsp.: Zu 4 gibt es die teilerfremden Zahlen 1 und 3. Es gibt 2 primitive Elemente im GF(5).

6 1. EINLEITUNG Def.: Gilt für ein Element β GF(q)\{0}, β i 1 0 < i < r und β r = 1, so heißt r die Ordung des Elements. Ein Element der Ordnung q 1 ist ein primitives Element: β q 1 = 1. Hinweis: Auch die komplexen Zahlen {z = e j 2π q 1 i,1 i q 1;0} bilden endliche Körper (Kreisteilungskörper). 3.) Vektorraum über endlichem Skalarkörper (C,, ) und endlicher abelschen Gruppe (C, ), bei dem die Skalare λ C mit den Vektoren c C über die skalare Multiplikation verknüpft sind. Axiomatische Forderungen: 1.) Abgeschlossenheit: λ c C λ C, c C 2.) gem. Distributivgesetz: (λ 1 λ 2 ) c = (λ 1 c) (λ 2 c), λ 1, λ 2 C; c C 3.) gem. Assoziativgesetz: (λ 1 λ 2 ) c = λ 1 (λ 2 c) λ 1, λ 2 C; c C 4.) neutraler Skalar: 1 c = c c C Linearer Vektorraum: Linearität, d.h. λ 1 a λ 2 b C a, b C, λ 1,λ 2 C ( = lineare Codes) = 0 C: jeder lineare Blockcode enthält das Null-CW 0 = (0,...,0) Nichtlineare Codes: Bsp.: ( n ) w -gleichgewichtige Codes, d.h. alle CW haben gleiche Anzahl von 0 und 1. ( 4 ) 2 -Code: C = {(1100),(0110),(0011),(1010),(1001),(0101)} Da 0 C, ist ( n w) nicht linear! (vgl. nicht abgeschlossen bzgl. ) 4.) Metrik: Abstandsmaß im Vektorraum d( a, b) R + 0 Axiome: 1.) d( a, b) = d( b, a): Symmetrie 2.) d( a, b) d( a, c)+d( c, b) : Dreiecksungleichung 3.) d( a, b) 0, d( a, b) = 0 a = b hier: Hamming-Abstand: d H ( a, b) := d H (a,b) = { 0 : a = b 1 : sonst n 1 ( ) d H a(i),b(i) ; es gilt0 dh (, ) n

1.3. MATHEMATISCHE GRUNDLAGEN DER CODIERUNGSTHEORIE 7 5.) Norm: Maß für einen Vektor (Codewort): c R + 0 Axiome: 1.) λ c = λ c (Proportionalität) 2.) c 1 c 2 c 1 + c 2 (Dreiecksungleichung) 3.) c 0; c = 0 c = 0 hier: Hamming Gewicht des CW = Anzahl von 0 verschiedener Komponenten c H = w( c) = n 1 ( ) d H c(i),0 Durch Norm erzeugte Metrik: d H ( a, b) := a b H Hamming-Abstand = Gewicht des Differenz-CW d H ( a, b) = w( a b) Bsp.: minimaler Hamming-Abstand eines Codes: d min := min c H 6.) Skalarprodukt: in Anlehnung an Skalarprodukt der linearen Algebra c C\{ 0} geometrische Struktur < a, b > C Axiome: 1.) < a, b > = < b, a > (symmetrisch) 2.) < (λ 1 a λ 2 b), c > = λ 1 < a, c > λ 2 < b, c > 3.) c = 0 < c, c >= 0, aber < c, c >= 0 > c = 0 Hier: < a, b > := n 1 ( a(i) b(i) ) Z.B. wenn c H = gerade bei q = 2, ist < c, c > 0, d.h. es gibt mehrere selbstorthogonale Codeworte! Beachte: < a, a > hat hier nicht die Eigenschaften einer Norm! a und b heißen orthogonale CW, wenn < a, b >= 0; 0 ist zu jedem CW orthogonal. 7.) Unterraum: Sei C Vektorraum. Der Unterraum S C hat ebenfalls die Eigenschaften eines Vektorraums, wenn S abgeschlossen bzgl. und ist, d.h.: λ 1 a λ 2 b S a, b S; λ1,λ 2 C Bem.: 0 muss immer in S enthalten sein. Basis: B C ist die Basis eines Unterraumes S C, wenn alle b i B, i = 0,1,...,k 1 linear unabhängig sind, d.h. wenn b i B gilt: k 1 ) (λ i b i = 0, nur wenn λ i = 0 i = 0,...,k 1 und sich alle Codeworte c S durch Linerakombinationen von Basisvektoren bi B darstellen lassen: c = k 1 (λ i b i ) ; k ist die Dimension von S; S besitzt q k verschiedene Codeworte.

8 1. EINLEITUNG Orthogonalraum: Sei n die Dimension von C und k die Dimension eines Unterraumes S. Dann gibt es einen r = (n k)-dimensionalen Orthogonalraum S zu S. Alle Codeworte aus S sind orthogonal zu den Codeworten aus S, d.h. a S und b S gilt: < a, b >= 0. (vgl. Projektionssatz der linearen Algebra). Dualer (n, r)-code. 1.4 Fehlererkennung und Fehlerkorrektur Es wird folgendes Codierungs- und Übertragungsmodell zugrunde gelegt: k x (n,k) Codierer n = k +r y e n + Kanal n r (n,k) Decodierer k x Bild 1.5: Modell der blockcodierten Übertragung Über GF(q) bilden die n -Tupel am Codiererausgang einen Vektorraum mit q n möglichen Vektoren. Dies sind die gesendeten Codeworte. Im Kanal addiert sich (mod q) ein zufälliger n stelliger Fehlervektor e C. Daraus resultieren die empfangenen möglicherweise fehlerhaften Codeworte. Wenn die q k zulässigen gesendeten CW abgeschlossen bzgl. und sind, bilden sie einen Unterraum S C. d min = min c H ist der kleinste Hamming-Abstand zulässiger CW. c S\{ 0} Bsp.: Korrekturkubus d min empfangenes fehlerhaftes CW C zulässiges CW S Bild 1.6: Fehlererkennung und korrektur im Coderaum Fehlererkennung: WenndurchFehlereinCW y SaufeinenunzulässigenVektor r C\ S abgebildet wird, kann der Fehler erkannt werden. Es gilt: r = y e. Erkennung ist möglich, wenn für die Anzahl der verfälschten Komponenten gilt: e H (d min 1).

1.4. FEHLERERKENNUNG UND FEHLERKORREKTUR 9 Fehlerkorrektur: Beim BSC wird nach der ML-Regel (vgl. I, Abschnitt 5.2) das dem empfangenen Vektor am nächsten gelegene CW zugeordnet. Fehlerkorrektur ist möglich, wenn für die Anzahl der verfälschten Komponenten gilt: dmin 1 e H (= ganzzahliger Anteil) 2 dmin 1 t-fehler korrigierender Code: t =. 2 Decodierung eindeutig, wenn e H t und Code so, dass d min 2 t+1 d min d min a b a b t r t t r eindeutig korrigierbar nicht eindeutig korrigierbar! Bild 1.7: Korrigierbarkeit und d min Bedingung für t-fehler-korrigierbar (Hamming Schranke) Anzahl von Vektoren, die in einer Kugel(Sphäre) mit Radius t um ein n-komponentiges CW liegen = Anzahl der Fehlervektoren e mit e H t (q = 2) : 1+ t i=1 ( ) n = i t ( ) n i Anzahl aller korrigierbarer Vektoren in den Sphären: 2 k t ( ) n i Anzahl aller Vektoren: 2 n Korrekturbedingung: 2 k t ( ) n 2 n i t ( ) n 2 n k = 2 r i (r = n k)

10 1. EINLEITUNG Perfekte Codes: alle Vektoren liegen in Korrektur-Sphären d min = 2t+1. t Bekannte Perfekte Binärcodes: ( ) n = 2 ( r allgemein: i Hamming-Code (2 r 1,2 r 1 r) mit t = 1,d min = 3 Golay-Code (23,12) mit t = 3,d min = 7 t ( ) n (q 1) i = q r) i Nicht Perfekter Code kann bei manchen CW mehr als t Fehler korrigieren. Restfehlerwahrscheinlichkeit der CW P E bei BSC mit Fehlerwahrscheinlichkeit p i Fehler in n-block: P( e H = i) = ( n i) p i (1 p) n i. CW kann nicht korrigiert werden, wenn i > t = P E = P( e H > t) n i=t+1 ( ) n p i (1 p) n i = 1 i t ( ) n p i (1 p) n i i (Gleichheit bei Perfekten Codes) ( ) Näherung hilfreich, da Ausdruck numerisch problematisch: P E p 0 < n t+1 p t+1 Bsp.: p = 10 3 ( = SNR 10dB bei AWGN), Golay (23,12) t = 3, P E 10 8 allgemeiner: Chernoff Schranke P E (2 k 1) (2 p(1 p)) d min Abschätzung für Bitfehlerwahrscheinlichkeit P B : falsches CW maximal k Bitfehler 1.5 Code, Codierer P E k P B P E Code: Menge von Vektoren (Codeworte) y, d.h. ein Vektorraum mit gewünschter Mindestdistanz d min : y S C,d H ( a b) d min a b, a, b S d min legt die Fehlererkennungs- und Korrektureigenschaften des Codes fest. (n,k,d min ) Codes

1.5. CODE, CODIERER 11 Codierer: Die Zuordnung Info-Wort Code-Wort muss umkehrbar eindeutig sein. Es gibt (q k )! verschiedene Codierungen zu einem (n,k,d min ) Code, im Codierer ist eine davon realisiert. k x Code y S C Codierer Codierung x y n y Bild 1.8: Code und Codierer Das Repertoire an CW S kann größer sein als die Anzahl q k der zu codierenden Info-Worte ( Code-Verkürzung auf S S). C S S Bild 1.9: Verkürzter Code S

2 Lineare Blockcodes (n, k)-blockcode mit n: Anzahl CW Symbole pro Block k: Anzahl Info Symbole pro Block Andere Bezeichnung: (n,k,d min )-Blockcode mit d min : minimaler Hammingabstand zulässiger CW Linearität: wenn a und b zulässiges CW, dann ist auch λ 1 a λ 2 b ein zulässiges CW. 2.1 Beschreibung von Blockcodes durch Matrizen k x C : (n,k) n y e + Kanal n r x = (x 0,x 1,...,x k 1 ) : Zeilenvektor y = (y 0,y 1,...,y n 1 ) : Zeilenvektor Bild 2.1: Blockcodierer und Fehlermodell Mit Operatoren und im GF(q) gilt: y 0 = g 0,0 x 0 g 1,0 x 1... g k 1,0 x k 1. y n 1 = g 0,n 1 x 0... g k 1,n 1 x k 1, g i,j GF(q) y = x [G] ; Generatormatrix [G] = }{{} k n n {}}{ g 0,0 g 0,n 1.. k := g k 1,0 g k 1,n 1 g 0. g k 1 y = x 0 g 0 x 1 g 1... x k 1 g k 1 = k 1 x i g i 2.1.1 Eigenschaften der Generatormatrix Bemerkungen: Wegen geforderter Eindeutigkeit müssen die g i linear unabhängig sein. Alle CW sind Linearkombinationen der g i, i = 0,...,k 1. = Die g i bilden Basis des CW-Raumes.

2.1. BESCHREIBUNG VON BLOCKCODES DURCH MATRIZEN 13 Systematischer Code: y = [ x p] = [x 0,...,x k 1 p 0,...,p r 1 ] [G] = 1 0 p 0,0 p 0,r 1 0......... 0... = [I k P] 0 0 1 p k 1,0 p k 1,r 1 [I k ] := (k k)-einheitsmatrix [P] := (k r)-paritätsmatrix bzw. Prüfmatrix 2.1.2 Block-Codierer Code (n,k,d min ): Menge von Vektoren (Unterraum) mit Mindestdistanz d min [P] Codierer: Zuordnung: Info-Wort Code-Wort y = x[m] [I k P] e k k n n [M] [G] Decod. k k + [M] 1 bzgl.[g] x x y r ˆ x ˆ x Codierer Decodierer Bild 2.2: Modell Codierer/Decodierer [M] : Eindeutig umkehrbare Abbildung x x = neue Basisvektoren [M] 1 : Umkehrung existiert Neue Basis g j durchlinearkombination alter Basisvektoren g i ohned min zuändern. In [G] eine Zeilen durch Linearkombinationen dieser mit anderen Zeilen ersetzen. g j k 1 := λ ji g i Zeilen / Spalten vertauschen (Vorzeichenwechsel beachten!) (= Operationen, die den Wert einer Determinanten nicht ändern!) Jede Generatormatrix ist in eine systematische Form umwandelbar. Für alle linearen (n, k)-blockcodes existiert ein systematischer Codierer.

14 2. LINEARE BLOCKCODES 2.2 Fehlererkennung und -korrektur Orthogonalraum: Sei [H] die Generatormatrix des zu [G] dualen (n, r)-codes. Dann sind alle CW u = a [G] und v = b [H] orthogonal, d.h. 0 =< u, v>= n i=1 u i v i = u v T = a [G] [H] T b T a, b [G] [H] T = [0]. [H] heißt Kontrollmatrix (Parity-Check-Matrix) zur Generatormatrix [G] Konstruktion bei systematischen Codes: [ ] P := = [H] T }{{} n r [G] [H] T I r [ P = [I k P] Anmerkung: für q = 2 gilt P = P. Es gilt: y [H] T = x [G] [H] T = x [0] = 0 I r h0. hn 1 ] [H] = [ P T I r ] = [ P] [P] = [0] }{{} (k r) Alle gültigen CW werden durch die transponierte Kontrollmatrix [H] T auf den Nullvektor (r Komponenten) abgebildet. Sei y m H = d min ; y m [H] T = 0, d.h. d min ist die minimale Anzahl von Zeilen in [H] T, die sich zu 0 addieren, da y m d min von Null verschiedene Komponenten besitzt. Falsches CW: r = y e r [H] T = y [H] T e [H] T = e [H] T =: s (= Syndrom) Syndrom: s = r [H] T = e [H] T = (e 0,e 1,...,e n 1 ) h0. hn 1 = n 1 e i h i Eigenschaften des Syndroms: 1.) s hängt von e ab: e = 0 s = 0, die Umkehrung gilt nicht!

2.3. ERGÄNZUNGEN 15 2.) s besitzt r Komponenten es gibt q r = q n k verschiedene Syndrome. es können q r Fehlervektoren unterschieden werden. 3.) Die s i ergeben sich für q = 2 aus den Spaltensummen (mod 2 ) von [H] T an den Fehlerpositionen. 4.) Fehler sind korrigierbar, wenn von s eindeutig auf e geschlossen werden kann Schätzwert e. t ( q = 2: es gibt 2 r Syndrome; mögliche Fehlerposition bei t-f-code: n ) i ; für Fehlerkorrektur: 2 r t ( n i) (Gleichheit bei perfekten Codes). 5.) Bei nicht perfektem Code: ML-Regel wähle das e mit minimalem Hamming- Gewicht, d.h. e ( s ) = arg min e H (Nebenklassenanführer, Coset Leader) e E( s ) Fehlerkorrektur: 1.) Syndrom s = r[h] T ermitteln. 2.) Das zu s gehörende e finden. (Tabelle; e mit minimalem Gewicht) 3.) y = r e (bei q = 2: Invertiere Bit an den Positionen mit e i = 1.) 2.3 Ergänzungen 2.3.1 Modifizierte Codes Code-Erweiterung (n,k) (n+1,k) : [H e ] = 0 [H]. 0 11 1 D.h. die zusätzliche Stelle ergänzt CW auf gerade Parität. ; derw min = d min +1 Code-Verkürzung (n,k) (n l,k l) Setze l Info-Stellen = 0, sie werden nicht übertragen, aber zur Prüfstellenberechnung ergänzt. Entspricht der Streichung von l Zeilen der Generatormatrix [G] und d kurz min d min [H kurz ] = [ 0 H] bzw. [G }{{} kurz ] = l [ 0 G ] }l

16 2. LINEARE BLOCKCODES 2.3.2 Beispiel: Hamming-Code (Hamming 1950) Binäre (2 r 1,2 r 1 r)-codes d min = 3, t = 1 Wähle r = 3 (7,4)-Hamming-Code Hier: Codeentwurf über Kontrollmatrix [H] T = es gibt 2 3 = 8 mögliche h i, 7 werden benötigt. h0. h6, hi = (h i0,h i1,h i2 ) Wähle alle h i außer h i = 0; sortiere so, dass Matrix in systematischer Form entsteht. Da q = 2 P = P 1 1 0 0 1 1 [ ] 1 1 1 1 1 0 P [H] T = = 1 0 1 [P] = 0 1 1 I 3 1 1 1 1 0 0 1 0 1 0 1 0 0 0 1 [G] = 1 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 1 0 1 1 1 0 0 0 1 1 0 1 Syndromtabelle: s = e [H] T s T = [H] e T t = 1 : e s 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 1 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 Bsp.: x = (1111) y = x [G] = (1111111) sei e = (0100000) r = (1011111) s = r [H] T = (011) e = 0100000 y = r e = 1111111 Der Fehler wird richtig korrigiert.

2.3. ERGÄNZUNGEN 17 2.3.3 Schaltungstechnische Realisierung ROM-Realisierung (nur für k < 16 sinnvoll) k k Info Bit (e i ) x k 1 x k 2 x 0 + x i (y i ) (r i ) Kanal x r Prüf Bit + + + ROM + ROM p n + + + n [H] T r + r s n [H T ] 1 e ( x i ) r r k Bild 2.3: ROM Realisierung für Blockcodierer und decodierer

3 Zyklische Codes Zyklische Codes sind Teilmengen der linearen (n, k) Blockcodes über GF(q). zyklisch, d.h. wenn y = (y 0,y 1,...,y n 1 ) ein CW, dann ist auch 1 y = (y n 1,y 0,...,y n 2 ) ein CW. Allgemein: geschobenes (zirkuliertes) CW: i y := (y n i,...,y 0,y 1,...,y n i 1 ) Beachte: n y = 0 y = y (mit n periodisch) Hinweis: periodisch mod-rechnung Restklassenalgebra Realisierung: Schieberegister y 0 y 1 y n 1 Bild 3.1: Schieberegister Struktur für zyklisches Codewort Es sei vereinbart, dass das am weitesten rechts stehende Element (höchster Index) zuerst gesendet bzw. verarbeitet wird. 3.1 Mathematische Beschreibung DarstellungderCWalsPolynominderPseudovariablenD: y =y(d) = n 1 Erweiterungskörpern des GF(q): y i GF(q) und y GF(q n ) vgl.: Komplexe Zahlen sind Erweiterungskörper der Reellen Zahlen: R 2 C, wobei es dann Lösungen gibt zu x 2 +1 = 0, x = j mit (j) 2 = 1. Restklasse der Polynome y i D i 3.1.1 Polynomdarstellung Polynome in D vom Grad n-1; Koeffizienten GF(q); Operator, ; normiert. y(d) = n 1 y i D i = y }{{} n 1 Dn 1 +y n 2 D n 2 +...+y 1 D+y 0 ; y i GF(q) Leitkoeffizient = 1, wenn normiert y(d) = y = (y 0,y 1,...,y n 1 ) : Koeffizienten = Komponenten

3.1. MATHEMATISCHE BESCHREIBUNG 19 Koeffizienten des Polynoms repräsentieren die Komponenten des Vektors; D i bilden orthonormale Basis. Bezeichnung: y(d) R n (q), grad y(d) = n 1 Rechnen mit Polynomen Addition: e y =e(d) y(d) = n 1 (e i y i ) D i Multiplikation: y(d) = x(d) g(d) gradx(d) = k 1, gradg(d) = l 1 grady(d) = k +l 2, wobei y i = i g µ x i µ µ=0 mit g µ = 0 µ l und x ν = 0 ν k, 0 i k +l 2 = Faltungssumme y i = Faltung von g und x zum Zeitpunkt i T, wenn D i = (i T)-Zeitpunkt. D = Verzögerungsoperator (Delay) y(d) r(d) Division: = h(d)+, wobei r(d) = Divisionsrest g(d) g(d) { = 0 : wenng(d)teiler von y(d) r(d) := gradr(d) < gradg(d) : sonst = Faktorisierung: y(d) = h(d) g(d)+r(d) Gaußscher Divisionsalgorithmus: Bsp.: y(d) = (D 5 +D 4 +1), g(d) = (D 3 1) (D 5 + D 4 + 1) : (D 3 1) = D 2 +D + D2 +D +1 D 3 1 (D 5 D 2 ) (D 4 +D 2 ) (D 4 D ) D 2 +D +1 = r(d) Divisionsrest 3.1.2 Restklasse der Polynome Divisionsrest = Restklasse der Polynome bzgl. mod f(d) gradf(d) = n,f i GF(q) y(d) R n (q), d.h. gerechnet wird mit dem Divisionsrest des Gaußschen Divisionsalgorithmus: ( ) y(d) = r(d) modf(d)

20 3. ZYKLISCHE CODES Bsp.: f(d) = D 2 +D +1; f i GF(2); R 2 (q = 2) = {0,1,D,D+1} =GF(2 2 ) (0) modf(d) = 0 ; (1) modf(d) = 1 ; (D) modf(d) = D ; (D 2 ) modf(d) = D +1 ; (D +1) modf(d) = D +1 (D +1) 2 modf(d) = D 2 +2D +1 = (D +1)+1 = D (D 2 +1) modf(d) = D +1+1 = D Def.: Ein irreduzibles Polynom g(d) mit Koeffizienten aus GF(q) kann nicht als Produkt von Polynomen kleineren Grades mit Koeffizienten aus GF(q) dargestellt werden. (vgl. Primzahl bei Primkörpern) Satz: Ist g(d) über GF(q), grad g(d) = n, irreduzibel, so besitzt jedes der q n 1 Polynome y(d) R n (q)\{0} ein eindeutiges inverses Polynom y 1 (D), d.h. ( y(d) y 1 (D) ) modg(d) = 1 (vgl. inverses Element bei Primkörpern) Bsp.: g(d) = D 2 +D +1 (D 2 +D +1) modg(d) = 0 = 1 = D 2 +D = D(D+1) = y(d) = D y 1 (D) = D+1 Bemerkung: Wenn g(d) irreduzibel ist, dann besitzt g(d) keine Nullstellen im GF(q), d.h. g(d) = 0 hat keine Lösungen D GF(q). (vgl. f(x) = x 2 +1 = 0 hat keine Lösungen x R) Hinweis: D ist kein Element, sondern Platzhalter für ein Element! Def.: Das Element α aus einem Erweiterungskörper heißt Wurzel oder Nullstelle von g(d) mit g(α) = 0. (vgl. f(x) = x 2 +1 = 0 hat die Nullstelle x = j C mit j 2 = 1) Bsp.: g(d) = D 2 +D +1 ist irreduzibel. Die Nullstellen α von g(d) sind definiert durch α 2 +α+1 = 0. Elemente des Erweiterungskörpers GF(q m ) Def.: Sei g(d) irreduzibel, grad g(d) = m, g i GF(q), und sei α eine Wurzel von g(d), d.h. g(α) = 0. α heißt primitives Element und g(d) primitives Polynom, wenn { ( ) } α i i = 0,1,...,q m 2 = R m (q)\{0} mod g(α) alle (q m 1) verschiedenen Polynome 0 des Erweiterungskörpers GF(q m ) erzeugt.

3.1. MATHEMATISCHE BESCHREIBUNG 21 Bsp.: g(d) = D 2 +D+1 istprimitives PolynomüberGF(2). Seiαprimitves Element. Dann erzeugt α 1 = α; α 2 = α + 1; α 3 = α 0 = 1 GF(2 2 ) = {0,1,α,α+1} alle Elemente des Erweiterungskörpers GF(2 2 ). Bemerkung: JedesElement deserweiterungskörpersgf(q m )\{0}istNullstelle desprimitiven Polynoms g(d). Darstellungsarten: Polynomdarstellung, f(d) GF(2 2 ) Addition: 0 1 D 1 + D 0 0 1 D 1+D 1 1 0 1+D D D D 1+D 0 1 1+D 1+D D 1 0 Multiplikation: 0 1 D 1 + D 0 0 0 0 0 1 0 1 D 1+D D 0 D 1+D 1 1+D 0 1+D 1 D Potenzdarstellung, {α i,0 i 3;0}, Logarithmentafel Addition: 0 α 0 α 1 α 2 0 0 α 0 α 1 α 2 α 0 α 0 0 α 2 α 1 α 1 α 1 α 2 0 α 0 α 2 α 2 α 1 α 0 0 Hinweis: Diese Tabelle wird oft als Logarithmentafel bezeichnet. Für 0 ist auch die Darstellung 0 = α üblich. Multiplikation: 0 α 0 α 1 α 2 Komponentendarstellung 0 0 0 0 0 α 0 0 α 0 α 1 α 2 α 1 0 α 1 α 2 α 0 α 2 0 α 2 α 0 α 1 Addition: 00 01 10 11 00 00 01 10 11 01 01 00 11 10 10 10 11 00 01 11 11 10 01 00

22 3. ZYKLISCHE CODES Multiplikation: 00 01 10 11 00 00 00 00 00 01 00 01 10 11 10 00 10 11 01 11 00 11 01 10 irreduzibel reduzibel Polynome primitiv Bild 3.2: Zur Einteilung der Polynome Satz: Für jedes GF(q) und jedes m N gibt es mindestens ein primitives Polynom vom Grad m über GF(q), das einen Erweiterungskörper GF(q m ) erzeugt. Liste einiger primitiver Polynome mit geringster Anzahl von Null verschiedenen Koeffizienten: 1+D 1+D 4 +D 9 1+D +D 2 1+D 3 +D 10 1+D +D 3 1+D 2 +D 11 1+D +D 4 1+D 3 +D 4 +D 7 +D 12 1+D 2 +D 5 1+D +D 3 +D 4 +D 13 1+D +D 6 1+D +D 6 +D 8 +D 14 1+D +D 7 1+D +D 15 1+D 4 +D 5 +D 6 +D 8 1+D +D 3 +D 12 +D 16 Anmerkung: auch die gespiegelten Polynome sind primitiv, z.b. 1+D 2 +D 3 Def.: Gilt für ein Element β GF(q m )\{0}, dass β i 1 0 < i < r und β r = 1, so heißt r die Ordnung des Elementes. Ein Element der Ordnung r = q m 1 ist ein primitives Element. 3.1.3 Zyklische Codes als Restklasse Wähle für die Restklassenbildung y(d) modf(d) f(d) = D n 1, denn: D = Schiebeoperation d.h. D y(d) = 1 y(d).

3.2. CODIERUNG MIT ZYKLISCHEN CODES 23 Beweis: D y(d) modf(d) (y n 1 D n +y n 2 D n 1 + +y 0 D) : (D n 1) (y n 1 D n y n 1 ) (y n 2 D n 1 + +y 0 D+y n 1 ) = y n 1 + 1 y(d) D n 1 ( D i y(d) ) mod(d n 1) = i y(d) Beachte: D n y(d) = y(d) D i y(d) = D n i y(d) i y = n i y 3.2 Codierung mit zyklischen Codes Es sei Info-Polynom x x(d) vom Grad k 1 Code-Polynom y y(d) vom Grad n 1 n=r+k Generator-Polynom g g(d) vom Grad = r normiert Paritäts-Polynom p p(d) vom Grad r 1 Def.: Ein zyklischer (n, k)-code besteht aus den Koeffizientenbelegungen der Menge der Codepolynome (CP), d.h. von y(d) R n (q) mit grad y(d) n 1 bezüglich der Restklasse mod(d n 1). Satz: Esgibt einnormiertes Generator-Polynomg(D) = 1 D r +...+g 0 mit kleinstem Grad gradg(d) = n k = r, das gemeinsamer Faktor aller CP ist. Lemma: 1.) g(d) ist das einzige CP mit kleinstem Grad r = n k. Beweis: Durch Widerspruch: g(d) ist CP. Angenommen, g (D) habe gleichen Grad wie g(d). Dann ist auch g(d) g (D) wegen Linearität ein CP. grad(g(d) g (D)) < r. Widerspruch! 2.) Da g(d) ein CP, ist auch D i g(d) = (D i g(d)) mod(d n 1) ein CP. 3.) Jedes Produkt x(d) g(d) = (x(d) g(d)) mod(d n 1) ist CP R n (q). Beweis: x(d) g(d) = x k 1 D k 1 g(d) +x }{{} k 2 D k 2 g(d)+...+x 0 g(d) R n(q) }{{} 4.) g(d) teilt D n 1 ohne Rest. R n(q), da linear } {{ } R n(q), da linear

24 3. ZYKLISCHE CODES Beweis: (D n 1) = g(d) h(d)+r(d)mit: r(d) = 0 oder gradr(d) < gradg(d) r(d) = ((D n 1) g(d) h(d)) mod(d n 1) = g(d) h(d) ist CP. Entweder grad(g h) < gradg Widerspruch! oder r(d) = 0 r(d) = 0 D n 1 = g(d) h(d), d.h. es gibt eine Zerlegung von (D n 1) mit g(d) als Faktor. Zusammenfassung: g(d) ist das einzige CP mit kleinstem Grad n k = r. Da g(d) ein CP, ist auch D i g(d) ein CP. Jedes Produkt x(d) g(d) ist CP y(d) = g(d) x(d) R n (q). g(d) teilt D n 1 ohne Rest D n 1 = g(d) h(d). Jedes y(d) mit grady(d) n 1 ist genau dann CP, wenn es durch g(d) ohne Rest teilbar ist. 3.2.1 Korrespondierende Generatormatrix [G] Allgemeiner (n, k)-blockcode: [G] = Zyklischer Code: n g 0. g k 1 {}}{ g(d) = ( g 0,g 1,...,1, 0,...,0) ist ein CW. }{{}}{{} r+1 k 1, wobei g 0,..., g k 1 linear unabh. CW g i (D) = D i g(d) = (0,...,0,g }{{} 0,g 1,...,1,0,...,0) = }{{} i g ist CW mit 0 i k 1. i k 1 i Die i g sind linear unabh. CW; sie bilden Basis der Dimension k im CW-Raum. [G] = g. mit i g = D i g(d), 0 i k 1 k 1 g g 0...... g r 1 1 0... 0 0 g 0...... g r 1 1 0 0 Generatormatrix des zyklischen [G] =.... k 0 unsystematischen (n, k)-blockcodes. 0...... 0 g 0... g r 1 1 } {{ }} {{ } r k } {{ } n

3.2. CODIERUNG MIT ZYKLISCHEN CODES 25 Bsp.: q = 2, n = 7 mod(d 7 +1); D 7 +1 = (D+1)(D 3 +D 2 +1)(D 3 +D +1) Wähle r = 3 k = 4; g(d) = D 3 +D +1 (7,4) Blockcode [G] = 1101000 0110100 0011010 0001101 Hamming-Codes sind zyklische Codes! systemat. Code [I k P] = 1000 110 0100 011 0010 111 0001 101 = (7, 4)-Hamming-Code Systematische Codierer: Gewünscht: y = ( p, x) = (p 0,p 1,...,p r 1,x 0,x 1,...,x k 1 ) Anmerkung: das systematsiche Codewort unterscheidet sich von dem in Abschnitt 2.1.1 Beachte: x k 1 wird zuerst, p 0 zuletzt gesendet. Strategie: Info-Polynom x(d) um n k = r Stellen schieben und zum Paritäts Polynom addieren. p(d) =? y(d) = D r x(d)+p(d) R n (q) muss CP sein! es gilt: y(d) = q(d) g(d) = D r x(d)+p(d) Dr x(d) = q(d)+ p(d) p(d) = ( D r x(d) ) g(d) g(d) modg(d) Codewort: y = y(d) = D r x(d)+ ( D r x(d) ) modg(d) Algorithmus für systematische CW bei zyklischen Codes: 1.) Sende x (k Stellen). 2.) Verschiebe x um r Stellen, d.h. bilde D r x(d). 3.) Dividieren: D r x(d) : g(d) Divisionsrest =p(d). 4.) Sende p (r Stellen). Hinweis: für q = 2 entfällt negatives Vorzeichen. Systematische Generatormatrix [G] = [I k P] = g 0. g k 1 k {}}{ g i = ( 0,...,0,1,0,...,0,p }{{} 0,...,p r 1 ) i 1 auf i-ter Position 0 i k 1 = g i (D) = D i +D k (D r+i ) mod g(d)

26 3. ZYKLISCHE CODES 3.2.2 Duale Codes Es gilt: g(d) h(d) = (D n 1) mod(d n 1) = 0 Vergleiche Kontrollmatrix [H] : [G] [H] T = [0] Analog: [H] = h T (D) = k h k i D i := D k h ( 1 D) = indexinverses Polynom h T (D) generiert den zu g(d) dualen (n,r)-code, vgl. Abschnitt 2.2 (oft wird h(d) als Kontroll-Polynom bezeichnet). Bsp.: q = 2; D 7 +1 = (D +1)(D 3 +D 2 +1)(D 3 +D +1) = (D 4 +D 2 +D +1)(D 3 +D +1); g(d) = D 3 +D +1 h(d) = D 4 +D 2 +D +1 h T (D) = D 4 (D 4 +D 2 +D 1 +1) = (D 4 +D 3 +D 2 +1) 1011100 = 1011 100 [H] = 0101110 systematische [H ] = [P T I r ] = 1110 010 0010111 Kontrollmatrix 0111 001 vgl. Hamming-Code in Abschnitt 2.32 Prüfstellenermittlung mit h(d) g(d) h(d) = D n 1 y(d) h(d) = x(d) (D n 1) grad ( y(d) h(d) ) k 1 = k µ=0 h µ y i µ = 0 k i n 1 Da grad h(d) = k h k = 1 y i k = k 1 µ=0 h µ y i µ k i n 1 Folglichlassen sich bei einem systematischen Code die Prüfstellen y r 1,...,y 0 rekursiv, bei y r 1 also i = n 1 beginnend, aus den bekannten Info-Stellen (y n 1,...,y n k ) = x ermitteln.

3.2. CODIERUNG MIT ZYKLISCHEN CODES 27 3.2.3 Schieberegister-Schaltungen für zyklische Codes 1. Rückgekoppeltes SR liefert Quotienten x(d) g(d) 0 x 0 x n r 1 x n r x i 1 x i x n 2 x n 1 + + + + g 1 0 g 1 g r i g r 1 g r =1 Es gilt: x i := x i 1 g r i x n 1 Polynomdivision: Bild 3.3: Schieberegisterschaltung zur Polynomdivision (x n 1 D n 1 +x n 2 D n 2 + +x 0 ):(D r +g r 1 D r 1 + g 0 ) = x n 1 D n r 1 + + p(d) g(d) (x n 1 D n 1 +x n 1 g r 1 D n 2 + +x n 1 g 0 D n r 1 ) 0 + x n 2 g r 1 x n 1 D n 2 + = erster SR-Takt...... 0+ +p(d) =k-ter SR-Takt Jede Taktung des SR = Divisionszeile Nach n r = k Takten enthält das SR den Divisionsrest p(d) = ( x(d) ) mod g(d). 2. Schaltung für systematische zyklische Codierung mit r Registern, q = 2 Vorteilhaft für r < k, d.h. R > 1 2 g1 2 1 0 g 0 = 1 g r 1 y(d) = D + + r x(d)+(d r x(d)) + mod g(d) 2 1 (y i ) (x i ) Takt Schalterstellung Aktion CW 1,...,k 1 Info-Bit senden x i y i mit SR p(d) berechnen k +1,...,n 2 Paritätsstellen senden p i y i SR mit 0 belegen n+1,..., 1 Info-Bit senden... x i y i Bild 3.4: Systematische Codierer mittels Generatorpolynom

28 3. ZYKLISCHE CODES Bsp: (7,4), r = 3 Hamming-Codierer mit g(d) = D 3 +D+1; x = (0001) = x(d) = D 3 (x i ) 2 0 1 z 1 z 2 z 3 + + 2 1 D 3 x(d) = D 6 (y i ) D 6 : (D 3 +D +1) = D 3 +D +1+ D2 +1 g(d) (D 6 +D 4 +D 3 ) D 4 +D 3 (D 4 +D 2 +D) D 3 +D 2 +D (D 3 +D +1) (D 2 +1) = p(d) 3. Kanonische Strukturen zur Codierung mit k Registern, q = 2 Gewichtskoeffizienten = dualer Code (Kontrollpolynom), vorteihaft für r > k, d.h. R < 1 2 + + h k 1 h 1 h 0 = 1 2 1 x 0 x 1 x k 1 (x i ) (y i ) Takt Schalterstellung Aktion CW 1,...,k 1 Info-Bit senden x i y i k +1,...,n 2 Prüfstellen ermitteln p i y i Prüfstellen senden Schalter x i z 1 z 2 z 3 y i Init 0 0 0 1 1 1 0 1 1 0 0 1 1 0 0 1 1 1 0 0 1 0 1 0 0 1 0 1 2 0 0 1 0 0 0 0 1 Bild 3.5: Systematischer Codierer mittels Kontrollpolynom Rekursive Ermittlung der Prüfstellen nach Abschnitt 3.2.2 y i k = k 1 µ=0 h µ y i µ, k i n 1

3.2. CODIERUNG MIT ZYKLISCHEN CODES 29 3.2.4 Decodierung zyklischer Codes Wie bei Blockcodes: Syndromberechnung Fehlerlokalisation Fehlerkorrektur (trival bei GF(2)) Es gilt: g(d) teilt jedes CP y(d) ohne Rest ( y(d) ) modg(d) = 0 empfangenes CP: r(d) = y(d) + e(d); e(d): Fehlerpolynom Syndrom: s(d) = ( r(d) ) modg(d) = ( y(d) ) modg(d) +( e(d) ) modg(d) = ( e(d) ) modg(d) s(d) 0 erlaubt Fehleridentifikation, sofern e(d) R n (q), d.h. kein CP ist. Schaltung: (systematische Codes) r n k + (r i ) (ê i ) (ˆx i )...k 1 mod g(d) Fehler s(d) Lokalisation (Tabelle) Bild 3.6: Decodierer für zyklische Codes Fehlerkorrektur von Einzelfehlern (Meggit-Decoder) zyklisch: D i e(d) (D i s(d)) mod g(d) Ein zyklisch verschobenes Fehlermuster führt zu einem verschobenen Syndrom mod g(d) ( Meggit-Decoder). Berechnung eines Referenzsyndroms s 0 (D) für Einfachfehler an der Stelle 0: e 0 s(d) so lange zyklisch schieben, bis der Divisionsrest durch g(d) mit s 0 (D) übereinstimmt; die zu korrigierende Fehlerstelle wandert entsprechend. Verbesserung: Korrektur ohne Tabelle: Berlekamp-Massey-Algorithmus Euklidscher Divisions-Algorithmus

30 3. ZYKLISCHE CODES 3.3 Reed Solomon(RS) Codes I. Reed und G. Solomon, 1960 Klasse nicht binärer zyklischer Codes über GF(q) oder GF(q m ) Natürliche Länge von RS Codes über GF(q m ) ist n = q m 1 mit k = 1,2,...,n 2 Info Symbolen aus GF(q m ). RS Codes erfüllen die Singleton Schranke, d.h. für einen t Fehler korrigierenden RS Code gilt k = n 2t. (n,n 2t) Code 3.3.1 Algebraische Strukturen von Reed-Solomon (RS) Codes Fundamentalsatz der Algebra: Ein Polynom Y(D) = k 1 Y i D i, Y k 1 0 hat höchstens (k 1) verschiedene Nullstellen α i. Anhand des Fundamentalsatzes der Algebra sollen Codes (d.h. Mengen von Vektoren) konstruiert werden, die ganz bestimmte Mindest-Hammingdistanzen d min aufweisen. Satz: Sei Y(D) ein Polynom über GF(q) oder GF(q m ) mit grad Y(D) = k 1 n d min. Wählt man aus dem GF n verschiedene Elemente β 0,β 1,...,β n 1 aus und definiert einen Vektor (Codewort) y = ( Y(β 0 ),Y(β 1 ),...,Y(β n 1 ) ), so hat y das Gewicht (Hamming-Norm) w( y) d min, d.h. alle Codeworte haben einen Mindestabstand d min. Beweis: Höchstens (k 1) der Y(β i ) sind Null. y hat mindestens n (k 1) d min von Null verschiedene Komponenten. w( y) d min. Aufgrund der Linearität des Codes haben alle y einen Mindestabstand d min. Mit β i := α i, i = 0,1,...,n 1, wobei α ein Element der Ordnung n, ist ein RS Code in einfachster Form wie folgt definiert. Def.: Ein RS Code der Länge n, der Dimension k und der Mindestdistanz d min = n (k 1)istdefiniertalsdieMengederVektoren y = ( Y(α 0 ),Y(α 1 ),...,Y(α n 1 ) ), α: Element der Ordnung n, für alle Polynome Y(D) mit grad Y(D) k 1. Der RS Codierer bildet die Menge der verschiedenen Polynome Y(D) R k (q l ) auf die Codeworte y = ( Y(α 0 ),Y(α 1 ),...,Y(α n 1 ) ) R n (q m ) ab. Natürliche Länge des t Fehler korrigierenden RS-Codes: (q m 1,q m 1 2t) mit m,t = 1,2,... Bemerkung: Bei RS Codes sind Y i und y j aus dem gleichen Erweiterungskörper, üblicherweise GF(2 m ), bei BCH Codes liegen die Komponenten Y i in einem Erweiterungskörper GF(q m ) zum Grundkörper der Codeworte y j GF(q) (BCH beschrieben von A. Hocquenghem (1959), R. Bose und D. Chaudhuri (1960)).

3.3. REED SOLOMON(RS) CODES 31 3.3.2 RS Codierung und Diskrete Fourier Transformation Allgemeine Definition der Diskreten Fourier Transformation (DFT): Sei Y = (Y 0,Y 1,...,Y i,...,y n 1 ) der Koeffizientenvektor des Polynoms Y(D) = n 1 Y i D i undsei α einelement der Ordnung n, d.h. α n = 1, α i 1 0 < i < n. Der Vektor der invers diskret Fourier Transformierten (IDFT) (y 0,y 1,...,y l,...,y n 1 ) = y Y ist definiert durch n 1 y l := Y(D = α l ) = Y i α i l, 0 l n 1. Dann ergibt sich umgekehrt der Koeffizientenvektor y = (y 0,y 1,...,y l,...,y n 1 ) des Polynoms y(d) = n 1 y l D l durch die diskrete Fourier Transformation (DFT) mit l=0 n 1 Y i = n 1 y(d = α i ) = n 1 y l α l i, 0 i n 1. l=0 Bemerkung: 1.) α i α i = 1 = α n α i = α n i. 2.) ( n 1 Faltungssätze der DFT 1 ) = 1. 3.) Mitα = e +j 2π n entspricht obigedefinitionderkomplexwertigendft. Die zyklische Faltung zweier Folgen der Länge n entsteht dadurch, dass man zunächst eine der beiden Folgen periodisch fortsetzt und dann aus dem Faltungsprodukt eine Teilfolge der Länge n betrachtet (die Komponenten der Vektoren repräsentiern die Glieder der Folgen): c = a n 1 b c i = a j b (i j) modn, 0 i n 1 j=0 wobei b : ( b n+1 b 2 b 1 b 0 b 1 b n 1 ) b 1... b n 2 b n 1 b 0 b 1... b n 1 Dann gilt mit der DFT ( ) bzw. der IDFT ( ): a A =A(D), b B =B(D) c = (a 0 b 0,...,a n 1 b n 1 ) ( A B) =C(D) = [ A(D) B(D) ] mod(d n 1) und A a =a(d), B b =b(d)

32 3. ZYKLISCHE CODES c = (A 0 B 0,...,A n 1 B n 1 ) n 1 ( a b) =c(d) = n 1 [A(D) B(D) ] mod(d n 1) RS Codierer Eine t Fehler korrigierende RS Codierung entspricht einer inversen diskreten Fourier Transformation, bei der im Frequenzbereich k Koeffizienten (Spektrallinien) durch Info Stellen und die höchsten 2t Koeffizienten (Spektrallinien) durch Null besetzt werden. x i e S P 2t n IDFT k Y X RS Codierer n y n + r n DFT n R 2t Fehlerlokalisation S Fehlerwertberechnung k ˆ E + RS Decodierer k ˆ X Bild 3.7: Prinzip RS Codierer und Decodierer Beweis: Da bei RS Codes Y(D) höchstens vom Grad k 1 = n d min ist, gilt für die r = n k höchsten Koeffizienten Y i 0 k i n 1. Definitionsgemäß entspricht dann der RS Code einer IDFT mit den r höchsten Koeffizienten gleich Null. Für t Fehler korrigierbar muss d min 2t+1 gelten; da d min = (n k)+1, genügt es, die 2t höchsten Spektrallinien zu Null zu setzen. Anmerkung: 1.) RS Codes sind zyklische Codes, sie besitzen das Generatorpolynom n 1 g RS (D) = (D α i ), da auch g RS (D) ein Code Polynom ist, und für jedes Code Polynom gilt: i=k 0 = Y i = DFT[y(D)] i = n 1 y(α i ) k i n 1, d.h. α i, k i n 1 sind Nullstellen von g RS (D). Ein RS Code kann durch einen systematischen Codierer realisiert werden, da der RS-Code ein zyklischer Code mit dem Generatorpolynom g RS (n) ist. Ein RS Code ist durch die Angabe von (n, k) und eines primitiven Polynoms, das das GF(q m ) beschreibt, vollständig definiert. 2.) Für das Prüfpolynom gilt h RS (D) = k 1 (D α i ), denn das Prüfpolynom muss genau an den Stellen 0 sein, an denen g RS (D) keine Nullstellen hat, damit (g RS (D) h RS (D)) mod (D n 1) = 0.

3.3. REED SOLOMON(RS) CODES 33 3.) Der RS Code behält seine Eigenschaften, wenn beliebige 2t zusammenhängende Spektrallinien zu Null gesetzt werden. Beispiel für RS Codes im GF(q) Wähle GF(5) Restklasse mod 5 0 1 2 3 4 0 0 0 0 0 0 1 0 1 2 3 4 2 0 2 4 1 3 3 0 3 1 4 2 4 0 4 3 2 1 D D 1 1 1 2 3 3 2 4 4 α = 2 ist primitives Element α 0 = 1 = α 4 α 1 = 2; α 1 = 3 α 2 = 4; α 2 = 4 α 3 = 3; α 3 = 2 max. Codewortlänge: n = 4, da y = (Y(α 0 );Y(α 1 );Y(α 2 );Y(α 3 )) t = 1 Fehler korrigierender RS Code über GF(5) (n,n 2t) = (4,2) k = 2 Info Stellen (4,2) die beiden höchsten Frequenzstellen: Y 2 = Y 3 = 0 k = 2 Info Stellen: Y 0,Y 1 GF(5) es gibt 25 Codeworte Codierung: y = (Y(α 0 ),Y(α 1 ),Y(α 2 ),Y(α 3 )) Bsp.: Y = (1,2) Y(D) = 2D +1 y = (Y(1),Y(2),Y(4),Y(3)) = (3,0,4,2) =y(d) = 2D 3 +4D 2 +3 Decodierung: (z.b. fehlerfreier Kanal) ˆ Y = n 1 ( y(α 0 ),y(α 1 ),y(α 2 ),y(α 3 ) ) = 4 1 (y(1),y(3),y(4),y(2)) = 4 (4,3,0,0) = (1,2,0,0) = Y Generatorpolynom: n 1 g(d) = (D α i ) = (D α 2 )(D α 3 ) = (D 4)(D 2) = D 2 +4D +3 i=k

34 3. ZYKLISCHE CODES Beispiel für RS Codes im GF(2 m ) Wähle m = 8 GF(2 8 ) Primitives Element α, Primitives Polynom q(α) = α 8 +α 6 +α 5 +α 4 +1 Symbol ˆ= 8 Bit = 1 Byte (kann seriell oder parallel übertragen werden) max. Codewortlänge n = 255 Symbole, da y = (Y(α 0 );...;Y(α 254 )) Codeverkürzung bei systematischen CW (vgl. Abschnitt 2.3.1) l Info-Symbole Null setzten und nicht übertragen. Bsp.: t = 2 Bytefehler-korrigierend (255, 251) RS-Code Generatorpolynom: g(d) = 254 (D α i ) i=251 Verkürzter Code (28, 24): l = 224 Symbole zu Null gesetzt und nicht übertragen. 3.3.3 Grundzüge der RS Fehlerkorrektur Fehlermodell: y e = r R = Y E = ( ) (Y 0 E 0 ),...,(Y k 1 E k 1 ),E k,...,e }{{ n 1 } S =S(D) Syndrom S(D) = S = (R k,...,r n 1 ) = (E k,...,e n 1 ) darf nur von e abhängen. Strategie: S(D) = 0: fehlerfreier Empfang mit e = 0(bzw. Fehler nicht identifizierbar) S(D) 0: 1.) Fehlerlokalisation C(D) 2.) Fehlerwertberechnung Ê(D) ˆ X : ˆ Y = R ˆ E Korrekturfähigkeit: kann t Fehler korrigieren bei unbekannter Fehlerposition 2t Fehler korrigieren, wenn Fehlerposition bekannt. 1.) Fehlerlokalisation Idee: Berechne aus S(D) einen Schätzwert ˆ e ˆ E a.) der möglichst wenige Komponenten ê i 0 besitzt (ML Prinzip, da weniger Fehler wahrscheinlicher), b.) für den S = (Êk,...,Ên 1) gilt.

3.3. REED SOLOMON(RS) CODES 35 ad a.): Definiere Maskierungsvektor c, der an den Fehlerstellen = 0 ist, d.h. e i 0 c i = 0 und c i e i = 0 i, wobei C(D) minimalen Grad haben soll. Bilde C(D) = (D α i ) mit grad C(D) = Anzahl Fehlerstellen t, i=arg e i 0 wobei ( C(D) E(D) ) = 0 erfüllt sein muss. Gleichungssystem modd n 1 y(d) 0 Y(D) e(d) 0 x 0 x 0 E(D) r(d) S(D) R(D) c(d) x 0 x 0 x wobei c i e i = 0 i 0 C(D) (C(D) E(D)) mod(d n 1) = 0 grad C(D) = Anzahl Fehler t Bild 3.8: Veranschaulichung der RS Fehlerkorrektur ad b.): Berechnung von C(D) aus S(D), denn S = (E k,...,e n 1 ) 0 = t C i S l i, t l 2t 1, da maximal t Fehler Rekursive Lösung der t Gleichungen mit t Unbekannten C i Lösungsalgorithmen: } 1.) Euklidscher Divisionsalgorithmus C(D) 2.) Berlekamp-Massey-Algorithmus (1968) Nullstelle von C(D) = Fehlerstelle =α i bestimmen (Chien Search = probieren) 2.) Fehlerwertberechnung Idee: a.) Rekursive Lösung von ( C(D) Ê(D)) mod(d n 1) = 0 undˆ e ˆ E, ei = E(α i ) b.) Forney-Algorithmus

36 3. ZYKLISCHE CODES 3.4 Beispiele für zyklische Codes, Übersicht über Blockcodes Blockcodes Lineare Blockcodes zyklische Codes RS Codes BCH Codes 1.) Zyklische Hamming-Codes Bild 3.9: Übersicht Blockcodes (2 r 1, 2 r 1 r),d min = 3,t = 1, perfekte Codes. g(d) =? Faktorisierung (q = 2): (D (2r 1) 1) = g 1 (D) g 2 (D) g l (D) : irreduzible Polynome Das Generatorpolynom g(d) mit grad g(d) = r generiert einen Hamming-Code mit n = 2 r 1, wenn g(d) ein primitives Polynom ist. 2.) Golay-Code (23,12), d min = 7, t = 3, perfekter Code 3.) Schieberegister-Codes maximaler Länge g(d) = D 11 +D 9 +D 7 +D 6 +D 5 +D +1 (2 k 1,k), d min = 2 k 1, nicht perfekte Codes Duale Codes zu Hamming-Codes Entwurf über Kontrollpolynom h T (D). Codierer Kanonische Struktur (Gewichtskoeff. z.b. in [Proakis] tabelliert) + + h k 1 h 1 h 0 = 1 2 1 (y i ) (x i ) Bild 3.10: Schaltung für SR Codes maximaler Länge

3.4. BEISPIELE FÜR ZYKLISCHE CODES, ÜBERSICHT ÜBER BLOCKCODES37 (y i ): enthält alle 2 k 1 möglichen Belegungen des SR außer dem 0 Wort mit 2 k 1 1 0 und 2 k 1 1 -Elementen der Periode n = 2k 1. Für x 1 = 1,x i 1 = 0 ist (y i ), eine Pseudozufallsfolge. Mit der Abbildung 0 1,1 +1 gilt für deren Autokorrelationsfunktion { n : i = 0, ±n, ±2n,... ϕ yy (i) = 1 : sonst. Scrambler (Verwürfler) = nicht systematischer rekursiver Codierer der Rate R = 1: Dient der Beseitigung statistischer Bindungen, die das Leistungsdichtspektrum beeinflussen. 1 Codierung: y(d) = x(d) h (D) Decodierung: x(d) = y(d) h (D) 4.) BCH-Code (Hocquenghem (1959); Bose und Chaudhuri (1960)), Allgemeine Klasse von Codes (2 m 1,k) mit r m t, (d.h. k 2 m 1 m t), m 3 und d min = 2t+1 mit algebraischer Struktur wie RS Codes. (D 2m 1 1) = g(d) h(d); g(d) tabelliert für m,k,t, z.b. [Proakis]. Info Worte aus dem Erweiterungskörper GF(q m ), CW aus GF(q). Vorteil: Untere Schranke für d min (=geplante Mindestdistanz) ist bestimmt. Algebraische Decodierung wie bei RS Codes durch Berlekamp-Massey- Algorithmus oder Euklidscher Divisionsalgorithmus Spezialfall: Hamming-Codes t = 1, m = r und k = 2 r 1 r 5.) Reed-Solomon-Codes (1960) s. Abschnitt 3.3.1 werden von manchen Autoren als Spezialfall der BCH Codes aufgefasst: (q m 1,q m 1 2t) Code über GF(q m ) bei natürlicher CW Länge. Anwendung: CD Player: (28,24) CodeüberGF(2 8 )+Faltungsinterleaving über28symbole + (32,28) Code; verkürzter RS Code mit d min = 5, t = 2, kann 2 Bytefehler erkennen und korrigieren oder 4 erkannte Bytefehler (c(d) gegeben) korrigieren DVB 6.) Reed-Muller-Codes (1954) vielfach-symmetrischer Aufbau von [G] einfache Decodierung (Schwellwert Decodierung) Anwendung: frühe NASA-Raumsonden mit (32,6), t = 7.

38 3. ZYKLISCHE CODES 3.5 Bündelfehler Bündelfehler entstehen durch Übertragungsfehler aufeinanderfolgender Symbole, die beispielsweise auftreten durch Impulsstörung beim Telefon, Abschattung beim Mobilfunk, Kratzer auf CD / Drop-out beim Magnetband, etc. Decodierer, die bei Decodierfehlern aufeinanderfolgende Symbole falsch ausgeben. Def.: Wenn es in einem Fehlerwort e einen Block gibt, dessen erste und letzte Stelle ungleich Null ist, so heißt der Block Fehlerbündel der Länge b. e: 0 0 1 X X X 1 0 0 b Bild 3.11: Zur Definition des Fehlerbündels Bemerkung: Für q = 2 gibt es 2 b 2 verschiedene Fehlerbündel. 3.5.1 Erkennung von Bündelfehlern Es wird nur eine Fehlerentdeckung, nicht jedoch eine Korrektur betrachtet ( ARQ oder CW ignorieren (Erasure)). Satz: Die kombinatorische Wahrscheinlichkeit, dass bei einem zyklischen Codewort mit r redundanten Stellen ein Fehlerbündel der Länge b > r + 1 unentdeckt bleibt, beträgt 1 2 bzw. 1 für b = r + 1. Bündelfehler der Länge b r r 2r 1 werden immer erkannt. Beweis: Das Fehlerbündel wird durch ein Polynom b(d) vom Grad b 1 mit b 0 = b b 1 = 1 beschrieben: b(d) = 1 D b 1 +b b 2 D b 2 +...+1 Es gilt r(d) = y(d) e(d). Das Fehlerbündel beginnt an der i ten Position in e(d) = D i b(d) s(d) = ( r(d) ) = ( e(d) ) modg(d) modg(d) e(d) wird nicht erkannt, wenn: wobei grad q (D) = (b 1) r. e(d) = q(d) g(d) D i b(d) = D i q (D) g(d) b(d) = q (D) g(d),

3.5. BÜNDELFEHLER 39 1.) Fehler wird detektiert, wenn b < r+1 b r q.e.d.; 2.) b = r +1 q (D) = 1 es gibt 2 (b 2) verschiedene b(d), b(d) = g(d) wird nicht erkannt. Bruchteil = 1 2 = 1 b 2 q.e.d.; 3.) b > r +1 grad q (D) = b 1 r es gibt 2 (b 2 r) verschiedene b(d), da b 0 = g 0 = 1 Bruchteil = 2b 2 r 2 b 2 = 1 2 r q.e.d. Bsp.: HDLC-Protokoll (z.b. bei ETHERNET): g(d) = D 16 +D 12 +D 5 +1 r = 16 2 r 1 Bündelfehler-Erkennung bis b = 16 zu 100%; unerkannte Bündelfehler für b 17 1 2 16 1,5 10 5. 3.5.2 Interleaving (Codespreizung) Maßnahmen zur Fehlerkorrektur in Verbindung mit Codierung bei selten auftretenden Bündelfehlern. Gegeben sei ein t Fehler korrigierender Blockcode der Länge n; es sollen alle Fehlerbündel der Länge b B korrigierbar sein. Idee: Fehlerbündel auf B t korrigierbare Bündel der Länge t spreizen Datenstrom umsortieren, dazu inverse Operation im Sender erforderlich. (n, k)- Interleaver Bündelfehlern leaver codierer Kanal mit De-Inter De- Codierer x y y r r ˆ x Bild 3.12: Kanalcodierung mit Interleaving Unterteile y in Bitgruppen zu je t Bit, der Spreizungsabstand zwischen benachbarten Bitgruppen muss B sein. Man unterscheidet zwei verschiedene Arten von Interleaving: Block Interleaving Betrachte einen Spreizungsrahmen aus M Codeworten der Längen n. Es muss gelten: M t B. Realisierung: Speichermatrix (M n) Bit, zeilenweise in Bitgruppen zu je t Bit organisiert. Beim De-Interleaver wird spaltenweise ein- und zeilenweise ausgelesen. Beachte: Gesamtverzögerung durch Interleaving: 2 M n Symbole

40 3. ZYKLISCHE CODES n Bit zeilenweise einlesen y i M t Bit y i spaltenweise t Bitgruppen auslesen Bild 3.13: Block Interleaving Faltungs-Interleaving Multiplexer schalten nach jeweils t Bit weiter. Es muss gelten: t (M +1) B. y i Bit t 1 0 0 1 Bit 1 0 y i ri M 1 M 1 M 1 M 1 M M 0 1 M t M Interleaver De Interleaver Bild 3.14: Faltungsinterleaving und deinterleaving M M r i Beachte: Gesamtverzögerung durch Interleaving: M t

4 Faltungscodes q-näre Faltungscodes, Rate R = k n, bildet Folge von Info-Vektoren (k Symbole) auf Folge von Code-Vektoren (n Symbole) ab. Codierer mit Gedächtnis: Codevektor hängt ab bei nichtrekursiven Codes von den (L) vorangegangenen Info-Vektoren, bei rekursiven Codes von vorausgegangen Code-Vektoren. L + 1: Einflusslänge (Constraint length); L: Rückgrifftiefe, Gedächtnistiefe. Diskrete Faltung der Nachrichtenfolge mit der Coder-Impulsantwort. Vorteile: + FIR-Filterstruktur ( Schieberegister-Prozess) einfach zu implementieren + lineare Codes + einfach und robust zu decodieren Nachteile: schwieriger zu analysieren keine geschlossene Theorie wie bei linearen Blockcodes. 4.1 Codierer-Struktur a.) x(τ) b.) x(τ) k. k x(i) k τ L [G(D)] k k 1 k k k τ 7 L n y(i) n y(τ ) Rate R = k n y(τ ) n Bild 4.1: Faltungscodierer: a.) Struktur, b.) Hardware-Realisierung

42 4. FALTUNGSCODES Faltungsoperation; Bsp.: k = 1, R = 1 n L x(i) s 0 (i) s 1 (i) s 2 (i) s L (i) s 0 (i) s 1 (i). s L (i) g 0 (0) g 0 (1) g 0 (L) s 0 (i) s 1 (i) y 0 (i). s L (i) g n 1 (0) g n 2 (1) g n 1 (L) y n 1 (i) Bild 4.2: Faltungsoperation bei einem Rate 1 n Faltungscodierer Es gilt: y j (i) = L g j (µ) x(i µ) = L g j (µ) s µ (i), j = 0,1,...,n 1 µ=0 µ=0 Beispiel: k = 1, n = 2, L = 2 R = 1 2 Bsp: x(i) = (...,0,0,1,1,1,1,...) x(τ)=x(i) + + y 0 (i) y(τ) y 1 (i) y(i) = (..., ( ( 0 0), 0 ( 0), 1 ( 1), 1 ( 0), 0 ( 1), 0 ) ) 1,... Bild 4.3: R = 1 2 Faltungscodierer mit L = 2 4.2 Formale Beschreibung 1.) Folgen- und Polynomschreibweise, Vektoren (Keine Polynomrestklassen wie bei zyklischen Codes! Keine zyklische Faltung!) y(i) = g(i) x(i) ; y(d) = g(d) x(d) y(i) := y 0 (i). y n 1 (i) ; g(i) := g 0 (i). g r (i) ; x(i) := x 0 (i). x k 1 (i) 2.) Unendlich lange Folge Laurent-Reihe als Polynom: ( ) x(i) i = x(d) = x(i) D i i=

4.2. FORMALE BESCHREIBUNG 43 formal Beachte: 1 1 z = x(i) = (0,0,...,0, 1,1,...) = z i ; z < 1 1 D i = 1 1 D = 1 1+D, daq = 2 3.) Faltungscodierung R = 1 n : y j(d) = g j (D) x(d), j = 0,...,n 1 R = k n = y(d) = [G(D)] x(d) mit[g(d)] = : y(d) = [G(D)] x(d) mit[g(d)] = g 0 (D). g n 1 (D) g 00 (D),, g 0,k 1 (D).. g n 1,0 (D),, g n 1,k 1 (D) }{{} k n, wobei grad g i,j (D) L. Beachte: Die Polynomdarstellung beschreibt die Faltung, die Matrix beschreibt die Codierung mit einer Rate R = k. Im Gegensatz zur Konvention bei Blockcodes n werden hier Spaltenvektoren benutzt (transponierte Generatormatrix!). Obiges Beispiel: [G(D)] = [ y(d) = [G(D)] = y(i) = 1+D 2 1+D+D 2 [ D i = 1+D 1+ 1 D i (..., i=2 ( 0 0 ), ( ) 0, 0 ] ; x(i) = (...,0,0, 1,1,...) x(d) = ( ) 1, 1 1+D 2 1+D +D 2 ( ) 1, 0 ( ) 0, 1 ] [ 1 1+D = ( ) ) 0,..., 1 1+D 1+D 2 1 1+D 1 D i = 1 1+D ]

44 4. FALTUNGSCODES Bsp.: Ausgangsfolge eines defekten Codierers (historisch: defektes Bauteil in einer Raumsonde) + y 0 (i) x(i) + y 1 (i) Bild 4.4: Defekter Faltungscodierer R = 1 2, L = 2 [G(D)] = y(i) = [ 1+D 2 1+D (..., ( ) 0, 0 ] ; x(d) = ( ) 0, 0 ( ) 1, 1 [ 1 1+D 1+D y(d) = 1 ( ) ( ) ( ) ) 1 0 0,,,..., 0 0 0 }{{} 0, obwohl x(i>0) 0 ] Aus der Beobachtung von Teilen der Codefolge kann nicht eindeutig auf die Info Folge geschlossen werden.

4.3. SYSTEMATISCHE FALTUNGSCODIERER 45 4.3 Systematische Faltungscodierer Der Info-Vektor tritt vollständig als Komponente des Codevektors auf. Es gilt: ( y 0 (D),...,y k 1 (D) ) [ ] T I k = x(d) [G(D)] =. P(D) Äquivalenter Code [G (D)] vgl. Blockcodierer, Abschnitt 2.1.2 y (D) = [G(D)] [M(D)] x(d), wobei [M(D)] umkehrbar eindeutige Abbildung. }{{} [G (D)] Bsp: R = 2 3 Codierer, L = 1 a.) + x 0 x 1 n = 2 x(τ) + b.) x(i) x(i 1) x(τ) + y 0 (i) y 1 (i) y 2 (i) y 0 (i) y 1 (i) benötigt mehr Speicher y 2 (i) [G (D)] = y 0 (D) y 1 (D) y 2 (D) = 1 1 0 1 (1+D) 1 1 0 0 1 (1+D) D } {{ } [G(D)] äquivalenter, systematischer Codierer ( x0 (D) x 1 (D) ) Bild 4.5: R = 2 Faltungscodierer, L = 1; a.) nicht systematisch, b.) systematisch 3

46 4. FALTUNGSCODES 4.4 Katastrophale Faltungscodierer Def.: Ein Codierer heißt katastrophal, wenn es eine Info-Folge mit unendlichem Hamming- Gewicht gibt, die in eine Code-Folge mit endlichem Gewicht abgebildet wird. Folge: Eine endliche Anzahl vom Kanalfehlern kann zu einer unendlichen Anzahl von Decodierfehlern führen, siehe Bild 4.4. Solche Codierer sind unbrauchbar. Satz: Codierer sind katastrophal, wenn alle g i (D) einen gemeinsamen, irreduziblen Faktor q(d) D i besitzen. Systematische Faltungscodierer sind nie katastrophal. Bsp.: [ ] [ ] 1+D 2 1+D [G(D)] = = (1+D) ist katastrophal. 1+D 1 [ 1+D Äquivalenter, nicht-katastrophaler Codierer: [G (D)] = 1 mit Vorcodierung (1 + D). ] x(d) = 1 1+D y (D) = 1 1 1+D = (..., ( ) 0, 0 ( ) 1, 1 ( ) 0, 1 ( ) 0, 1 ( ) ) 0,..., 1 Interpretation: [G(D)] = [M(D)] [G (D)] = (1+D) [G (D)] Die Umkehrabbildung der Vorcodierung [M(D)] 1 = 1 1+D = x(d) ( = x(i) = x (i) x(i 1) ) x (D) ist ein rekursives System, bei dem Fehlerfortpflanzung auftritt. x (i) + x(i 1) D x(i)

4.5. BESCHREIBUNG VON FALTUNGSCODES 47 4.5 Beschreibung von Faltungscodes 1.) Generatormatrix: s.o. 2.) Zustandsdiagramm Faltungscodierer sind endliche Automaten (Mealy-Automaten-Modell). Schieberegister Prozess L 1 Zustandsspeicher x(i) ω s(i) δ y(i) Zustandsübergang: Schieberegister s(i+1) = δ ( s(i), x(i) ) = ( x(i), s 1 (i),..., s L 2 (i) ) Ausgabe: y(i) = ω ( s(i), x(i) ) Bsp.: Bild 4.6: Mealy Modell des Faltungscodierers L = 2, q = 2, G = [ 1,(1+D 2 ),(1+D +D 2 ) ]T ; x(i) {0,1}, y T (i) R = 1 3 (000). (111) a.) x(i) + + y 1 (i) y 2 (i) y 3 (i) b.) x(i) 0/000 y T (i) s(i) 00 0/011 1/111 0/001 01 10 1/100 0/010 1/110 11 1/101 Bild 4.7: R = 1 Faltungscodierer L = 2; a.) Schaltung, b.) Zustandsgraph 3

48 4. FALTUNGSCODES 3.) Trellis-Diagramm (Spalierdiagramm) Abwicklung des Zustandsgraphen über der Zeitachse Zustand 00 01 10 11 Wurzel (Ausgangszustand) Knoten (Zustand) Pfade = Weg durch Trellis Ausgabe Zweig (Übergang) Endzustand 000 000 000 000 000 111 111 111 011 7 0 100 001 Eingabe 1 7 001 7 110 110 010 7 101 i = 0 1 2 i i+1 N 2 N 1 N Bild 4.8: Trellis Diagramm für L = 2 Info-Folge ( x(i) ) Pfad (=Zustandsfolge) ( s(i) ) Codefolge ( y(i) ) ( ) ( ) (( Bsp.: x(i) = (0,1,1,0,0,...,0) s(i) = 0 ) ( 0, 1 ) ( 0, 1 ) ( 1, 0 ) ( 1, 0 ) ( 0,..., 0 0)) ( y(i) ) 0 1 1 0 0 0 0 = 0, 1, 1, 1, 1, 0,..., 0 0 1 0 0 1 0 0 vgl. fettgezeichneter Pfad im Trellis 4.) Baum-Diagramm = Trellis ohne Berücksichtung gemeinsamer Folgezustände Eingabe 0 1 000 00 111 000 000 00 000 00 111 10 00 001 01 111 10 110 11 011 00 001 01 100 10 10 011 010 01 110 11 101 11 Bild 4.9: Baum Diagramm für L = 2

4.6. DECODIERUNG VON FALTUNGSCODES 49 4.6 Decodierung von Faltungscodes k n [G] ML Decoder x X y Y r x x =(x(i)) n Bild 4.10: Übertragungssystem für Info Folgen mit Faltungscodierung Maximum Likelihood Folgenschätzer(Maximum Likelihood Sequence Estimator MLSE): wähle ˆx so, dass (Satz von Bayes, vgl. Informationstheorie, Abschnitt 5.2) P ( r y(ˆx) ) P ( r y(x ) ) x X ˆx = arg max P( r y(x ) ) x X Betrachte: BSC mit p < 1, statistisch unabhängige n(i), y ist N Glieder lang. 2 Die Wahrscheinlichkeit r zu empfangen, wenn y gesendet wurde, hängt von d H (r,y) ab. P(r y) = p d H(r,y) (1 p) N d H(r,y) log max min ( 1 p ) 1 logp(r y) = d H (r,y) log + N log p 1 p }{{}}{{} >0 unabhängig von y entfällt log( 1 p p ) kann entfallen, wenn p = const für alle y i, Suche die Info-Folge ˆx, deren Codefolge y(ˆx) den geringsten Hamming-Abstand zur Empfangsfolge r besitzt: ˆx = arg min d ( H r,y(x ) ) x X ( ) N ( ) Beachte: d H r,y = d H r(i),y(i) =: F(N) (Metrik nach N Symbolen). i=1 Iterative Metrikberechnung: F(i) = F(i 1)+d H ( r(i),y(i) ), 1 i N; F(0) = 0. Suchstrategie: iterative Pfadsuche im Trellis kürzester-weg Problem Viterbi-Algorithmus

50 4. FALTUNGSCODES 4.6.1 Viterbi-Algorithmus Optimaler Folgenschätzer für Schieberegister Prozess Andrew Viterbi, IEEE Transactions on Information Theory, 1967 allgemeiner bei Bellman (1959) als Dynamische Programmierung Idee: Iterative Suche im Trellis Für jeden Knoten den Pfad zur Wurzel mit geringstem Abstand zu r finden. Iterative Metrikermittlung: Jedem Zweig zum Knoten s (k) (i) sind zugeordnet: ein Info-Symbol x k (i), ein Vorgängerknoten s (l) (i 1) und damit ein Code-Symbol y (kl) (i). Metrik: F (kl) (i) = F (l) (i 1)+d H ( r(i),y (kl) (i) ), l = l 1,,l q Wähle den Vorgängerknoten, der zur geringsten akkumulierten Metrik führt (= Survivor ). Alle x X untersuchen alle s (k) (i) i untersuchen (es gibt q L Knoten pro i), d.h. für alle i und für jeden Knoten s (k) (i) den optimalen Pfad zur Wurzel ermitteln. s (l 1) d H (r(i),y (k,l1) (i)) F (l1) (i 1) s (k) F (k) (i) s (l 1) 2) d H (r(i),y (k,l2) (i)) F (l2) (i 1) Bild 4.11: Strukturelement des Viterbi Algorithmus Viterbi-Algorithmus (VA) Voraussetzung: N Codesymbole werden übertragen definierter Anfangszustand s (la) (z.b. 0 Symbole wurden gesendet) definierter Endzustand (z.b. 0 Symbole werden gesendet)

4.6. DECODIERUNG VON FALTUNGSCODES 51 Initialisieren: F (l=la) = 0, F (l la) = Iteration: i = 1,...,N Berechne von allen Zuständen aus zu jedem möglichen Knoten die akkumulierten Metriken. Für alle Knoten: k = k 1,...k q L: berechne für die q Vorgänger des Knotens s (k) (i) die akkumulierten Metriken F (l) (i 1)+d H ( r(i),y (k,l) (i) ) ; l = l 1,...,l q ; wähle Vorgängerknoten mit geringster akkumul. Metrik. F (k) (i) (Survivor); füge Pfadsymbole x (k) (i) an den Survivor-Pfad x (l) (i 1) an x (k) (i); speichere Metrik F (k) (i) und Survivorpfad x (k) (i) im Knoten s (k) (i). Ausgabe: i = N +1,...,N +L Decoder in definiertem Endzustand, optimaler Pfad dort im Survivor-Register. ˆx = x (End) (N +L) Modifikationen 1.) Metrik-Normierung: Subtrahiere von allen Metriken F (k) (i) die des besten, d.h. min k F (k) (i) 2.) Vorzeitige Symbolausgabe: Wenn alle Survivor-Pfade durch einen Knoten s (o) (i d) laufen, kann der Pfad x (o) (i d) bis zu diesem Knoten ausgegeben werden. Bemerkung: d ist eine Zufallsgröße, in der Praxis ist d 4 L...6 L endlicher Speicherbedarf: der VA ist für N, d.h. für unendlich lange Info Folgen x geeignet. Aufwand: Der Speicheraufwand (Metrikregister, Pfadregister) ist proportional zu q K L (= Zustandsanzahl), der Rechenaufwand (Metrikberechnungen, Vergleiche) ist proportional zu q K (L 1) (=Zweiganzahl). Bsp: VA zu obigen Faltungscodierer: [G] = [1,(1+D 2 )(1+D+D 2 )] T ; L = 2;q = 2 x = ( 0, 0, 0, 0, 0 ) - - - - - - - definierter Endzustand y T = ( 000, 000, 000, 000, 000 ) r T = ( 100, 010, 001, 000, 000 )

52 4. FALTUNGSCODES d H ( r(i), y(i)) F(i) 0 000 1 1 000 1 2 1 3 0 3 0 3 00 1 4 011 111 2 2 3 5 2 2 01 2 111 1 2 2 100 001 3 0 4 2 2 1 10 3 110 3 010 4 11 1 101 1 Bild 4.12: Beispiel für Viterbi Algorithmus ˆx = (0,0,0,0,0) Endzustand 4.7 Restfehlerwahrscheinlichkeit bei Faltungscodes Falschdetektion Pfad y(ˆx) mit geringstem Abstand zur Empfangsfolge r weicht vom gesendeten y(x) ab. Fehlerereignis: Abschnitt in dem y(ˆx) von y(x) abweicht. Idee: Da linearer Code: Sei x = (0,0,...) y = ( 0, 0,...) = 0 Auf falschen Teilpfad ˆx wird entschieden, wenn d H ( r, y(x) ) = r H > d H ( r, y(ˆx) ) x = 0 ˆx : falscher Teilpfad Fehlerereignis Bild 4.13: Fehlerereignis der Folgenschätzung Fehlentscheidung wenn: ( ) d H ( r, 0) > d H r, y(ˆx) ( ) d H r, y(ˆx) y(ˆx) H 1 2 y(ˆx) H ungerade ( ) d H r, y(ˆx) d 1 mit d := y(ˆx) H 2 d H ( r, 0) = r H y(0) = 0 r d H ( r, y(ˆx)) y(ˆx) d H ( y(ˆx), 0) = y(ˆx) H d h ( r, 0)+d H ( r, y(ˆx)) d H ( y(ˆx), ˆ0)

4.7. RESTFEHLERWAHRSCHEINLICHKEIT BEI FALTUNGSCODES 53 Berechnung der Auftrittswahrscheinlichkeit P(d) einer Fehlentscheidung, wenn dieser Teilpfad eine Hammingdistanz d zum gesendeten Pfad aufweist: Für den BSC mit einer Kanalfehlerwahrscheinlichkeit p gilt P(d) = d i= d+1 2 d i= d 2 +1 ( ) d p i (1 p) d i i ( ) d p i (1 p) d i + i Abschätzung (vgl. Abschnitt 1.4): P(d) < 1 ( ) d d p d d 2 (1 p) 2 2 2 }{{} keine Entscheidung möglich welcher Pfad gewählt würfeln 1 aller Fälle falsch. 2 ( ) d 2 p (1 p) d : ungerade d : gerade Decodierfehlerwahrscheinlichkeit P F Z(d) := Anzahl aller Teilpfade mit Hamming-Gewicht d (= nearest neighbours ) P F < Z(d) P(d) d=d min Grobe Näherung: P F Z(d min ) P(d min ), mit d min := min y(x) H. x X/{0} Ermittlung von d min (Literatur: d min = d free ) und von Z(d min ) 1.) Probieren (numerisch) 2.) Distanzprofil eines Faltungscodes. Idee: Gesucht sind alle Pfade, die im Zustand (00) beginnen und in (00) enden. Bsp.: wie Bild 4.7 Bei jedem Übergang muss die Akkumulation der Metrik erfasst werden. ( Additionoder Multiplikation (= Additionder Exponenten) ) s a : Anfangszustand y = d = 0 s c : Endzustand = s a s a s nicht zulässig, e 00 da x X\{0} 2 3 0 s b 1 s c 01 10 sa 3 sc 1 sb 2 se 1 1 1 2 2 sd 1 11 s d 2 2 Bild 4.14: Zur Ermittlung des Distanzprofils

54 4. FALTUNGSCODES Finde eine Beschreibung für alle Pfade und deren Metrik von s a s e (erzeugende Funktion). Ansatz: vgl. Digitalfilter mit Metrik d im Exponenten von D s e = s b D 2 s b = s c D 1 +s d D 1 s d = s d D 2 +s c D 2 s c = s a D 3 +s b D 1 4 Gleichungen mit 5 Unbekannten, gesucht: s e = f(s a ) s e s a = D 6 1 2 D 2 = D6 +2 D 8 +4 D 10 +8 D 12 +... es gibt 1 Pfad mit y H = 6 (s a s c s b s e ) Z(d = 6) = 1 es gibt 2 Pfade mit y H = 8 Z(d = 8) = 2 es gibt 4 Pfade mit y H = 10 Z(d = 10) = 4 d min = 6, Z(d min ) = 1 Suche von optimalen Faltungscodes d min groß, Z(d min ) klein = großer Hamming-Abstand und wenig nearest neighbours. Tabelle, z.b. in [Proakis] 4.8 Punktierte Faltungscodes Problem: hohe Decoderkomplexität für hochratige Faltungscodes R = k n > 1 2, Aufwand wächst exponentiell mit k. Lösung: verwende niederratigen R = 1 n Punktierungsmatrix Code und übertrage nicht alle CW Bits (n m) Punktierungsmatrix mit binären Elementen: 1 = CW Bit wird übertragen, 0 = CW Bit wird nicht übertragen. Jede Zeile muss mindestens eine 1 enthalten. Die Punktierungsmatrix wird periodisch mit der Periode m spaltenweise im Info- Bittakt abgearbeitet; die i-te Zeile entscheidet, ob das i-te CW Bit gesendet wird oder nicht. Die mittlere Code-Rate beträgt R = m e, wobei e die Anzahl der 1 in der Punktierungsmatrix mit m e m n angibt.

4.8. PUNKTIERTE FALTUNGSCODES 55 Die Decodierung entspricht der des R = 1 Muttercodes, wobei bei der Metrikberechnung die punktierten Bits ausgeblendet n werden. Ratenkompatible Punktierte Faltungscode(RCPC) mit gleichem Muttercode und Familie von Punktierungsmatrizen; Anwendung: Umschalten der Coderate bei laufender Übertragung ungleicher Fehlerschutz je nach Wichtigkeit des Info Bits