Материал: 6593

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

116

ется на ее выход.

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

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

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

 

δ

 

 

n = 2m ,

k = Cmi

, dкод = 2mδ.

(4.3.7)

i=1

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

двоичных чисел. Следующие Cm2 строк (базисные векторы вто-

рого порядка) получают, вычисляя поэлементные произведения различных пар базисных векторов первого порядка, и т.д. до получения базисных векторов δ-го порядка.

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

Более удобным является общепринятое описание кодовых комбинаций циклического кода при помощи полиномов. Кодовой комбинации v=(v0,v1,…,vn-1) соответствует полином

v(x)= v0x0+ v1x1+,…,vn-1xn-1. Способы кодирования и декодирования для конкретного кода полностью определяются, если задать производящий полином g(x)=1+g1x+ g2x2+…+ gr-1xr-1+xr.

Фундаментальное свойство циклического кода заключается в том, что полином, соответствующий любой разрешенной (передаваемой) кодовой комбинации, делится без остатка на производящий полином.

117

РЕШЕНИЕ ТИПОВЫХ ПРИМЕРОВ Пример 4.3.1. Способ кодирования задан кодовой табли-

цей

 

a1

= 0000000

 

 

a) составить матрицу расстояний dij

 

а2

= 0110111

 

 

(i, j =1,2,3,4) ;

 

 

а3

= 1011010

 

 

б) найти кодовое расстояние;

 

 

а4

= 1101100.

 

 

 

 

в) определить кратности обнаруживаемых

и исправляемых ошибок;

 

 

 

 

 

 

г) определить избыточность кода, полагая

буквы источника

равновероятными.

 

 

 

 

 

 

 

Решение. а) Матрицу расстояний записываем в виде табли-

цы (табл. 4.3.2).

 

б) По табл.

4.3.2

находим

кодовое

 

 

 

Таблица 4.3.2

 

 

 

расстояние dêî ä = min dij

= 4, i j.

 

 

 

 

 

i

 

 

 

 

j

 

1

2

3

4

в) Кратность обнаруживаемых оши-

 

1

0

5

4

4

бок определяется по формуле (4.3.1), от-

2

5

0

5

5

куда qо≤3.

 

 

 

3

4

5

0

4

Кратность

исправляемых

ошибок

4

4

5

4

0

находим по формуле (4.3.2) qи≤1,5.

Следовательно, приведенный код позволяет обнаруживать всевозможные однократные, двукратные и трехкратные ошибки и исправлять любые однократные ошибки.

г) Избыточность кода находим из следующих соображений. Для передачи равновероятных сигналов a1, а2, а3, а4 достаточно передавать кодовые слова 00, 10, 01 и 11 соответственно. Такой код не имеет избыточности, но не позволяет обнаруживать и, тем более, исправлять ошибки. Для обнаружения и исправления ошибок введены пять избыточных символов, т.е. количественно

избыточность равна R = (7 2)7 = 71% .

Пример 4.3.2. Линейный блочный (5,2)-код задан производящей матрицей в систематической (канонической) форме

 

g1

 

10110

Пусть принят вектор b=00110 и из-

G =

=

вестно, что возможны только одиночные

g2

01011

ошибки.

 

 

 

 

Произвести декодирование следую-

118

щими методами:

а) по минимуму расстояния; б) вычислением синдрома.

Решение. Если производящая матрица записана в каноническом виде, это значит, что она состоит из двух блоков: диагональной матрицы размера k×k, состоящей из единиц, и прямоугольной матрицы размера r×k. В этом случае первые k символов в любом кодовом слове являются информационными.

Проверочная матрица Н также может быть записана в каноническом виде и состоит из двух блоков. Первый блок есть прямоугольная матрица размера k×r, полученная транспонированием второго блока матрицы G. В качестве второго блока матрицы Н записывают диагональную матрицу размера r×r, состоящую из единиц.

Для заданного кода получаем

10100 Н = 11010 .

01001

Убедимся, что полученная таким образом матрица Н удовлетворяет соотношению (4.3.3). Действительно,

h1g1 = (10100) (10110) = 0, h1g2 = (10100) (01011) = 0,

............................................

h3g2 = (01001) (01011) = 0,

т.е. все 6 элементов матрицы GHT равны нулю.

Построим кодовую таблицу, воспользовавшись правилом образования кодовых слов по формуле (4.3.4):

a1=00000, а2=10110, а3=01011, а4=11101=a2+a3.

