Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ridsolomon

.pdf
Скачиваний:
38
Добавлен:
15.03.2015
Размер:
597 Кб
Скачать
☆

Tj = ∑s

pi Si+ j = ∑s

pi ∑t

Yl X ll0 +i+ j−1 + ∑s

pi ∑s

VmUml0 +i+ j−1 =

 

(4.4.9)

it=0

 

is=0

l=1

s

 

i=0 s

m=1

 

t

s

= ∑Yl X ll0 + j−1 ∑pi X li + ∑VmUml0

+ j−1 ∑piUmi = ∑Yl X ll0 + j−1 ∑pi X li ,

 

l=1

 

i=0

 

m=1

i=0

 

 

l=1

i=0

 

гдеиспользованотообстоятельство, что p(Um ) = ∑s

piUmi

= 0 . Врезультате, модифициро-

 

 

 

 

 

 

 

i=0

 

 

 

 

 

ванные компоненты можно записать следующим образом:

 

 

 

 

 

Tj = ∑t

El X ll0 + j−1 , El = Yl ∑s

pi X li = Yl p( X l ).

(4.4.10)

 

 

 

 

l=1

 

 

 

 

i=0

 

 

 

Заметим, что величины Tj

определены для значений j =1, 2,..., d − s −1 .

 

Теперьзадача заключается в том, чтобы, зная модифицированный синдром

T = (T1 ,T2 ,...,Td −s−1 ) ,

определить число ошибок t, их локаторы

X1 , X 2 ,..., X t и их

модифицированныевеличины E1 , E2 ,..., Et . Этузадачуможнорешитьспомощьюлюбого

метода декодирования БЧХ-кода, например, с помощью алгоритма Питерсона- Горенстейна-Цирлера или алгоритма Берлекэмпа-Месси, который будет рассмотрен ниже. В результате будут получены локаторы ошибок X1 , X 2 ,..., X t . Для того, чтобы

найти действительные значения ошибок на позициях, соответствующих локаторам, мы можем воспользоваться вторым соотношением в (4.4.10) и получить:

 

 

 

 

 

 

Y

=

 

El

 

 

, l =1, 2,..., t .

 

 

 

 

 

 

 

(4.4.11)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

l

 

 

p( X l

)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Для отыскания величин искажений V1 ,V2 ,...,Vs

на

стертых

позициях,

мы

можем

воспользоваться теперь уже известными величинами {X l ,Yl ,Um

и S j } и найти решение

системы линейных уравнений (4.4.7):

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

U l0

U l0

...

U l0

 

 

V

 

 

 

S

1

−

(Y X l0

+

... +Y

X l0

)

 

 

 

 

1

 

2

 

s

 

 

 

 

1

 

 

 

 

 

1

1

 

t

t

 

 

 

 

l

+1

l

+1

 

l

+1

 

 

 

 

 

 

l

+1

 

 

l

+1

 

 

 

U10

 

U20

 

...

U s0

 

 

 

V2

 

= S2 −(Y1 X10

 

+

... +Yt X t 0

 

)

.

(4.4.12)

.

 

.

 

.

.

 

 

 

...

 

 

 

 

 

 

 

 

...

 

 

 

 

 

 

 

 

 

U2l0 +s−2

...

Usl0 +s−2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

U1l0 +s−2

 

Vs

 

 

Ss −(Y1 X1l0 +s−1 +

... +Yt X tl0 +s−1 )

 

4.4.4 Метод Форни вычисления величин ошибок и стираний

Какбылопоказановыше, вычислениевеличиношибокистиранийпроисходитпосле того, как определен полином локаторов ошибок на основе знания синдрома или модифицированного синдрома. Если стираний нет, то модифицированные и исходные синдромные компоненты совпадают. Мы видели, что как величины ошибок, так и величины искажений на стертых позициях, находятся посредством решения системы линейныхуравнений. Впервомслучаесистемасостоитиз t уравнений, вовторомслучае

– из s уравнений. Количество операций для решения общей системы линейных уравнений порядка t пропорционально t3 . Оказывается, что число операций можно

уменьшитьпримернодовеличины, пропорциональной t2 , есливоспользоватьсяметодом, предложенным Форни (1965) для алгоритма Питерсона-Горенстейна-Цирлера.

Предположим, чтопринятоесловосодержитошибкиистиранияиобозначимчерез T (x) синдромный полином, T (x) = ∑dj=−1s−1 Tj x j−1 . Определим также полином

