3.3. Кодирование в дискретных каналах с шумами

Теоремы Шеннона о кодировании в дискретных каналах с шумами

Дискретным каналом с шумом называется канал, в котором сигналы А(t) и В(t) (см. рис. 3.1) являются последовательностями символов, однозначная связь между входными и выходными сигналами отсутствует, и поэтому передача символов в канале сопровождается случайными ошибками.

Ответ на вопрос о возможности безошибочной передачи информации дается теоремами Шеннона о кодировании в дискретных каналах с шумами.

Первая и вторая теоремы. Если скорость создания информации Н источником на входе шумящего канала без памяти с пропускной способностью С меньше пропускной способности, то существует такой код, при котором вероятность ошибок на приемном конце сколь угодно мала, а скорость передачи информации сколь угодно близка к скорости ее создания.

Обратная теорема. Если Н>С, то никакой код не сможет сделать вероятность ошибок сколь угодно малой и достигнуть ненадежности, меньшей, чем Н-С. Основной способ повышения помехоустойчивости системы передачи информации - разумное введение избыточности в передаваемый сигнал А (t).

Корректирующие коды

Идея рационального введения избыточности в передаваемый сигнал для борьбы с ошибками в каналах с шумами реализуется применением корректирующих кодов. Так называются коды, которые позволяют обнаруживать, и исправлять ошибки, возникающие в канале. Наиболее часто применяют двоичные равномерные корректирующие коды.

Пусть а1, а2, ..., аs - двоичные кодовые слова длиной в n символов каждое, соответствующие s буквам алфавита источника. Каждое кодовое слово можно формально рассматривать как вектор-строку, соответствующий некоторой точке в n-мерном пространстве.

Расстояние Хэмминга djk между двумя кодовыми словари a1 и а2 равно числу символов, в которых эти слова отличаются одно от другого.

Удобно вычислять расстояние между двумя кодовыми словами, пользуясь операцией суммирования по модулю 2. Правила сложения сведены в следующей таблице, где — знак операции суммирования по модулю 2.

Таблица 3.3.1

00=0

01=1

10=1

11=0

Сложение и вычитание по модулю 2 эквивалентны.

Расстояние между двумя кодовыми словами можно теперь определить как количество единиц в кодовом слове, полученном при суммировании этих слов по модулю 2.

Наименьшее значение расстояния между словами в выбранной системе кодирования называется кодовым расстоянием dкод.

Считают, что в канале произошла q-кратная ошибка, если кодовое слово на выходе канала отличается от кодового слова на его входе ровно в q символах (т. е. расстояние между этими словами-векторами равно q). Таким образом, вектор на выходе канала равен сумме по модулю 2 входного вектора и вектора ошибки.

Код позволяет обнаруживать любую ошибку кратности q0, если его кодовое расстояние удовлетворяет условию

(3.3.1)

Код позволяет исправлять любую ошибку кратности qи, если выполняется условие

(3.3.2)

Систематические коды

Среди всех корректирующих кодов наибольшее применение нашли систематические коды. Систематическим кодом (n,k) называется двоичный корректирующий код, удовлетворяющий следующим требованиям:

1. Все кодовые слова содержат по n символов, из которых k символов - информационные, а остальные n-k символов - проверочные. Информационные и проверочные символы занимают в кодовом слове определенные позиции.

2. Сумма по модулю 2 любых двух кодовых слов снова дает кодовое слово принадлежащее данному систематическому коду.

Систематический код задается производящей (порождающей) матрицей G, имеющей k строки n столбцов. Строки производящей матрицы должны быть линейно независимыми, т. е. сумма любых строк (по 2, по 3 и т.д. в любых комбинациях) не должна давать нулевое слово (состоящее из одних нулей).

Следующим этапом в построении систематического кода является определение проверочной матрицы Н, имеющей r=n-k строк и n столбцов. Любой вектор - строка проверочной матрицы Н ортогонален любому вектору - строке производящей матрицы G, следовательно,

(3.3.3)

где - транспонированная матрица G. Заметим, что два вектора u=u1,...,un и v= v1,.., v1n являются, по определению, ортогональными, если

Работа кодера для (n,k) -кода заключается в том, что к поступающему на его вход k-разрядному вектору информационных символов x он должен добавить r проверочных символов. Правило образования кодового слова а определяется соотношением

(3.3.4)

Умножив обе части этого выражения на и учитывая (3.3.3), получим другое соотношение, определяющее функции кодера

(3.3.5)

т. е. он должен добавлять r проверочных символов таким образом, чтобы любой из получаемых в итоге кодовых векторов а удовлетворял соотношению (3.3.5).

Один из способов декодирования принятого вектора b предусматривает вычисление r-разрядного исправляющего вектора (синдрома) c по правилу

(3.3.6)

Из формулы (3.3.5) следует, что значение синдрома определяется только вектором ошибки. Если с0, делают заключение о наличии ошибки (обнаружение ошибки). Так как различным ошибкам кратности qи, удовлетворяющей неравенству (3.3.2), соответствуют различные значения синдрома, то вычисленное значение с однозначно определяет положение символов, в которых произошли такие ошибки. Эти ошибки исправляются в декодере суммированием принятого вектора b с соответствующим вектором ошибок.

Основными элементами кодирующих и декодирующих устройств для систематических кодов являются сумматоры по модулю 2 и сдвигающие регистры. Сдвигающим регистром называют цепочку, состоящую из двоичных ячеек, меняющую свое состояние в дискретные моменты времени (шагами). На каждом шаге двоичный символ, имеющийся на входе ячейки, перемещается на ее выход.

Ниже приведены краткие данные наиболее распространенных систематических кодов.

Код Хэмминга с кодовым расстоянием 3 полностью характеризуется числом проверочных символов r. Общее число символов в кодовом слове равно n=2r-1. В качестве столбцов проверочной матрицы Н выбираются всевозможные r-разрядные двоичные числа, исключая число нуль.

Код Рида-Мюллера полностью характеризуется двумя целыми положительными числами: m3 и <m. Число называется порядком кода. Остальные параметры кода определяются из соотношений:

(3.3.7)

Первая строка производящей матрицы G состоит из единиц. Следующие m строк (базисные векторы первого порядка) можно получить, если записать n столбцов, состоящих из m-разрядных двоичных чисел. Следующие Cm2 строк (базисные векторы второго порядка) получают, вычисляя скалярные произведения различных пар базисных векторов первого порядка, и т.д. до получения базисных векторов -го порядка.

Циклической код полностью определяется первой строкой производящей матрицы G. Остальные строки получают в результате циклического сдвига первой строки на 1,2,.., k-1 элементов. Таким же циклическим свойством обладает и проверочная матрица Н.