// Доклады НАН РК. Серия физ.-мат. наук. – 2008. – № 1. – С.5-8 УДК 681.3.07 Н.Н. Ташатов ДЕКОДИРОВАНИЕ КОДА РИДА – СОЛОМОНА Евразийский национальный университет им. Л.Н. Гумилева, г. Астана Представлена академиком НАН РК М.О. Отелбаевым Аннотация В статье рассмотрены вопросы возможности кодирования в систематической форме тестовое сообщение, вычисление синдрома, локализация ошибки и проверка надежности, значения ошибок и исправление принятого многочлена с помощью найденного многочлена ошибок. Макалада тестік хабарларды, синдромды есептеуді, қате локализациясы мен сенімділіке тексеруді, қате мәнін анықтауды жүйелі түрде қалай кодтауға болатындығы және табылған қателер көпмүшелігінің көмегімен қабылданған көпмүшені түзету мәселесі қарастырылады. The article include possibilities of coding the test message in systematic form, calculation of a syndrome, localization of a mistake and check of reliability, values of mistakes and correction of the accepted polynom with founding polynom of mistakes. С помощью кода Рида-Соломона (7, 3) тестовое сообщение можно кодировать в систематической форме. В результате получаем многочлен кодового слова, который описывается уравнением [1, 2]. U(X ) 6 un X n , n0 U ( X ) 0 2 X 4 X 2 6 X 3 1X 4 3 X 5 5 X 6 (100) (001) X (011) X (101) X (010) X (110) X (111) X . 2 3 4 5 6 (1) Пусть в ходе передачи это кодовое слово подверглось искажению: 2 символа были приняты с ошибкой. При использовании 7-символьного кодового слова модель ошибки можно представить в виде многочлена следующим образом: e( X ) 6 en X n . (2) n0 Пусть двухсимвольная ошибка будет такой, что e( X ) 0 0 X 0 X 2 2 X 3 5 X 4 0 X 5 0 X 6 (000) (000) X (000) X 2 (001) X 3 (111) X 4 (000) X 5 (000) X 6 , (3) т.е. контрольный символ искажен 1-битовой ошибкой (представленной как 2 ), а символ сообщения 3-битовой ошибкой (представленной как 5 ). В этом случае принятый многочлен поврежденного кодового слова r(Х) представляется в виде суммы многочлена переданного кодового слова и многочлена модели ошибки r(Х) = U(X) + e(X). Сложим (1) и (3), получим r ( X ) (100 ) (001) X (011) X 2 (100 ) X 3 (101) X 4 (110 ) X 5 (111) X 6 0 2 X 4 X 2 0 X 3 6 X 4 3X 5 5X 6. (4) Имеем четыре неизвестных: два относятся к расположению ошибки, а два касаются ошибочных значений. Т.к. в данном примере имеется четыре неизвестных, нам нужно четыре уравнения, чтобы найти их. Вычисление синдрома. Синдром – это результат проверки четности, выполняемой над r, чтобы определить, принадлежит ли r набору кодовых слов. Если r является членом набора, то синдром S равен 0. Любое ненулевое значение S означает наличие ошибок. Синдром S состоит из n – k символов Si (i = 1, ..., n – k ). В коде (7, 3) имеется по четыре символа в каждом векторе синдрома. Их значения вычисляются из принятого многочлена r(Х). Вычисления облегчаются благодаря самой структуре кода, определяемой уравнением. U(X) = m(X)g(X). (5) Из этой структуры видно, что каждый правильный многочлен кодового слова U(X) является кратным генератору многочлена g(X). Значит корни g(X) также должны быть корнями U(X). Т.к. r(Х) = U(X) + e(X), то r(Х), вычисляемый с каждым корнем g(X), должен давать 0, если только r(Х) будет правильным кодовым словом. Любые ошибки приведут в итоге к ненулевому результату в одном или более случае. Символы синдрома вычисляются следующим образом: Si r ( X ) X i r ( i ), i 1,2,, n k . (6) Из (3) следует, что r(Х) содержит 2-символьные ошибки. Если r(Х) окажется правильным кодовым словом, то все символы Si будут равны нулю. Найдем четыре символа синдрома S1 r ( ) 0 3 6 3 10 8 11 , 0 3 6 3 2 1 4 3 S 2 r ( 2 ) 0 4 8 6 14 13 17 0 4 1 6 0 6 3 5, S3 r ( 3 ) 0 5 10 9 18 18 23 , 0 5 3 2 4 4 2 6 S 4 r ( 4 ) 0 6 12 12 22 23 29 0. 0 6 5 5 1 2 1 (7) (8) (9) (10) Результат вычисления показывает, что принятое кодовое слово содержит введенную нами ошибку, т.к. S 0 . Локализация ошибки и проверка надежности. Допустим, в кодовом слове имеется ошибок, расположенных на позициях X j1 , X j2 ,, X j . Тогда, определяемый уравнениями (2) и (3), многочлен ошибок запишем следующим образом: e( X ) e j1 X j1 e j2 X j2 e j X j . (11) Индексы 1,2,, обозначают 1-ю, 2-ю, ..., -ю ошибки, а индекс j – расположение ошибки. Для коррекции искаженного кодового слова нужно определить каждое значение ошибки e j l и ее расположение X где l 1,2,, . Обозначим номер локатора jl , ошибки через l jl . п – k = 2t символа синдрома, подставляя i , в принятый Вычислим многочлен при i = 1, 2, ..., 2t. S1 r ( ) e j1 1 e j2 2 e j S 2 r ( 2 ) e j1 12 e j2 22 e j 2 (12) S 2t r ( 2t ) e j1 12t e j2 22t e j 2t Имеем систему из 2t уравнений c 2t неизвестными (t значений ошибок и t расположений). Методика, позволяющая решить систему уравнений (12), называется алгоритмом декодирования Рида-Соломона. Многочлен локатора ошибок определим следующим образом: σ ( X ) (1 1 X )(1 2 X )(1 X ) 1 1 X 2 X 2 X . 1 , 1 1 2 ,, 1 (13) – корни σ (X ) . Величины, обратные корням σ (X ) , будут представлять номера расположений моделей ошибки е(Х). Воспользуемся авторегрессионной техникой моделирования [4]. Составим из синдромов матрицу, в которой первые t синдромов будут использоваться для предсказания следующего синдрома: S1 S2 S3 St 1 S2 S3 S4 St St 1 St St S t 1 S t 1 S 2 t 3 St 2 S 2t 2 σ t S t 1 σ S S t 1 t 1 t 2 . (14) S 2t 2 σ 2 S 2t 1 S 2t 1 σ1 S 2t St Для кода (7, 3) с коррекцией двухсимвольных ошибок матрица имеет размерность 2 2 , тогда модель запишется следующим образом: S 2 2 S 3 , S 3 1 S 4 (15) 3 5 2 6 5 . 6 0 1 (16) S1 S 2 Для нахождения коэффициентов 1 и 2 , решим (16) в матричном 3 5 6 2 виде АХ = В, X A1B , где A 5 , X , B . 6 1 0 3 5 det A det 5 3 6 5 5 9 10 2 3 5 . 6 A 1 1 A11 det [ A] A12 6 6 A21 5 5 5 2 5 5 3 3 A22 8 7 1 0 7 . 5 0 5 2 1 0 6 7 0 6 6. 0 5 0 1 (17) Из уравнений (13) и (17) следует σ( X ) 0 1 X 2 X 2 0 6 X 0 X 2 . (18) Корни σ (X ) являются обратными числами к положениям ошибок. Определим эти корни путем полной проверки многочлена σ (X ) со всеми элементами поля. Любой элемент X, который дает σ (X ) 0 , является корнем и позволяет определить расположение ошибки. σ ( 0 ) 0 6 0 6 0 σ ( 1 ) 2 7 0 2 0 σ ( 2 ) 4 8 0 6 0 σ ( 3 ) 6 9 0 0 ОШИБКА σ ( 4 ) 8 10 0 0 ОШИБКА σ ( 5 ) 10 11 0 2 0 σ ( 6 ) 12 12 0 0 0 Из (13) видно, что из σ ( 3 ) 0 σ ( 4 ) 0 1 l 1 4 1 l 3 l 1 3 4 , а из 3 , где l и l это 1-я и 2-я ошибки. Многочлен ошибок имеет следующим вид: e ( X ) e j1 X j1 e j2 X j2 . (19) Мы нашли две ошибки на позициях 3 и 4 . Индексы номеров расположения ошибок является произвольной. Значения ошибок. Для нахождения значений ошибок е1 и е2, связанных с позициями 1 3 и 2 4 , используем любое из четырех синдромных уравнений. Запишем S1, и S2 из уравнения (12). S1 r ( ) e11 e2 2 S 2 r ( 2 ) e112 e2 22 . (20) В матричной форме уравнение (20) выглядит следующим образом: 1 2 1 2 e1 S1 , 22 e2 S 2 (21) 3 4 e1 3 . 6 8 e 5 2 (22) Решая (22) находим значения ошибок е1 и е2 e1 2 5 3 5 10 5 3 2 . e 0 4 5 3 9 3 2 5 2 (23) Исправление принятого многочлена с помощью найденного многочлена ошибок. Из (19) и (23) находим многочлен ошибок. eˆ( X ) e j1 X j1 e j2 X j2 2X 3 5X 4 . (24) Данный алгоритм восстанавливает принятый многочлен, выдавая в итоге предполагаемое переданное кодовое слово и, в конечном счете, декодированное сообщение. Uˆ ( X ) r ( X ) eˆ( X ) U ( X ) e ( X ) eˆ( X ) . (25) r ( X ) (100) (001) X (011) X 2 (100) X 3 (101) X 4 (110) X 5 (111) X 6 eˆ( X ) (000) (000) X (000) X 2 (001) X 3 (111) X 4 (000) X 5 (000) X 6 Uˆ ( X ) (100) (001) X (011) X 2 (101) X 3 (010) X 4 (110 ) X 5 (111) X 6 Т.к. символы сообщения содержатся в крайних правых k = 3 символах, декодированным будет следующее сообщение [5]: 010 . 110 111 1 3 5 СПИСОК ЛИТЕРАТУРЫ 1 Скляр Б. Цифровая связь. Теоретические основы и практическое применение. Изд. 2-е, испр.: Пер. с англ. – Издательский дом «Вильямс», 2004. – 1104 с. ил. 2 Ташатов Н.Н. Систематическое кодирование кодов Рида – Соломона с помощью (n – k)-разрядного регистра сдвига // Materialy III miedzynarodowej naukowipraktycznej konferencji «Wiadomosci naukowej mysli - 2007», 1-15 listopada 2007 roku, tym 11, Przemysl, Nauka i studia, s. 53-57. 3 Ташатов Н.Н. Систематические линейные блочные коды с контролем четности // Вестник ПГУ им. С.М. Торайгырова. – 2007. – № 1. – с. 123-135 4 Blahut R.E. Theory and Practice of Error Control Codes. Addison – Wesley Publishing Co., Reading, Massachusetts, 1983. 5 Reed – Solomon Codes and Their Applications, ed. Wicker S.B. and Bhargava V.K. IEEE Press, Piscataway, New Jersey, 1983. ЕНУ им. Л.Н. Гумилева г. Астана Поступила