Всего кодовая таблица содержит 2k = 4 вектора.

Из кодовой таблицы определяем величину кодового рас-

стояния dкод = 3.

Следовательно, рассматриваемый код обнаруживает однократные и двукратные ошибки и исправляет однократные.

Декодируем принятый вектор b = 00110.

а) Метод декодирования по минимуму расстояния заклю-

 

 

 

Таблица

4.3.3

ai

00000

10110

01011

 

11101

dib

2

1

3

 

4

119

чается в том, что, вычислив расстояния вектора b относительно всех векторов аi кодовой таблицы, отождествляем принятый вектор с тем, расстояние до которого минимально. Расстояния dib приведены в табл. 4.3.3.

По величине dibmin=1 решаем, что передавался вектор

а2= 10110, следовательно, ошибка в первом символе кодового слова, а информационная последовательность имеет вид х

= 10.

б) Метод декодирования с помощью вычисления синдрома включает следующие операции:

1) По формуле (4.3.6) заранее устанавлиТаблица 4.3.4 ваем однозначную связь между векторами

e

c

однократных ошибок е и соответствующими

00001

001

им синдромами. Все

возможные векторы

00010

010

c = eHT приведены в табл. 4.3.4.

00100

100

2) Вычисляем синдром для принятого

01000

011

слова b по формуле (4.3.6) с=bHT:

10000

110

c1=(00110)(10100)=1,

с2=(00110)(11010)=1,

с3=(00110)(01001)=0,

т.е. вектор с = 110. Синдром не равен нулю, следовательно, есть ошибка.

Вектору с = 110 в табл. 4.3.4 соответствует вектор ошибки в первом символе е=10000. Декодируем, суммируя принятый вектор с вектором ошибки a = b e = 00110 10000 =10110.

Итак, получили тот же результат: передавался вектор a2=10110, соответствующий информационной последовательности х=10.

Пример 4.3.3. Для кода, заданного в примере 4.3.2, составить схему кодирующего устройства.

Решение. Обозначим буквами а1,...,а5 символы на выходе кодера, причем а1 и а2 есть информационные символы, поступающие на его вход, а символы а3, а4 и а5 образуются в кодере.

Из соотношений (4.3.4) или (4.3.5) получаем

à3 = à1,

à4 = à1 + à2 ,

à5 = à2.

Один из вариантов схемы кодера, определяемой этими соотношениями, показан на рис. 4.4.

 

 

 

 

 

120

 

 

 

 

 

 

Кодирующее устройство ра-

 

 

 

ботает следующим образом. В те-

 

 

 

 

 

 

 

 

MUX

чение первых двух шагов двухраз-

 

 

 

 

 

 

 

 

рядный регистр сдвига за-

 

 

 

 

 

 

M2

 

 

полняется

информационными

 

 

 

 

 

символами а1

и а2, а в течение сле-

 

Рис. 4.4

 

дующих трех тактов его состояние

 

 

сохраняется неизменным. Одно-

 

 

 

 

 

временно с заполнением регистра начинается переключение

мультиплексора (переключателя) MUX. Таким образом форми-

руются 5 символов кодового слова, удовлетворяющих требуе-

мым соотношениям.

 

 

 

Пример 4.3.4. Построить код Хэмминга, имеющий па-

раметры: dкод=3,

r = 3.

 

 

 

Решение. Построение кода начинаем с проверочной матри-

цы. В качестве семи столбцов проверочной матрицы Н выбира-

ем всевозможные 3-разрядные двоичные числа, исключая число

нуль. Проверочная матрица имеет вид

 

 

 

 

 

 

0001111

 

 

 

 

 

Н = 0110011 .

 

 

 

 

 

 

1010101

 

 

Чтобы определить места проверочных и информационных

символов, матрицу Н представляем в каноническом виде

Í 0

= Q,I , где I – единичная матрица.

 

 

Для этого достаточно в матрице Н выбрать столбцы, со-

держащие по одной единице, и перенести их в правую часть.

Тогда получим

 

 

 

0111000

 

 

 

 

 

 

 

 

 

 

 

Н0 = 1011010 .

 

 

 

 

 

 

1101001

 

 

Из формулы (4.3.5) получаем следующие соотношения для

символов a1, ..., а7

кодового слова:

 

а5 = а2 а3 а4 ,

а6 = а1 а3 а4 ,

а7 = а1 а2 а4.

 

Пользуясь этими соотношениями, составляем кодовую таб-