Sunteți pe pagina 1din 18

S5 Coduri BCH si Reed-

Solomon
Campuri Galois
Pentru a determina g(x) a.i. codul sa poata corecta maxim t erori independente vom utiliza
teoria Campurilor Galois (GF – Galois Fields)
Campurile Galois se noteaza GF(2k), unde k este extensia campului.
Un GF (2k) este definit prin elementele sale:
𝑘 −2
𝐺𝐹 2𝑘 : 01𝛼 𝛼2 3
𝛼 …𝛼 2

Campul Galois este definit de un polinom generator p(x) care are:


◦ grad k
◦ este primitiv (nu are divizori comuni decat pe 1 si el insusi)

Elementul 𝛼 este o radacina (solutie) a ecuatiei p(x) = 0, deci 𝑝 𝛼 = 0


𝑘 −1
O alta propietate a elementului 𝛼 este ca: 𝛼 2 = 1 ceea ce duce la o ciclicitate a GF(2k)
Observatie: pentru a genera un cod ciclic de lungime n, vom folosi un GF(2k), cu 𝑛 = 2𝑘 − 1
Exemplificarea GF(2k) pentru k=4, GF(24)
𝐺𝐹 24 : 0 1 𝛼 𝛼 2 𝛼 3 𝛼 4 𝛼 5 𝛼 6 𝛼 7 𝛼 8 𝛼 9 𝛼10 𝛼11 𝛼12 𝛼13 𝛼14 , pentru 𝑘 = 4 ⇒ 2𝑘 − 2 = 14
Polinomul primitiv p(x) poate sa fie: 𝑝(𝑥) = 𝑥 4 + 𝑥 + 1 sau 𝑝(𝑥) = 𝑥 4 + 𝑥 3 + 1
Observatie Pentru usurinta calculelor vom folosi + in loc de ⊕
Pentru 𝑝(𝑥) = 𝑥 4 + 𝑥 + 1 si 𝑝 𝛼 = 0 => 𝛼 4 + 𝛼 + 1 = 0
𝑘 −1
𝛼2 = 1 ⇒ 𝛼15 = 1 , de unde rezulta 𝛼16 = 𝛼, 𝛼17 = 𝛼 2 …
Pentru a putea lucra cu GF(24) trebuie sa stabilim cum adunam (⊕) si inmultim doua
sau mai multe elemente de camp Galois.
𝛼12 ∙ 𝛼13 = 𝛼 25 = 𝛼15 ∙ 𝛼10 = 𝛼10
𝛼12 + 𝛼13 = 𝛼12 1 + 𝛼 = 𝛼12 ∙ 𝛼 4 = 𝛼16 = 𝛼
𝛼4 + 𝛼 + 1 = 0 ⇒ 𝛼4 = 𝛼 + 1
𝛼 4 = 𝛼 + 1/* 𝛼 => 𝛼 5 = 𝛼 2 + 𝛼/* 𝛼 => 𝛼 6 = 𝛼 3 + 𝛼 2 /* 𝛼 => 𝛼 7 = 𝛼 4 + 𝛼 3 = 1 + 𝛼 + 𝛼 3 …
𝛼 7 = 𝛼 4 + 𝛼 3 = 1 + 𝛼 + 𝛼 3 /∗ 𝛼 ⇒ 𝛼 8 = 𝛼 + 𝛼 2 + 𝛼 4 = 𝛼 + 𝛼 2 + 𝛼 + 1 = 𝛼 2 + 1 …
P. 1 Fie un cod BCH de lungime n =15, corector de 3 erori. Determinati:
a) primul cuvant de cod nenul obtinut prin codarea secventei informationale 𝑖 = ൣ 1 0 1 0 1 0
MSB
1 0 1 0 1 0 1 1 0൧

b) lungimea secventei codate


c) distanta de cod
Din tabel pentru n =15 si t = 3 => m =5 si g(x): 2 4 6 7 => k’ = n - m = 10, 𝑔𝑘′ = 𝑔0 = 1

g(x): 2 4 6 7
0 10 1 0 0 1 1 0 111
MSB

𝑔 𝑥 = 𝑥 10 + 𝑥 8 + 𝑥 5 + 𝑥 4 + 𝑥 2 + 𝑥 + 1
a) Pentru m =5, din secventa informationala data, primul bloc informational este:
𝑖1 = 1 0 1 0 1
MSB

′ 𝑥 𝑘 ∙𝑖 𝑥
Relatia de codare este 𝑣 𝑥 = 𝑥𝑘 ∙𝑖 𝑥 + 𝑟𝑒𝑠𝑡𝑢𝑙
𝑔 𝑥

Pas.1 scrierea polinomului 𝑖 𝑥


𝑖 𝑥 = 𝑥4 + 𝑥2 + 1

Pas. 2 calcularea lui 𝑥 𝑘 ∙ 𝑖 𝑥
𝑘 ′
𝑥 ∙ 𝑖 𝑥 = 𝑥 10 𝑥 4 + 𝑥 2 + 1 = 𝑥 14 + 𝑥 12 + 𝑥 10

Pas. 3 impartirea lui 𝑥 𝑘 ∙ 𝑖 𝑥 la 𝑔 𝑥 pentru a obtine restul
𝑥9 + 𝑥6 + 𝑥2 + 𝑥 + 1
Pas. 4 aflarea lui 𝑣

𝑘′ 𝑥 𝑘 ∙𝑖 𝑥
𝑣 𝑥 =𝑥 ∙𝑖 𝑥 + 𝑟𝑒𝑠𝑡𝑢𝑙 = 𝑥 14 + 𝑥 12 + 𝑥 10 + 𝑥 9 + 𝑥 6 + 𝑥 2 + 𝑥 + 1
𝑔 𝑥

𝑣= 1 0 1 0 1 1 0 0 1 0 0 0 1 1 1
MSB
𝑥 14 + 𝑥 12 + 𝑥 10 𝑥 10 + 𝑥 8 + 𝑥 5 + 𝑥 4 + 𝑥 2 + 𝑥 + 1

𝑥 14 + 𝑥 12 + 𝑥 9 + 𝑥 8 + 𝑥 6 + 𝑥 5 + 𝑥 4 𝑥4 + 1

/ / 𝑥 10 + 𝑥 9 + 𝑥 8 + 𝑥 6 + 𝑥 5 + 𝑥 4
𝑥 10 + 𝑥 8 + 𝑥 5 + 𝑥 4 + 𝑥 2 + 𝑥 + 1
/ 𝑥9 + 𝑥6 + 𝑥2 + 𝑥 + 1
b) lungimea secventei codate
Lungimea secventei informationale este de 15 biti. Daca m = 5 => secventa se imparte in blocuri
de 5 biti => 3 blocuri informationale. Dupa codare fiecare bloc are 15 biti, deci lungimea
secventei codate va avea 45 biti
𝑛𝑟.𝑏𝑖𝑡𝑖 𝑠𝑒𝑐𝑣𝑒𝑛𝑡𝑎 𝑛𝑟.𝑏𝑖𝑡𝑖 𝑠𝑒𝑐𝑣𝑒𝑛𝑡𝑎
𝐿= ∙ 𝑛 . Daca nu este un nr. intreg atunci se adauga biti de zero la
𝑚 𝑚
secventa a.i. nr. bitilor din secventa sa se imparta exact la m
15
𝐿= ∙ 15 = 45 𝑏𝑖𝑡𝑖
5

c) distanta de cod
t = 3 erori => cod corrector de erori => d ≥ 2t + 1 => d = 7
P2. Fie un cod BCH corector de t = 3 erori cu n = 15. Determinati cuvantul de cod din care provine

urmatoarea secventa receptionata: 𝑟 = 1 0 0 0 1 1 0 0 0 1 0 1 0 0 1


MSB
Din tabel pentru n =15 si t = 3 => m =5 => k’ = n- m = 10
𝑛 = 15 = 2𝑘 − 1 ⇒ 𝑘 = 4 ⇒ 𝐺𝐹(24 ), 𝛼15 = 1

Polinomul asociat secventei este: 𝑟 𝑥 = 𝑥 14 + 𝑥 10 + 𝑥 9 + 𝑥 5 + 𝑥 3 + 1


Algoritmul Peterson cu cautare Chien
Pas 1. Calcularea sindroamelor erorii. Se determina sindroamele 𝑺1 = 𝑟 𝜶 , 𝑺3 = 𝑟 𝜶3 si 𝑺5 = 𝑟 𝜶5

Unde 𝜶 ∈ 𝑮𝑭 𝟐𝟒 , 𝛼15 = 1

𝑺1 = 𝑟 𝛼 = 𝛼14 + 𝛼10 + 𝛼 9 + 𝛼 5 + 𝛼 3 + 1 = 1 + 𝛼 3 + 1 + 𝛼 2 + 𝛼 3 + 𝛼 + 𝛼 2 + 𝛼 3 + 1 = 1 + 𝛼 +
+ 𝛼3 = 𝛼7
𝑆3 = 𝑟 𝛼 3 = 𝛼 42 + 𝛼 30 + 𝛼 27 + 𝛼15 + 𝛼 9 + 1 = 𝛼12 + 1 + 𝛼12 + 1 + 𝛼 9 + 1 = 𝛼 7

𝑆5 = 𝑟 𝛼 5 = 𝛼 70 + 𝛼 50 + 𝛼 45 + 𝛼 25 + 𝛼15 + 1 = 𝛼10 + 𝛼 5 + 1 + 𝛼10 + 1 + 1 = 𝛼10

Pas 2. Calcularea polinoamelor erorilor: 𝝈 𝑥

𝝈1 , 𝝈2 si 𝝈3 sunt determinati din tabel:

𝝈1 = 𝑆1 = 𝛼 7

𝑆12 𝑆3 +𝑆5 𝛼14 𝛼7 +𝛼10 𝛼7 𝛼22


𝝈2 = = = = = 𝛼 12
𝑆13 +𝑆3 𝛼21 +𝛼7 𝛼10 𝛼10

𝝈3 = 𝑆13 + 𝑆3 + 𝑆1 𝝈2 = 𝛼10 + 𝛼 4 = 𝛼 2
Pas 3. Cautarea pozitiilor eronate (cautarea Chien)
Erorile se gasesc pe pozitiile (n-j); j=1…n, daca:
?
σ3𝑖=1 𝝈𝑖 𝜶𝑖⋅𝑗 = 1 , j=1,n
Pt. j =1 𝛔1 𝜶1⋅1 + 𝝈2 𝜶2⋅1 + 𝝈3 𝜶3⋅1 = 𝛼 7 ⋅ 𝛼 + 𝛼12 ⋅ 𝛼 2 + 𝛼 2 ⋅ 𝛼 3 ≠ 1
Pt. j =2 𝛔1 𝜶1⋅2 + 𝝈2 𝜶2⋅2 + 𝝈3 𝜶3⋅2 = 𝛼 7 ⋅ 𝛼 2 + 𝛼12 ⋅ 𝛼 4 + 𝛼 2 ⋅ 𝛼 6 = 𝛼 9 + 𝛼 + 𝛼 8 ≠ 1
Pt. j =3 𝛔1 𝜶1⋅3 + 𝝈2 𝜶2⋅3 + 𝝈3 𝜶3⋅3 = 𝛼 7 ⋅ 𝛼 3 + 𝛼12 ⋅ 𝛼 6 + 𝛼 2 ⋅ 𝛼 9 = 𝛼10 + 𝛼 3 + 𝛼11 = 1 => rn−j = r12 eronat
Pt. j =4 𝛔1 𝜶1⋅4 + 𝝈2 𝜶2⋅4 + 𝝈3 𝜶3⋅4 = 𝛼 7 ⋅ 𝛼 4 + 𝛼12 ⋅ 𝛼 8 + 𝛼 2 ⋅ 𝛼12 = 𝛼11 + 𝛼 5 + 𝛼14 = 1 => rn−j = r11 eronat
Pt. j =5 𝛔1 𝜶1⋅5 + 𝝈2 𝜶2⋅5 + 𝝈3 𝜶3⋅5 = 𝛼 7 ⋅ 𝛼 5 + 𝛼12 ⋅ 𝛼10 + 𝛼 2 ⋅ 𝛼15 = 𝛼12 + 𝛼 7 + 𝛼 2 ≠ 1
Pt. j =6 𝛔1 𝜶1⋅6 + 𝝈2 𝜶2⋅6 + 𝝈3 𝜶3⋅6 = 𝛼 7 ⋅ 𝛼 6 + 𝛼12 ⋅ 𝛼12 + 𝛼 2 ⋅ 𝛼18 = 𝛼13 + 𝛼 9 + 𝛼 5 = 1=> rn−j = r9 eronat
Restul sumelor sunt ≠ 1
Corectia:
𝑟= 1 0 0 0 1 1 0 0 0 1 0 1 0 0 1
MSB

𝑒= 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0
MSB
=
𝑣= 1 0 1 1 1 0 0 0 0 1 0 1 0 0 1
MSB
2. Coduri RS (Reed-Solomon)
Pb. 3 Fie un cod RS(n,m) = RS(7,5) in care cuvantul de informatiei este i = 1 2 3 4 5,
MSC
Determinati:
a) g(x) pentru p =1
b) cuvantul de cod corespunzator
c) distanta de cod
n = 7 si m = 5 => k’ = 2 => t =k’/2 = 1
n = 7 si 𝑛 = 2𝑘 − 1 => k=3 => GF(23)

0 1 𝛼 𝛼2 𝛼3 𝛼4 𝛼5 𝛼6
GF 23 = , 𝛼7 = 1
012 3 4 5 6 7
a) Determinarea lui g(x) pentru p = 1
𝑔 𝑥 = 𝑥 + 𝛼 𝑝 𝑥 + 𝛼 𝑝+1 = 𝑥 + 𝛼 𝑥 + 𝛼 2 = 𝑥 2 + 𝛼 2 𝑥 + 𝛼𝑥 + 𝛼 3 = 𝑥 2 + 𝛼 4 𝑥 + 𝛼 3
Sau putem nota 𝑔 𝑥 = 𝑥 2 + 5𝑥 + 4 daca inlocuim elementele de GF cu valori zecimale
b) cuvantul de cod corespunzator
Pas1. scrierea polinomului 𝑖 𝑥
i= 1 2 3 4 5 ⇒ 𝑖 𝑥 = 𝑥 4 + 2𝑥 3 + 3𝑥 2 + 4𝑥 + 5 ⇒ 𝑖 𝑥 = 𝑥 4 + 𝛼𝑥 3 + 𝛼 2 𝑥 2 + 𝛼 3 𝑥 +
MSC
𝛼4
𝑘 ′
Pas2. calcularea lui 𝑥 ∙𝑖 𝑥

𝑥 𝑘 ∙ 𝑖 𝑥 = 𝑥 2 𝑥 4 + 𝛼𝑥 3 + 𝛼 2 𝑥 2 + 𝛼 3 𝑥 + 𝛼 4 = 𝑥 6 + 𝛼𝑥 5 + 𝛼 2 𝑥 4 + 𝛼 3 𝑥 3 + 𝛼 4 𝑥 2

Pas3. impartirea lui 𝑥 𝑘 ∙ 𝑖 𝑥 la 𝑔 𝑥 pentru a obtine restul

𝑥 6 + 𝛼𝑥 5 + 𝛼 2 𝑥 4 + 𝛼 3 𝑥 3 + 𝛼 4 𝑥 2 𝑥 2 + 𝛼4𝑥 + 𝛼3

𝑥 6 + 𝛼4𝑥 5 + 𝛼3𝑥 4 𝑥 4 + 𝛼 2 𝑥 3 + 𝛼𝑥 2 + 𝛼 3 𝑥 + 1

/ 𝛼2𝑥 5 + 𝛼5𝑥 4 + 𝛼3𝑥 3 + 𝛼 4𝑥 2


𝛼 2𝑥 5 + 𝛼 6𝑥 4 + 𝛼 5𝑥 3
/ 𝛼𝑥 4 + 𝛼 2 𝑥 3 + 𝛼 4 𝑥 2
𝛼𝑥 4 + 𝛼 5 𝑥 3 + 𝛼 4 𝑥 2
/ 𝛼 3𝑥 3
𝛼 3𝑥 3 + 𝛼 7𝑥 2 + 𝛼 6𝑥
/ 𝑥 2 + 𝛼6𝑥
𝑥 2 + 𝛼4𝑥 + 𝛼3
/ 𝛼3𝑥 + 𝛼3
Calcule
𝛼 + 𝛼4 = 𝛼 + 𝛼2 + 𝛼 = 𝛼2 𝛼2 + 𝛼3 = 𝛼5
Pas4. aflarea lui 𝑣

𝑘′ 𝑥 𝑘 ∙𝑖 𝑥
𝑣 𝑥 =𝑥 ∙𝑖 𝑥 + 𝑟𝑒𝑠𝑡𝑢𝑙 = 𝑥 6 + 𝛼𝑥 5 + 𝛼 2 𝑥 4 + 𝛼 3 𝑥 3 + 𝛼 4 𝑥 2 + 𝛼 3 𝑥 + 𝛼 3
𝑔 𝑥

𝑣= 1 2 3 4 5 4 4
MSC
P4. Pentru codul RS(7,3) fie cuvantul receptionat r = 0 5 2 4 4 3 1 Determinati cuvantul
MSC
de cod din care provine.
Solutie:
n = 7, m = 3 => k’ = n-m = 4
t = k’/2 = 2
𝑛 = 7 = 2𝑘 − 1 ⇒ 𝑘 = 3 ⇒ 𝐺𝐹(23 ), 𝛼 7 = 1
0 1 𝛼 𝛼2 𝛼3 𝛼4 𝛼5 𝛼6
GF(23 ) =
012 3 4 5 6 7
Aflam polinomul corespunzator lui r
𝑟 𝑥 = 𝛼 4 𝑥 5 + 𝛼𝑥 4 + 𝛼 3 𝑥 3 + 𝛼 3 𝑥 2 + 𝛼 2 𝑥 + 1
Pas 1. Determinare sindroamele erorii (Si, i =1,2t)
𝑺1 = 𝒓 𝜶 = 𝛼 3
𝑺2 = 𝒓 𝜶2 = 𝛼 5
𝑺3 = 𝒓 𝜶3 = 𝛼 5
𝑺4 = 𝒓 𝜶4 = 0 ⇒ 𝑆 = 𝛼 3 α5 𝛼 5 0 ≠ 0 => avem erori
Pas 2. Determinarea coeficientilor polinomului erorri 𝜎𝑖
𝜎1 = 𝑆1 𝑆4 + 𝑆3 𝑆2 / 𝑆22 + 𝑆1 𝑆3 = 𝛼 5 𝛼 5 / 𝛼 10 + 𝛼 3 𝛼 5 = 𝛼 3

𝜎2 = 𝑆2 𝑆4 + 𝑆32 / 𝑆22 + 𝑆1 𝑆3 = 𝛼 10 / 𝛼 10 + 𝛼 3 𝛼 5 = 𝛼 3
Pas 3. Cautarea Chien
𝑗 = 1 𝜎1 𝛼1⋅1 + 𝜎2 𝛼 2⋅1 = 1 deci pozitia n−j = 7−1 = 6 este eronata(MSC): 𝑋1 = 𝛼 6
𝑗 = 2 𝜎1 𝛼1⋅2 + 𝜎2 𝛼 2⋅2 = 𝛼 2 ≠ 1
𝑗 = 3 𝜎1 𝛼1⋅3 + 𝜎2 𝛼 2⋅3 = 𝛼 6 + 𝛼 9 = 1 deci pozitia n − j = 7 −3 = 4 este eronata: 𝑋2 = α4
𝑗= 4 𝜎1 𝛼1⋅4 + 𝜎2 𝛼 2⋅4 ≠ 1
𝑗= 5 𝜎1 𝛼1⋅5 + 𝜎2 𝛼 2⋅5 ≠ 1
𝑗= 6 𝜎1 𝛼1⋅6 + 𝜎2 𝛼 2⋅6 ≠ 1
𝑗= 7 𝜎1 𝛼1⋅7 + 𝜎2 𝛼 2⋅7 ≠ 1
Pas 4. Calcularea valorilor erorilor
𝑆1 𝑋2 +𝑆2 𝑆1 𝑋1 +𝑆2
𝑌1 = = 𝛼2 si 𝑌2 = = 𝛼2
𝑋1 𝑋2 +𝑋22 𝑋1 𝑋2 +𝑋22
Pas 5.
𝑣6 = 𝑟6 ⊕ 𝑌1 = 0 ⊕ 𝛼 2 = 𝛼 2 ⇒ 3
𝑣4 = 𝑟4 ⊕ 𝑌2 = 𝛼 ⊕ 𝛼 3 = 𝛼 + 𝛼 + 1 = 1 ⇒ 1

Cuvantul de cod corect este: v = 3 5 1 4 4 3 1


MSC

S-ar putea să vă placă și