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. |
||||
|
Пользуясь этими соотношениями, составляем кодовую таб- |
|||||