- •Лабораторная работа № 3 Коды Рида-Соломона.
- •1. Рабочее задание
- •2. Подготовка и проведение компьютерного эксперимента.
- •3. Обработка экспериментальных данных.
- •4. Методические указания.
- •4.1. Определение параметров и порождающего многочлена кода рс.
- •4.2. Кодирование (формирование разрешённой комбинации кода).
- •4.3. Декодирование принимаемой кодовой комбинации.
- •Контрольные вопросы
- •Литература
- •Приложение
4. Методические указания.
4.1. Определение параметров и порождающего многочлена кода рс.
Как известно [1], параметры кода РС удовлетворяют следующим соотношениям:
где
− общее число недвоичных символов в
блоке кода;
− число информационных символов;
− число проверочных символов;
− исправляющая способность кода
(выраженная в количестве недвоичных
символов);
− минимальное кодовое расстояние кода
.
При этом порождающий многочлен
определяется из выражения
, (1)
где
− примитивный элемент поля
.
Перемножение двучленов в формуле (2)
выполняется по правилам поля
.
При выполнении лабораторной работы
необходимые вычисления целесообразно
производить с использованием возможностей
программного пакета Matlab
в интерактивном режиме.
Для иллюстрации
изложенного рассмотрим следующий
пример. Определим значение порождающего
многочлена для построения кода РС, в
каждом символе которого содержится 4
двоичных элемента (т.е. с
),
обеспечивающего
.
При этом имеем:
.
Полиномы над полем
,
соответствующие фигурирующим в формуле
(1) сомножителям, в командном окне системы
Matlab
задаются как [2]
;
;
;
;
;
.
Отметим, что при
задании сомножителей-полиномов
использовалось представленное в
приведённой [3] табл. П.3 соответствие
между степенями примитивного элемента
поля
(первая слева колонка таблицы) и их
десятичными эквивалентами (первая
справа колонка таблицы). При выполнении
данной лабораторной работы следует
воспользоваться соотношениями,
характеризующими поле
,
которые приведёны в табл. П.2 настоящих
методических указаний.
Умножение полиномов
над конечным полем осуществляется с
помощью команды
,
и записывается в виде:
.
Поскольку в рассматриваемом случае
нужно перемножить не два, а шесть
многочленов, результат также получаем
с помощью команды
путём
последовательного попарного умножения
отдельных компонент результирующего
произведения, реализуемого в нашем
примере так:
;
;
;
;
.
После выполнения описанных операций в командном окне системы Matlab появляется результат:
,
что соответствует образующему полиному вида:
, (2)
или (после перехода к степенному представления элементов поля (см. приведённую в [3] табл. П.3)):
.
4.2. Кодирование (формирование разрешённой комбинации кода).
Поскольку коды РС
представляют собой подмножество (или
подкласс) кодов БЧХ и являются
систематическими циклическими
кодами, кодирование,
т.е.
формирование кодового слова
,
соответствующего заданной информационной
последовательности
,
в принципе выполняется аналогично
одноимённой процедуре, рассмотренной
в лабораторной работе №2. Определённая
специфика при этом возникает из-за того,
что символы кода РС являются недвоичными
элементами поля
,
выражаемыми через двоичные элементы
последовательности данных, непосредственно
передаваемой в канал связи.
Рассмотрим конкретный пример выполнения
этой операции с использованием
возможностей системы Matlab.
Положим, что необходимо передать двоичную информационную последовательность
,
(3)
используя
рассмотренный выше код РС (15,9) с
исправляющей способностью
,
образующий полином которого задаётся
выражением (2). При этом в каждом символе
кода, представляющем собой элемент поля
,
содержится
двоичных символов передаваемой
последовательности.
С помощью приведённой в [3] табл. П.3
преобразуем заданную двоичную
последовательность
(3) в информационную последовательность
символов
кода РС. Учитывая, что четырём последним
двоичным элементам 1101 последовательности
(3) в табл. П.3
соответствует элемент поля
(или 13 в десятичном представлении, что
получается простым переводом числа
1101
из двоичной системы в десятичную),
последний символ в последовательности
принимаем равным 13 (или
).
Поступая аналогичным образом с остальными
четвёрками двоичных элементов в (3),
убеждаемся, что совокупность знаков
(3) эквивалентна информационной
последовательности символов кода РС
(в десятичном представлении)
. (4)
Данная
последовательность может быть представлена
в виде полинома
.
Также как и в случае двоичного кода БЧХ
[3],
задача кодирования заключается в
преобразовании информационной
последовательности
,
в соответствии с выражением
,
(5)
где
− количество проверочных разрядов кода
,
а
−число
информационных разрядов этого кода.
При
этом многочлен
,
задающий проверочные разряды кода,
определяется из соотношения:
(6)
(т.е
есть остаток (вычет
)
от деления полинома
на
).
В нашем примере
полином над полем
,
соответствующий слагаемому
в сумме (5), в
командном окне системы Matlab
задаётся как
При
записи этой команды был учтён тот факт,
что умножение многочлена
на
эквивалентно добавлению справа
нулей к соответствующей кодовой
комбинации
.
Для
определения задаваемого выражением
(6) остатка
следует воспользоваться командой
,
записав:
.
При
этом предполагается, что результат
вычисления
,
осуществлённого при выполнении
предыдущего пункта задания, остался
активным в командном окне Matlab.
В противном случае перед выполнением
команды
его надо ввести как
.
Первый элемент
возвращаемого этой командой вектора
представляет частное от деления
,
а второй −
−остаток, который и определяет проверочные
разряды кода. Результаты выполнения
этой команды в рассматриваемом примере
выглядят так:
;
. (7)
Искомая
кодовая комбинация
кода РС в соответствии с (4) может быть
определена с использованием команды
.
Получаемый при этом результат имеет
вид:
,
что
эквивалентно «дописыванию» к девяти
информационным разрядам
,
определяемым (4), шести последних разрядов
из (7). Для определения двоичной кодовой
комбинации
,
непосредственно передаваемой в канал,
необходимо
преобразовать найденные проверочные
символы (шести
последних разрядов
из (7)) в их двоичный эквивалент и приписать
их справа к информационной комбинации
,
определяемой (3). После выполнения этих
действий получаем:
.
