Телеграфные службы. Службы ПД. Защита от ошибок и преобразование сигналов. Факсимильные службы. Единая система документальной электросвязи, страница 8

Код Хемминга. Рассмотрим в качестве примера построение систематического кода с кодовым расстоянием do= 3 (кода Хемминга). Пусть число сообщений, которое необходимо пе­редать, равно 16. Тогда необходимое число информационных элементов k = log2Na = 4. Можно выписать все 16 кодовых комбинаций, включая нулевую (0000). Это один из возможных способов задания исходного (простого) кода. Другой способ заключается в выписывании только четырех кодовых ком­бинаций простого кода в виде матрицы, называемой еди­ничной:

Суммируя по модулю два в различном сочетании кодовые комбинации, входящие в единичную матрицу, можно получить 15 кодовых комбинаций, 16-я — нулевая. Кодовые ком­бинации, составляющие матрицу (12.1), линейно независимы. Можно было бы составить матрицу и из других кодовых комбинаций (лишь бы они были линейно независимыми). Ненулевые комбинации А1, А2, Л3, А4 линейно независимые, если q1A1 q2A2 q3А3  q4A40, где qi {0,1} при условии, что хотя бы один из коэффициентовqi0. До­полним каждую кодовую комбинацию в (12.1) проверочными элементами так, чтобы обеспечивалось do= 3. Будем иметь в виду также тот факт, что к числу разрешенных комбинаций корректирующего кода принадлежит и комбинация 0000 ... 0,


называемая нулевой. Очевидно, что в числе добавляемых про­верочных элементов должно быть не менее двух единиц. Тогда общее число единиц в каждой комбинации кода получим не меньше трех и комбинации, полученные нами, будут отличать­ся от нулевой, по крайней мере, в трех элементах. Добавим по две единицы к каждой строке матрицы (12.1):

видим, что они отличаются только в двух элементах, т.е. заданное кодовое расстояние не обеспечивается. Дополним каждую строку проверочными элементами так, чтобы do= 3.

Тогда матрица примет вид

Добавляемые проверочные элементы могут быть записаны и в другом порядке. Необходимо лишь обеспечить do= 3.

Матрицу (12.3) называют производящей, или порождающей, матрицей кода (7,4), содержащего семь элементов, из которых четыре информационных. Обычно матрицу обозначают буквой G с индексом, указывающим, к какому коду она относится (в нашем случае G(7,4)). Производящая матрица состоит из двух матриц — единичной (размерности kk) и С(r,k) , содержащей r столбцов и kстрок. Суммируя в различном сочетании строки матрицы (12.3), получаем все (кроме нулевой) комбинации корректирующего кода с do= 3.



Единицы, расположенные на местах, соответствующих ин­формационным элементам матрицы Н(7,4), указывают на то, какие информационные элементы должны участвовать в фор­мировании проверочного элемента. Единица на месте, соответ­ствующем проверочному элементу, указывает, какой провероч­ный элемент получается при суммировании по модулю два


Комбинация b3b2b1называется синдромом (проверочным вектором). Равенство нулю всех элементов синдрома указывает на отсутствие ошибок, или на то, что кодовая комбинация принята с ошибками, которые превратили ее в другую разре­шенную. Последнее событие имеет существенно меньшую вероятность, чем первое.

Вид ненулевого синдрома определяется характером ошибок в кодовой комбинации. В нашем случае вид синдрома зависит от местоположения одиночной ошибки. В табл. 12.2 отражено соответствие между местоположением одиночной ошибки для кода, заданного матрицей (12.3), и видом синдрома.

Таким образом, зная вид синдрома, можно определить место, где произошла ошибка, и исправить принятый элемент на противоположный.



Деление выполняется как обычно, только вычитание заме­няется суммированием по модулю два.

Разрешенные комбинации циклического кода обладают двумя очень важными отличительными признаками: цикли­ческий сдвиг разрешенной комбинации тоже приводит к раз­решенной кодовой комбинации. Все разрешенные кодовые комбинации делятся без остатка на полином Р(х), называемый образующим. Эти свойства используются при построении цик­лических кодов, кодирующих и декодирующих устройств, а также при обнаружении и исправлении ошибок.

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