Ω(x) = T (x)Λ(x) mod x d −s−1 , называемый полиномом величин ошибок. Очевидно, что

21

полиномвеличиношибокполучаетсяизобычногопроизведениясиндромного полинома иполиномалокаторовошибок Λ(x) = ∏it=1 (1 − xX i ) засчетотбрасываниявсехслагаемых

состепенями d − s −1 ивыше. Используяопределениемодифицированныхсиндромных компонент (4.4.10),

 

 

T

j

= E X l0 + j−1

+... + E

X l0 + j−1

,

 

 

 

 

1 1

 

t

t

 

имеем

 

 

 

 

 

 

 

 

 

 

d −s−1

t

 

 

 

t

 

 

 

Ω(x) = ∑ ∑El X ll0

+ j−1 x j−1 ∏(1 − xX i ) =

 

 

j=1

l=1

 

 

 

i=1

 

 

 

t

d −s−1

 

 

 

t

 

 

= ∑El X ll0

∑

(xX l

) j−1 (1 − xX l )

∏(1 − xX i ) mod xd −s−1.

l =1

 

j=1

 

 

 

i=1,i≠l

 

Сумму в фигурных скобках можно вычислить, используя следующее равенство для любого поля при α ≠1

1 +α +α2 +... +αd −2 = 1 −αd −1 , 1 −α

которое проверяется простым перемножением знаменателя в правой части на сумму в левой. В результате, учитывая, что Ω(x) представляет остаток от деления на xd −s−1 , получим

t

1 −(xX l )

d

−s−1

t

t

t

Ω(x) = ∑El X ll0

 

 

(1 − xX l ) ∏(1 − xX i ) = ∑El X ll0

∏(1 − xX i ) mod xd −s−1.

1 − xX l

 

l=1

 

i=1,i≠l

l=1

i=1,i≠l

Здесь произведено сокращение на 1 − xX l поскольку переменная х будет в дальнейшем принимать значения отличные от Xl−1 . Кроме этого, мы воспользовались тем, что 1 −(xX l )d −s−1 =1mod xd −s−1 . Заметим, что степень полинома Ω(x) равна t-1, где t ≤ (d − s −1) / 2 .

t

Рассмотрим значение полинома Ω(x) в точке X k−1 . Произведение ∏(1 − xX i )

i=1,i≠l

обращается в 0 при подстановке X k−1 , если только k ≠ l . Поэтому

t

Ω( X k−1 ) = Ek X kl0 ∏(1 − X k−1 X i ) . i=1,i≠k

С другой стороны, вычисляя формальную производную полинома Λ(x) по x, получим

d

t

t

Λ(x) = −∑X l ∏(1 − xX i ) .

dx

l =1

i=1,i≠l

Отсюда

t

Λ' ( X k−1 ) = −X k ∏(1 − X k−1 X i ) .

i=1,i≠k

Окончательно мы можем записать для модифицированных величин ошибок следующее соотношение:

Ek = −

Ω( X k−1 )

 

.

(4.4.13)

l

−1

−1

)

 

X k0

 

Λ'( X k

 

 

Наэтапевычисления величиношибокполиномлокаторов Λ(x) =1 + Λ1 x +... + Λt xt уже вычислен, поэтому формальную производную

22

 

 

 

t−1

 

 

Λ' (x) = Λ1

+ Λ3 x2 +... + Λt x

 

, t

−нечетное,

 

 

Λt−1 xt−2 ,

t −четное,

можно легко вычислить. Кроме этого, можно вычислить полином ошибок как произведение по модулю xd −s−1 синдромного полинома T (x) и полинома локаторов ошибок. Поэтому соотношение (4.4.13) можно применить для вычисления величин модифицированных ошибок Ek , k =1,..., t .

Если стираний нет, т.е. s = 0 , то модифицированные и обычные величины ошибок совпадают и на этом декодирование заканчивается. Если же стирания присутствуют, то вычислениянужнопродолжитьстем, чтобыопределитьвеличиныстираний V1 ,V2 ,...,Vs .

Это делается следующим образом. Определим новую тройку полиномов:

 

d −s−1

s

 

 

 

 

R(x) = ∑R j x j−1 , P(x) = ∏(1 − xUi ) , Θ(x) = R(x)P(x) mod xd −s−1 ,

(4.4.14)

 

j=1

i=1

 

 

 

 

где

 

R j = ∑s

 

 

 

 

 

 

