= F(x) – это цикловой код.
Т.о. получается два способа образования циклического кода:
1) Путём умножения одной из комбинаций информационной части кода на образующий многочлен:
Q(x) * K(x) = I(x)
2) Умножение заданной комбинации на одночлен и той же степени, что и выбранный образующий многочлен с добалением остатка от деления.
Эти способы являются теоретическим основанием для построения кодирующих и декодирующих устройств.
Образующий многочлен K(x) принимает участие в образовании в каждой кодовой комбинации. Поэтому любой многочлен циклического кода делится на образующий без остатка. Если при делении обнаружен остаток, значит принятая комбинация содержит ошибку.
Для построении циклических кодов обычно используют образующую матрицу.
Способы построения образующей матрицы:
Первый способ
1) Образующая матрица получатся как результат слияния двух матриц: Первая - единичная повёрнутая размером nu.
nu = 4
Дополнительная матрица имеет nu – строк и nk – столбцов. Для определения строк дополнительной матрицы используют результаты делений последней строки первой повёрнутой матрицы на образующий многочлен.
1 0000 … k(x)
В качестве строк дополнительной матрицы используются остатки от деления.
Пример: k(x) = 1011
Рассмотрим процедуру деления
|
1011
01100
1011
1110
1011
1010
1011
001000
1011
В дополнительной матрице используются лишь те остатки, вес которых W = d0 – 1. d0 – минимальное кодовое расстояние. Строки образующей матрицы представляют собой первые комбинации искомого кода. Остальные комбинации получают суммированием различных сочетаниям строк.
Второй способ
Образующая матрица может быть построена в результате умножения элементов единичной матрицы размером nu на образующий многочлен.
Третий способ
Образующая матрица может быть получена в результате циклического сдвига любой комбинации, полученной по способу два.
Декодирование циклических кодов
Остатки от деления полученного вектора на образующий многочлен является опознавательным. Идея обнаружения ошибки заключается в следующем принятая кодовая комбинация делится на образующий многочлен. Если есть остаток, то производится циклический сдвиг принятой кодовой комбинации. Затем сдвинутая комбинация снова делится на образующий многочлен. После ряда циклических сдвигов определяется такое положение, при котором остаток минимален.
Таблица неприводимых двоичных многочленов
Код |
Многочлен |
Код |
Многочлен |
11 |
x + 1 |
10001 |
x4 + 1 |
101 |
x2 + 1 |
10011 |
x4 + x + 1 |
111 |
x2 + x +1 |
10101 |
x4 + x2 +1 |
1001 |
x3 + 1 |
10111 |
x4 + x2 +x + 1 |
1011 |
x3 + x +1 |
11001 |
x4 + x3 + 1 |
1101 |
x3 + x2 + 1 |
11011 |
x4 + x3 + x + 1 |
1111 |
x3 + x2 + x + 1 |
11101 |
x4 + x3 + x3 +1 |
11111 |
x4 + x3 + x2 + x + 1 |
Построение декодированного конкретного циклического кода
Код, исправляющий одиночную ошибку. d0 = 3.
1) Расчёт соотношении между контрольными и информационными символами кода.
nk = log((nu + 1) + log(nu + 1))
2) Выбор образующего многочлена производится по таблице непреводимых двоичных многочленов. Образующий многочлен следует выбирать с минимальным числом элементов. Его степень должна быть больше или равна числу контрольных разрядов. Число элементов должно быть .
Пример: Построим циклический код d0 = 3 для передачи шестнадцати сообщений.
nu = 4 nk = 3
k(x) = 1011 Строим единичную повёрнутую матрицу размером nu
Находим остатки от делений последовательной строкина образующий многочлен.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.