
ridsolomon
.pdfTj = ∑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