ViUil0 + j−1 .

 

 

 

 

 

i=1

 

 

 

 

Величины Vi еще не определены, однако, коэффициенты Rj

можно найти из равенств

R j = S j − ∑t

Yl X ll0 + j−1 , которое следует из формул (4.4.7): S j

= ∑t

Yl X ll0 + j−1 + ∑s

ViUil0 + j−1 .

l =1

 

 

 

l =1

i=1

 

Далее R(x) будет играет роль синдромного полинома, P(x) - полинома локаторов

стиранийи Θ(x)

- полиномавеличинстираний. Онибудутскомбинированытак, какэто

было сделано выше:

 

 

 

 

 

 

 

 

 

 

d −s−1

 

 

 

s

 

d −s−1 s

 

s

Θ(x) = ∑ R j x j

−1 ∏(1 − xUi ) = ∑ ∑VlUll0 + j−1 x j−1 ∏(1 − xUi ) =

 

 

j=1

 

 

 

i=1

 

j=1 l =1

 

i=1

 

 

s

 

 

 

d −s−1

 

s

 

 

 

= ∑VlUll0

∑(xUl ) j−1

(1 − xUl )

∏(1 − xUi ) =

 

 

l=1

 

 

 

j=1

i=1,i≠l

 

s

−(xUl )

d

−s−1

 

 

s

s

 

s

= ∑VlUll0

1

 

 

 

(1 − xUl ) ∏(1 − xUi ) =∑VlUll0

∏(1 − xUi ) mod xd −s−1.

 

1 − xUl

 

 

l =1

 

 

 

i=1,i≠l

l=1

i=1,i≠l

 

 

 

 

s

 

 

 

 

Теперь заметим, что ∏(1 − xUi ) обращается в нуль при подстановке Ui−1 вместо х для

 

 

 

 

i=1,i≠l

 

 

 

 

 

 

 

 

 

 

s

 

 

любого

i, кроме

i = l , поэтому Θ(Uk−1 ) =VkUkl0

∏(1 −Uk−1Ui ) . Замечая

также, что

 

 

 

 

 

 

i=1,i≠k

 

 

d

 

s

t

 

 

 

 

 

P(x) = −∑Ul

∏(1 − xUi ) и, следовательно,

 

 

 

 

 

 

 

 

 

dx

l=1 i=1,i≠l

 

 

 

 

 

 

 

 

 

s

 

 

 

 

 

 

 

P' (Uk−1 ) = −Uk ∏(1 −Uk−1Ui ) ,

 

 

 

 

 

 

i=1,i≠k

 

 

 

окончательно получим

 

 

 

 

 

 

 

 

Vk = −

Θ(Uk−1 )

.

(4.4.15)

 

 

 

 

Ukl0 −1P'(Uk−1 )

 

 

 

 

 

 

 

Пример 4.4.2. Для иллюстрации приведенных выше вычислений продолжим рассмотрение примера 4.4.1. Напомним, что РС-код этого примера имеет длину 7, минимальноерасстояние5 ипорождающийполином g(x) = = x4 +ε2 x3 +ε5 x2 +ε5 x +ε6 ,

где ε - корень полинома f (x) = x3 + x +1 и задается корнями 1,ε,ε2 ,ε3 . Предположим,

23

что передаваемое слово c(x) = x4 +ε2 x3 +ε5 x2 +ε5 x +ε6 и произошла одна ошибка на шестой позиции и два стирания на нулевой и второй позициях. Стертые символы

заменены на нули. Поэтому теперь принятое слово

 

 

r(x) = εx6 + x4

+ε2 x3 +ε5 x .

Декодирование начинается

с

вычисления

 

синдромных

 

компонент

по формуле

S j = r(βl0 + j−1 ) :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S1

= r(1) = ε +1 +ε2

+ε5

= 0,

,

 

 

 

 

 

 

S2 = r(ε) =1 +ε

4

+

ε

5

 

+ε

6

= ε

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S3 = r(ε2 ) = ε6 +ε +ε +1 = ε2 ,

 

 

 

 

 

 

.

 

 

 

 

S4 = r(ε

 

) = ε

 

+ε

 

+ε

 

+ε = ε

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

5

 

 

 

5

 

 

 

 

4

 

 

 

 

2

 

 

 

Локаторыстираний U1

=1,U2 = ε2 , поэтомуполиномлокаторовстираний вычисляется в

соответствии с (4.4.8): p(x) = (x −U1 )(x −U2 ) = x2

 

