Ташатов Н.Н. Евразийский национальный университет им. Л.Н. Гумилева, г. Астана СИСТЕМАТИЧЕСКОЕ КОДИРОВАНИЕ КОДОВ РИДА – СОЛОМОНА С ПОМОЩЬЮ (n – k)-РАЗРЯДНОГО РЕГИСТРА СДВИГА Отображение элементов описывается уравнением поля в базисные элементы, которое , (1) можно показать с помощью схемы линейного регистра сдвига с обратной связью (linear feedback shift register – LFSR). Эта схема показана на рисунке 1. Рисунок 1 – Отображение элементов поля в базисные элементы с помощью схемы линейного регистра сдвига с обратной связью, построенного на примитивном многочлене При т = 3 схема генерирует 2т – 1 ненулевых элементов поля. Как и в случае двоичных циклических кодов, обратная связь, показанная на рисунке 1, соответствует коэффициентам многочлена f(Х) = 1 +Х + Х3. Как показано на рисунке 2, кодирование последовательности из 3 символов в систематической форме на основе кода Рида-Соломона (7, 3), определяемого генератором g(X) из уравнения , (2) требует реализации регистра LFSR [1]. Видно, что элементы умножителя на рисунке 2, взятые справа налево, соответствуют коэффициентам многочлена в уравнении (2). Этот процесс кодирования является недвоичным аналогом циклического кодирования. Здесь, в соответствии с уравнением cверточных кодов Ридаm Соломона (n, k), ненулевые кодовые слова образованы 2 – 1 = 7 символами, и каждый символ состоит из m = 3 бит [1, 2]. Рисунок 2 – Кодер линейного регистра сдвига с обратной связью LFSR для кода (7, 3) Здесь приведен пример недвоичного кодирования, так что каждый разряд регистра сдвига, изображенного на рисунке 2, содержит 3-битовый символ. Т.к. каждый коэффициент является 3-битовым, то они могут принимать одно из 8 значений. Недвоичные операции, осуществляемые кодером, показанным на рисунке 2, создают кодовые слова в систематической форме, так же как и в двоичном случае [3]. Эти операции определяются следующими шагами. 1. Переключатель 1 в течение первых k тактовых импульсов закрыт, для того чтобы подавать символы сообщения в (n – k)-разрядный регистр сдвига. 2. Переключатель 2 в течение первых k тактовых импульсов находится в нижнем положении, что обеспечивает одновременную передачу всех символов сообщения непосредственно на регистр выхода (на рисунке 2 это не показано). 3. После передачи k-го символа на регистр выхода, переключатель 1 открывается, а переключатель 2 переходит в верхнее положение. 4. Остальные (n – k) тактовых импульсов очищают контрольные символы, содержащиеся в регистре, подавая их на регистр выхода. 5. Общее число тактовых импульсов равно n, и содержимое регистра выхода является полиномом кодового слова , где р(Х) представляет собой кодовые символы, а m(Х) – символы сообщения в виде многочленов. Рассмотрим пример, закодировав сообщение из трех символов с помощью кода Рида-Соломона (7,3), генератор которого определяется уравнением . Крайний правый символ здесь является самым первым, и крайний правый бит также является самым первым. Последовательность действий в течение первых k = 3 сдвигов в цепи кодирования на рисунке 2 будет иметь следующий вид. Очередь ввода Такт 0 Содержимое регистра 0 0 0 0 Таблица 1 Обратная связь 1 Видно, что 2 3 после 0 третьего такта регистр содержит 4 контрольных символа, и . Затем переключатель 1 переходит в верхнее положение, и контрольные символы, содержащиеся в регистре, подаются на выход. Поэтому выходное кодовое слово, записанное в форме многочлена, можно представить в следующем виде: , (3) Процесс проверки содержимого регистра во время разных тактов несколько сложнее, чем в случае бинарного кодирования. Здесь сложение и умножение элементов поля должны выполняться согласно таблицам 2 и 3. Таблица 2. Таблица сложения для GF(8) при f(Х) = 1 + X + X3 0 0 0 0 0 0 0 Таблица 3. Таблица умножения для GF(8) при f(Х) = 1 + X + X3 Корни генератора многочлена g(X) должны быть и корнями кодового слова, генерируемого g(X), т.к. правильное кодовое слово имеет следующий вид: U(X) = m(X)g(X). (4) Следовательно, произвольное кодовое слово, выражаемое через корень генератора g(X), должно давать нуль. Покажем, действительно ли многочлен кодового слова в уравнении (3) дает нуль, когда он выражается через какойлибо один из четырех корней g(X). Другими словами, это означает проверку следующего: . Выполнив вычисления для разных корней, получим следующее: Эти вычисления показывают, что кодовое слово, выражаемое через любой корень генератора g(X), должно давать нуль. СПИСОК ЛИТЕРАТУРЫ 1. Скляр Б. Цифровая связь. Теоретические основы и практическое применение. Изд. 2-е, испр.: Пер. с англ. – Издательский дом «Вильямс», 2004. – 1104 с. ил. 2. Садыков А.А., Ташатов Н.Н., Бекманова Г.Т. Корректирующее (восстанавливающее) кодирование информации. Коды Рида-Соломона и вероятность появления ошибок. // Вестник ЕНУ им. Л.Н. Гумилева. – 2007. - №2. – с.69-74. 3. Ташатов Н.Н. Кодирование циклических кодов в систематической форме. // Материалы II Международной научно-практической конференции «Научный прогресс на рубеже тысячелетий - 2007», 1-15 июня 2007г., Днепропетровск (Украина) – Белгород (Россия), т.12, с. 12-14.