Formelsammlung Kanalcodierung Allgemeines Codewortlänge: N Anzahl der Informationsstellen: K Coderate: R = K/N Hamming-Distanz: D( x i, x j ) = w( x i xj ) Codedistanz: d = min D( x i, x j ); i j Fehlerkorrektur: d t + Fehlererkennung: d e + Fehlererkennung u Fehlerkorrektur: d e + t + Binärer symmetrischer Kanal (BSK) Fehlerwahrscheinlichkeit: Restfehlerwahrscheinlichkeit: p P e = N ( N ) w=t+ w pw ( p) N w Lineare Blockcodes Codierungsregel Quellensymbole: gesendete Codewörter: mit G = (N K) -Generatormatrix: u = u, u,, u K x = x, x,, x N x = u G Decodierungsregel Fehlerwörter: empfangene Codewörter: Syndrom: mit H = (N (N K)) -Parity-Check-Matrix e = e, e,, e N y = y, y,, y N = x e S = s, s,, s N K S = y H T = e H T
Systematischer Partity-Check-Code n K x n = u n K + n N x n = K k= u k g k,n Generatormatrix: G = [I K P ] Dimension N K Parity-Check-Matrix: H = [P T I N K ] Dimension N (N K) Hamming-Codes Codewortlänge: N = m Anzahl der Prüfstellen: N K = m Anzahl der Informationsstellen: K = m m Fehlerkorrekturkapazität: t = Minimaldistanz: d = 3 Theorem für lineare Blockcodes Codedistanz d =min w( x k ); x k 0 Bei einem linearen (N, K) Blockcode mit der Codedistanz d müssen d beliebig ausgewählte Spaltenvektoren der Parity-Check-Matrix H linear unabhängig sein t-fehler korrigierender Code t i= ( N i ) N K Viterbi-Algorithmus Der Viterbi-Algorithmus, angewandt auf eine über diskreten, gedächtnislosen Kanal empfangene Symbolfolge y, findet immer den Pfad mit der größten Metrik in einem Trellis-Diagramm(Maximum-Liklihood-Pfad) Dabei wird y iterativ, dh Zweig für Zweig verarbeitet In jedem Iterationsschritt wird die partielle Metrik aller in einen Zustand mündenden Pfade verglichen, und es wird derjenige Pfad mit der größten partiellen Metrik(Survivor) zusammen mit seiner partiellen Metrik abgespeichert Nach jedem Iterationsschritt gibt es also genau einen Survivor je Zustand Schritt : Beginne bei Zeiteinheit j = M (im Trellis-Diagramm) Berechne für alle Zustände die partielle Metrik für den in einen Zustand mündenden Pfad Speichere für jeden Zustand den Pfad(Survivor) und seine partielle Metrik
Schritt : Inkrementiere j um Berechne für alle Zustände die partielle Metrik für jeden in einen Zustand mündenden Pfad durch Addition der zweig-metrik des in einen Zustand mündenden Zweiges zur partiellen Metrik des mit diesem Zweig verbundenen Survivors Speichere für jeden Zustand den Pfad mit der größten partiellen Metrik(Survivor) und seine partielle Metrik Eliminiere alle anderen Pfade Polynom-Arithmetik [a(d) + b(d)]mod g(d) = r a (D) + r b (D) [a(d) b(d)]mod g(d) = [r a (D) r b (D)]mod g(d) Restpolynom des a(d) modulo g(d): a(d)mod g(d) = r a (D) Restpolynom des b(d) modulo g(d): b(d)mod g(d) = r b (D) Quadrat eines Polynoms: [f(d)] l = f(d l ) Periode p eines Polynoms g(d) p ist die kleinste positive Zahl mit: [D p + ]mod g(d) = 0 Primitives Polynom m-ten Grades p = m Zyklische Codes Generatorpolynom: g(d) = g m D m + + g 0 ; m = N K Checkpolynom: h(d) = h K D K + + h 0 ; Codewort: x(d) = x N D N + + x 0 Informationspolynom: a(d) = a K D K + + a 0 x(d) = a(d) g(d); Notwendige und hinreichende Bedingung für ein Generatorpolynom: D N = g(d) h(d) Generatormatrix und Check-Matrix eines zyklischen Code G = g m g m g 0 0 0 0 g m g m g 0 0 H = h 0 h h K 0 0 0 h 0 h h K 0 0 0 g m g m g 0 0 0 h 0 h h K 3
Systematische zyklische Codes x N D N + + x N K D N K = b(d) g(d) + r(d) Informationsbits: x N D N + + x N K D N K = D N K u(d); Prüfbits: r(d) = x N K D N k + + x 0 Decodierung zyklischer Codes y(d) = x(d) + e(d) Syndrom: S(D) = y(d)mod g(d); oder S(D) = e(d)mod g(d) Grad[e(D)] < N K S(D) = e(d) (Fehler in den Prüfstellen) e i (D) = D i e(d)mod(d N ) (zyklische Verschiebung um i) S i (D) = D i S(D)mod g(d) Elektronische Schaltungen Multiplikationsschaltung f(d) g(d) f(d) g 0 g g g m D 0 D D m f(d) g(d) Divisionsschaltung f(d) : g(d) g 0 g g g m f(d) D 0 D D m f(d) : g(d) 4
Codierschaltungen für zyklische Codes Codierschaltung mit K Registerstellen h k h k h h 0 S u(d) x N K x N K+ x N x N Codierschaltung mit N K Registerstellen S g 0 g g g N K X 0 X X N K u(d) S Decodierungsschaltung für zyklische Codes (Meggitt-Decoder) (Divisionsschaltung) Syndromregister Fehlermuster detektor (Schaltnetz) S S N stelliges Pufferregister S 5
Mathematische Grundlagen zur Beschreibung der BCH-Codes Restklassenmodulo einer ganzen Zahl α, α,, α q seien die von Null verschiedenen Elemente eines Galois-Feldes GF (q) : q ist eine Primzahl α q i = 0 D q = q i= (D α i) α i ist ein primitives Element, wenn es die Ordnung q hat Restklassen modulo einem Polynom Die Restklassen modulo einem Polynom f(d) bilden ein erweitertes Galois-Feld GF ( n ), falls f(d) ein irreduzibles Polynom vom Grad n ist α, α,, α n seien die von Null verschiedenen Elemente des GF ( n ): Ordnung des Elementes α i ist ein Faktor von n D n = n i= (D αi ) α i ist ein primitives Element, wenn es die Ordnung n hat Minimalpolynom m(d) Seien β ein Element des GF ( n ) und L die kleinste positive ganze Zahl mit β L = β, dann kann das zugehörige Minimalpolynom in der Form m(d) = L l=0 (D βl ) geschrieben werden Minimalpolynom ist irreduzibel Alle Minimalpolynome der Elemente eines Galois-Feldes GF ( n ) sind Faktor des Polynoms [(D n ) D] 6
Bose-Chaudhuri-Hocquenghem Codes Zyklische Hamming-Codes Seien g(d) ein irreduzibles Polynom vom Grad m und β ein primitives Element des durch g(d) erzeugten, erweiterten GF ( m ), dann ist H = [β N β N β β 0 ], mit N = m die Parity-Check-Matrix eines zyklischen Hamming-Codes Konstruktion des BCH-Codes Codewortlänge: N = m Fehlerkorrekturkapazität: t = beliebig wählbar Anzahl der Informationsstellen: K m m t Anzahl der Prüfstellen: N K m t Minimaldistanz: d t + Berechnung des Generatorpolynoms eines t-fehlerkorrigierenden zyklischen Hamming-Codes Bildung der Folge der Potenz des primitiven Elements β: β, β 3, β 5,, β t Berechnung der zugehörigen Minimalpolynome m i (D) 3 Berechnung des Generatorpolynoms g(d) = K leinstes G emeinsames V ielfaches [m (D), m 3 (D), m 5 (D),, m t (D)] Das Generatorpolynom besitzt t verschiedene Wurzeln Decodierung der BCH-Codes gesendetes Codewort: empfangene Symbolfolge: x(d) = u(d) g(d) y(d) = x(d) + e(d) Bildung der Teilsyndrom S i = y(β i ); mit i =,,, t 7
γ i = β j i für i =,,, t (γ i = Fehlerstellen von γ(d)) S = γ + γ + + γ w S = γ + γ + + γ w : S t = γ t + γ t + + γ wt Bestimmung des Fehlerstellenpolynoms σ(d) aus den Teilsyndromen σ(d) hat die Wurzeln γ, γ, γ 3,, γ w Fehlerstellenpolynom: Koeffizienten: σ(d) = σ 0 + σ D + σ D + + σ w D w σ 0 = σ = γ + γ + + γ w σ = γ γ + γ γ 3 + + γ w γ w : σ w = γ γ γ w S + σ = 0 S + σ S + σ = 0 S 3 + σ S + σ S + 3σ 3 = 0 : S w + σ S w + + σ w S + wσ w = 0 S w + + σ S w + + σ w S + σ w S = 0 : S t + σ S t + + σ w S t w+ + σ w S t w = 0 wobei iσ i = { σ i für ungerades i 0 für gerades i 3 Ermittlung der Fehlerstellen γ, γ,, γ w durch Berechnung der Wurzeln von σ(d) und Korrektur von y(d) 8