+ε6 x +ε2 .

Найдем модифицирован-

ные компоненты синдрома по формуле Tj = ∑s

pi Si+ j :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i=0

 

 

 

 

 

 

 

 

 

 

 

 

 

T = p

S + p S

2

+ p

S

3

= ε2

0 +ε6 ε6 +ε2 = ε3 ,

 

1

0

1

1

 

 

 

2

 

 

 

= ε2 ε6

 

+ε6 ε2 +ε2 = ε2 .

 

T = p

S

2

+ p S

3

+ p

 

S

4

 

 

 

2

0

 

1

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Затем нужно решить задачу декодирования БЧХ-кода для заданных синдромных компонент T1 ,T2 . Для этого выполняются следующие шаги.

1.Находитсячислоошибок; tmax =1, M1 = [T1 ], det M1 = T1 ≠ 0 . Следовательночисло ошибок равно 1.

2.Находится коэффициент Λ1 полинома локаторов ошибок. Для этого решается уравнение T1Λ1 = T2 , откуда Λ1 = T2 / T1 =ε6 .

3.Отыскивается корень полинома Λ(x) = Λ1 x +1. Локатор ошибки это величина, обратнаякорню: X1 = Λ1 =ε6 . Таким образом, позицияошибкиопределена – это шестая позиция.

4.Для вычисления величины ошибки найдем Ω(x) = T (x)Λ(x) mod xd −s−1 и

Λ' ( x) =

d

(1 + Λ1 x) = Λ1 = ε6 . Имеем T (x) = ∑dj=−1s−1 Tj x j−1 = T1 +T2 x = ε2 x +ε3

dx

 

 

Ω(x) = (ε2 x +ε3 )(ε6 x +1) = εx2 +ε3 = ε3 mod x2 , т.к. d − s −1 = 5 − 2 −1 = 2 .

Величина модифицированной ошибки находится из уравнения (см.(4.4.13) :

 

Ω( X

−1 ) X

1

 

ε3 ε

6

 

E =

1

 

=

 

= ε3

. Действительная величина ошибки находится

X1l0 Λ' ( X1−1 )

 

1

 

1 ε6

 

 

и

из

уравнения (4.4.10): Y1 = E1 / p( X1 ) = ε3 /(ε12 +ε6 ε6 +ε2 ) = ε. Таким образом,

величина ошибки на шестой позиции равна ε .

5. Далеевычисляютсяискажениянастертыхпозициях, нанулевойинавторой. Для этогоопределяютсяполиномы, указанныев(4.4.14). Имеем, R j = S j − ∑t Yl X ll0 + j−1 ,

 

 

 

 

 

 

 

 

 

 

 

 

 

l =1

 

 

следовательно, R = S +Y X l0

= 0 +ε 1 = ε , R

= S

2

+Y X l0 +1 = ε6 +ε ε6 = ε2

и

 

 

1

1

1

1

2

 

1

1

 

 

 

 

 

 

R(x) = R

x + R = ε2 x +ε . Так как локаторы стираний суть U

1

=1,U

2

= ε2 ,

то

2

 

1

 

 

 

 

 

 

 

 

 

 

 

 

P(x) = (1 − xU1 )(1 − xU2 ) = (1 + x)(1 +ε2 x) = ε2 x2

+ε6 x +1 и

P' (x) = ε6 .

Теперь,

перемножая

R(x) и

P(x) ,

получим Θ(x) = R(x)P(x) = mod xd −s−1

или Θ(x) =

= (ε2 +1)x +ε = ε6 x +ε mod x2 .

Стертые символы определяются с помощью

24

соотношения

(4.4.15):

V = Θ(U −1 ) /U −1P' (U −1 ) = (ε6

+ε) / ε6

= ε5 / ε6 = ε6

и

 

 

 

 

1

1

1

1

 

 

 

V = Θ(U −1 ) /U −1P' (U −1 ) = (ε6ε−2

+ε) / ε−2ε6 = ε2 / ε4 = ε5 .

 

 

2

2

2

2

 

 

 

 

 

 

 

6.Таким образом, мы получили e(x) = εx6 +ε5 x2 +ε6 . Результат декодирования совпадает с исходным кодовым словом:

r(x) − e(x) = εx6 + x4 +ε2 x3 +ε5 x +εx6 +ε5 x2 +ε6 =

=x4 +ε2 x3 +ε5 x2 +ε5 x +ε6 = c(x)

25

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]