ZHW, NTM, 2006/06, Rur 1 Übung 14: Block-Codierung Aufgabe 1: Datenübertragung über BSC. Betrachten Sie die folgende binäre Datenübertragung über einen BSC. 0.97 0 0 0.03 Encoder Decoder 0.03 1 1 0.97 Für den Fehlerschutz stehen ein linearer (31,21, t=2) Block-Code C1 sowie ein linearer (31,11, t=5) Block-Code C2 zur Verfügung. a) Bestimmen Sie die BER ohne FEC. Wieviele Bits pro Codewort sind im Durchschnitt fehlerhaft? b) Bestimmen Sie die Wahrscheinlichkeit P(m) für m=0, 1, ..., 5 Bitfehler pro Codewort. Approximieren Sie mit den gefundenen Werten die BER ohne FEC zwecks Verifikation. m P(m) 0 1 2 3 4 5 c) Bestimmen Sie die Rate R1 von Code 1. Wie gross ist die Wahrscheinlichkeit, dass Decoder 1 ein einzelnes Codewort korrigieren und korrekt decodieren kann? Wie gross ist die Wahrscheinlichkeit, dass eine Meldung mit 105 Infobits (5 Codeworten) bzw. 1008 Infobits (48 Codeworten) mit Code 1 fehlerfrei übertragen werden kann? d) Bestimmen Sie die Rate R2 von Code 2. Wie gross ist die Wahrscheinlichkeit, dass Decoder 2 ein einzelnes Codewort korrigieren und korrekt decodieren kann? Wie gross ist die Wahrscheinlichkeit, dass eine Meldung mit 99 Infobits bzw. 1001 Infobits mit Code 2 korrekt übertragen werden kann? e) Wieviel mal länger dauert die Übertragung mit Code 2 als mit Code 1? Betrachten Sie nun den linearen (511, 340, t=20) Code C3, mit dem ein einzelnes Codewort mit Wahrscheinlichkeit 0.9058 korrigiert und korrekt decodiert werden kann. f) Bestimmen Sie die Rate R3 von Code 3. Kann man mit dieser Rate grundsätzlich zuverlässig über den gegebenen BSC übertragen? ZHW, NTM, 2006/06, Rur g) Wie gross ist die Wahrscheinlichkeit, dass eine Meldung mit 1020 Infobits mit Code 3 korrekt übertragen werden kann? h) Was schliessen Sie, wenn Sie Codes 1, 2 und 3 vergleichen? Aufgabe 2: Table-Lookup-Decoding. Betrachten Sie den Block-Code C = {[000000], [011100], [101010], [110001], [110110], [101101], [011011], [ 000111]} a) Bestimmen Sie N, K sowie die Code-Rate R. b) Ist der Block-Code C systematisch, linear, zyklisch? c) Wieviele Fehler kann man mit C detektieren bzw. korrigieren? d) Bestimmen Sie die Generator-Matrix G in systematischer Form. Hinweis: Die Zeilen von G sind auch Codewörter. e) Drücken Sie die Parity-Check-Bits in Funktion der Informationsbits u0, u1 und u2 aus. f) Bestimmen Sie die Parity-Check-Matrix H. Hinweis: Verfizieren Sie, dass x·HT = 0. g) Erstellen Sie eine Dekodiertabelle zur Bestimmung des Fehlervektors e. Welche Fehlervektoren e möchten Sie korrigieren können bzw. können Sie effektiv korrigieren? Syndrom s 000 001 010 011 100 101 110 111 Fehlervektor e h) Betrachten Sie die Übertragung des Codeworts x = [0 1 1 1 0 0]. Welches Codewort xe dekodieren Sie, wenn Sie y1=[0 1 1 1 1 0] bzw. y2=[0 1 1 1 1 1] empfangen? Aufgabe 3: BCH-Code. a) Zeichnen Sie eine Encoder-Schaltung für den (15,11,1) BCH-Code (Hamming-Code). b) Bestimmen Sie das zum Infowort u1=[1 0 0 0 0 0 0 0 0 0 0] gehörende Codewort x1. c) Zeichnen Sie eine Syndrom-Schaltung für den (15,11,1) BCH-Code. d) Bestimmen Sie das Syndrom s, wenn Sie y = x1 empfangen. 2 ZHW, NTM, 2006/06, Rur 3 Musterlösung Aufgabe 1 a) BER=0.03 bzw. 3% Im Durchschnitt ist 31·0.03 ≈ 1 Bit pro Codewort fehlerhaft. b) Die Wahrscheinlichkeit für m Bitfehler pro Codewort (CW) ist gegeben durch 31 P(m-Fehler pro CW) = (1 0.03)31 m 0.03m m m 0 1 2 3 4 5 P() 0.3890 0.3729 0.1730 0.0517 0.0112 0.0019 BER ≈ 0.3729·1/31+ 0.1730·2/31 + 0.0517·3/31 + 0.0112·4/31+ 0.0019·5/31 = 0.0299 c) Coderate R1 = 21/31 ≈ 2/3 P(1 CW korrekt) = 0.3890+0.3729+0.1730 = 0.9349 P(Meldung mit 105 Infobits bzw. 5 CW korrekt) = (0.9349)5 = 0.7142 P(Meldung mit 1008 Infobits bzw. 48 CW korrekt) = (0.9349)48 = 0.0395 Mit Code 1 ist es praktisch unmöglich, längere Meldungen fehlerfrei zu übertragen, ohne fehlerhafte Codewörter nochmals anzufragen (ineffizient). d) Coderate R2 = 11/31 ≈ 1/3 P(1 CW korrekt) = 0.3890+0.3729+0.1730+0.0517+0.0112+0.0019 = 0.9997 P(Meldung mit 99 Infobit bzw. 9 CW korrekt) = (0.9997)9 = 0.9973 P(Meldung mit 1001 Infobit bzw. 91 CW korrekt) = (0.9997)91 = 0.9731 e) Mit Code 2 können die Meldungen viel zuverlässiger übertragen werden als mit Code 1 (mehr redundante Bits). Dafür dauert die Übertragung doppelt so lange wie mit Code 1. f) ja, R3 ≈ 2/3 < CBSC(ε=0.03) = 0.8 [bit / Kanalbenützung] g) P(Meldung mit 1020 Infobits bzw. 3 CW korrekt) = (0.9058)3 = 0.7432 h) Vergleich C1 und C2: Je mehr Redundanz, desto besser ist der Fehlerschutz, auf Kosten der Datenrate. Vergleich C1 und C3: Es ist grundsätzlich möglich, Daten mit Rate R3 ≈ R1 ≈ 2/3 zuverlässig über den gegebenen BSC zu übertragen. Die Kapazität CBSC(ε=0.03) = 0.8 [bit / Kanalbenützung]. Allerdings muss die Blocklänge dann schon sehr gross sein (komplexer Dekoder). ZHW, NTM, 2006/06, Rur 4 Aufgabe 2 a) N=6, K=3 und R=0.5 b) Der Block-Code C ist systematisch und linear, aber nicht zyklisch. c) dmin = wmin = 3 => alle Muster mit 1 oder 2 Fehler detektierbar (eigentlich sind nur 7 der 64 möglichen Fehlermuster nicht detektierbar). => alle Muster mit 1 Fehler korrigierbar 0 1 1 1 0 0 d) 3 x 6 Generator-Matrix G 1 0 1 0 1 0 1 1 0 0 0 1 e) Parity-Check-Bits: x0 = u1 XOR u2 , x1 = u0 XOR u2 , x2 = u0 XOR u1. 1 0 0 0 1 1 f) 3 x 6 Parity-Check-Matrix H 0 1 0 1 0 1 0 0 1 1 1 0 Man kann verifizieren, dass x·HT = 0, z.B. [000111]·HT = [0 0 0]. g) Weil wenig Fehler häufiger auftreten als viele Fehler, muss man die Fehlervektoren e mit kleinstem Gewicht korrigieren bzw. in die Dekodiertabelle unten eintragen. Weil der Code dmin=3 hat, kann man sicher alle Fehlervektoren mit einem einzelnen Bit-Fehler bzw. wH(e)=1 korrigieren. Man kann aber auch ein einziges Fehlermuster e mit mehr als 1 Fehler korrigieren, siehe s=[1 1 1] unten, z.B. einen Doppelfehler, wobei leider nicht beide im Informationsteil des Codeworts liegen können. Syndrom s h) Fehlervektor e 000 000000 001 001000 010 010000 011 000100 100 100000 101 000010 110 000001 111 100100 Empfang y1: korrekte Entscheidung Schritt 1: s = y1·HT = [0 1 1 1 1 0]·HT = [1 0 1] Schritt 2: aus Dekodiertabelle e = [0 0 0 0 1 0] Schritt 3: xe = y1+e = [0 1 1 1 0 0] = x ZHW, NTM, 2006/06, Rur 5 Empfang y2: falsche Entscheidung Schritt 1: s = y2·HT = [0 1 1 1 1 1]·HT = [0 1 1] Schritt 2: aus Dekodiertabelle e = [0 0 0 1 0 0] Schritt 3: xe = y2+e = [0 1 1 0 1 1] ≠ x => Code hat dmin=3. Es sind 2 Fehler aufgetreten. y = [0 1 1 1 1 1] ist näher beim Codewort [0 1 1 0 1 1] (Hamming-Distanz = 1) als beim gesendeten Codewort [0 1 1 1 0 0] (Hamming-Distanz = 2). Dekodierfehler! Aufgabe 3 a) Encoder-Schaltung für den (15,11,1) BCH-Code (Hamming-Code): g(D) = 1+D+D4 Gate p0 p1 p3 p2 u=[u0,..., u10] x=[p0,...,p3,u0,..., u10] b) u1=[1 0 0 0 0 0 0 0 0 0 0] => x1=[1 1 0 0 1 0 0 0 0 0 0 0 0 0 0] x1 ist ein Codewort mit minimalem Hamming-Gewicht wmin=3 c) Syndrom-Schaltung für den (15,11,1) BCH-Code: y=[y0,..., y10] s0 s1 s2 d) Bestimmen Sie das Syndrom s, wenn Sie y = x1 empfangen. 10000000000 010000000000 0010000000000 10010000000000 110010000000000 => => => => => s = [1 0 0 0] s = [0 1 0 0] s = [0 0 1 0] s = [1 0 0 1] s = [0 0 0 0] Das Syndrom s=0, weil ein Codewort empfangen worden ist. s3