3.
Циклический код обнаруживает все
одиночные и двукратные ошибки, если
разрядность кода
не больше длины цикла
используемого порождающего многочлена,
т.е.
.
Под длиной цикла многочлена понимают
минимальный показатель степени двучлена
,
при котором этот двучлен делится без
остатка на образующий многочлен
.
4.
Циклический код с многочленом
степени
обнаруживает все групповые ошибки
длительностью в
разрядов и менее. Любая групповая ошибка
в
разрядов описывается многочленом
степени
,
т.е.
.
Многочлен же степени
на многочлен степени
не делится и, таким образом, ошибка
обнаруживается.
5.
Циклический код с порождающим многочленом
степени
не обнаруживает
часть ошибок
-й
кратности.
6.
Циклический код с порождающим многочленом
степени
не обнаруживает
часть ошибок более
-й
кратности.
Анализируя перечисленные свойства циклического кода, можно увидеть, что способности кода по обнаружению и исправлению ошибок полностью определяются выбранным образующим многочленом .
При
обнаружении ошибок стандартные многочлены
имеют вид:
,
при длине кодовой комбинации
,
или
,
при длине кодовой комбинации
;
,
при длине кодовой комбинации
.
Разработан ряд методик по выбору порождающего многочлена . В литературе коды называют по фамилиям ученых, предложивших ту или иную методику. Так получили свое название коды Боуза-Чоудхури-Хоквингема (БЧХ), коды Рида-Соломона, коды Файра и др.
Укороченные циклические коды
Циклические
коды предполагают равенство разрядности
формируемой кодовой комбинации длине
цикла порождающего
многочлена, т.е.
.
Однако, это требование на практике
трудно выполнимо, поскольку разрядность
комбинаций, выдаваемых источником
информации, зачастую отличается от
целесообразной, в результате чего
.
В этих случаях циклический код
преобразуют
и используют так называемый укороченный
циклический код, который получается из
циклического путем исключения в нем
определенного числа разрядов.
При
этом число столбцов проверочной матрицы
уменьшается на величину, равную числу
исключаемых информационных разрядов,
причем исключаются столбцы с наивысшими
номерами. Свойства кода по обнаружению
ошибок при этом не изменяются.
Вероятности ошибочного декодирования циклических кодов
Вектором ошибки называется двоичная последовательность длины , в которой единицы стоят на позициях символов принятых с ошибкой. Отсюда вероятность не обнаружения ошибки заданным кодом равна вероятности появления в заданном дискретном канале векторов ошибок, совпадающих с кодовыми словами
Относительно
просто эти вероятности могут быть
рассчитаны для двоичного симметричного
канала без памяти. В таком канале каждый
двоичный символ с некоторой фиксированной
вероятностью
принимается правильно и с вероятностью
изменяется помехой на обратный.
Передача/прием каждого символа полагается
событием независимым (канал без памяти).
Если
по такому каналу передается кодовое
слово длины
,
то вероятность
того, что не произойдет ни одной ошибки,
равна
.
Вероятность
того, что
будет одна ошибка в заданном символе,
равна
.
Вероятность того, что слово на выходе канала будет отличаться от переданного слова в заданных разрядах, т.е. вектор ошибок содержит единиц, равна
.
Вероятность того, что слово на выходе канала будет отличаться от переданного слова в любых разрядах, равна
,
где
—
число сочетаний из
по
.
Предположим,
что некоторый линейный код (5,3) содержит
одно нулевое слово (как всякий линейный
код), два слова, вес которых равен 2,
четыре слова — весом 3, одно слово —
весом 4 (всего
слов).
Вероятность необнаруживаемой этим кодом ошибки равна вероятности появления в ДСК векторов ошибок, совпадающих с кодовыми словами, т.е.:
В
режиме исправления ошибок декодер
вычисляет остаток
от деления
принятой последовательности
на
.
Этот остаток
называют синдромом.
Принятый
полином
представляет
собой сумму по модулю 2 переданного
слова
и вектора
ошибок
:
.
Тогда
синдром
,
так как по
определению циклического кода
.
Некоторому синдрому
может быть
поставлен в соответствие определенный
вектор ошибок
.
Тогда
переданное слово
находят, складывая
.
Однако
один и тот же синдром может соответствовать
различным
векторам ошибок. Предположим, синдром
соответствует вектору ошибок
.
Но и все векторы ошибок, равные сумме
,
где
- любое кодовое слово, будут давать тот
же синдром. Поэтому, поставив в соответствие
синдрому
вектор ошибок
,
мы будем
осуществлять правильное декодирование
в случае, когда действительно вектор
ошибок равен
,
во всех остальных
случаях декодирование будет ошибочным.
Для уменьшения вероятности ошибки декодирования из всех возможных векторов ошибок, дающих один и тот же синдром, следует выбирать в качестве исправляемого наиболее вероятный в заданном канале.
Например, для двоичного симметричного канала, в котором вероятность ошибочного приема двоичного символа существенно меньше вероятности правильного приема, вероятность появления векторов ошибок уменьшается с увеличением их веса . В этом случае следует исправлять в первую очередь вектор ошибок меньшего веса.
Если
кодом могут быть исправлены только все
векторы ошибок веса
и меньше, то любой вектор ошибки веса
от
до п будет
приводить к ошибочному декодированию.
Вероятность
ошибочного декодирования будет равна
вероятности
появления
векторов ошибок веса
и больше в заданном канале. Для ДСК эта
вероятность будет равна
Общее
число различных векторов ошибок, которые
может исправлять циклический код,
равно числу ненулевых синдромов
.
Лабораторная работа выполняется на ПЭВМ. Программа содержит несколько страниц:
«Установки» — содержит различные установки и панель формирования индивидуального задания;
«Читайте» — содержит разделы: цель работы, задание, содержание отчета и контрольные вопросы. Раздел «Задание» содержит лабораторное задание и ме тодику выполнения каждого пункта;
• «Схема» — содержит схему, иллюстрирующую процесс кодирования и декодирования. На этой странице имеется возможность вводить различные кодовые комбинации, векторы ошибок и наблюдать процесс кодирования и декодирования. Также эта страница содержит таблицу соответствия векторов ошибоки соответствующих им синдромов;
• «Таблица» — содержит таблицу разрешенных кодовых комбинаций используемого кода, таблицу расстояний Хэмминга для всех пар кодовых комбинаций и таблицу весов кодовых комбинаций.
Имеется
возможность изменять порождающий
полином, используемый ДЛЯ кодирования.
Обратите внимание, что только полиномы
1011 и 1101 обеспечивают коду (7,4) требуемые
помехоустойчивые свойства (
= 3).
Выполнять работу рекомендуется при полиноме 1011 (установлен по умолчанию). Это связано с тем, что тестовые вопросы для защиты этой лабораторной работы составлены для полинома 1011;
«Формулы» — содержит некоторые формулы, используемые в лабораторной работе;
«Статистика» — демонстрирует использование различных способов поме хоустойчивого кодирования для обнаружения и исправления ошибок.
Функциональная схема лабораторного макета приведена на рис. 8.2. Информационное слово длиной четыре разряда (т = 4) задается нажатие кнопок на панели «Источник».
Кодер формирует кодовую комбинацию разделимого циклического кода (7,4), путем добавления к четырем информационным трех проверочных разрядов. Проверочные разряды образуются в результате умножения на х3 и деления полупившейся комбинации на порождающий полином 1011 (g(х) = х3+х+1). Остаток от деления будет представлять проверочные разряды, которые приписываются справа от информационных.
Рис. 4.2. Функциональная схема лабораторной установки
Кодер выдает кодовое слово F(х) длиной n = 7. соответствующее информационному слову P(х) длиной т = 4, поданному на вход кодера.
Семиразрядная кодовая комбинация (вектор F(х)) с выхода кодера подается на вход канала. В канале передаваемая кодовая комбинация складывается с семиразрядным вектором ошибки Е(х). Сложение производится поразрядно по модулю 2. Например, если комбинация на входе канала равна 1011000, а вектор ошибки равен 0010001, то комбинация на выходе канала будет равна 1001001. Таким образом, единица в j-м разряде в векторе ошибки приводит к ошибке (инверсии) j-го разряда в кодовой комбинации на выходе канала.
Вектор ошибки задается на панели «Источник ошибок». Там же имеются кнопки для циклического сдвига вектора ошибки и для его инверсии.
С выхода канала принятая кодовая комбинация подается на входы декодеров.