Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2 семестр / Лекции / Лекция № 9 2025 г

.pdf
Скачиваний:
0
Добавлен:
16.02.2026
Размер:
301.97 Кб
Скачать

ЛЕКЦИЯ №9

6. ПОМЕХОУСТОЙЧИВОЕ КОДИРОВАНИЕ ( КАНАЛЬНОЕ КОДИРОВАНИЕ ).

6.1. Основные определения.

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

Отличие одной кодовой комбинации от другой характеризуется кодовым расстоянием. Кодовое расстояние d - это количество позиций, в которых одна кодовая комбинация отличается от другой.

Например:

01 d =1

01 d =2

0111011

d =4

 

00

10

1010001

 

В пространстве Хэмминга расстояние Хэмминга

d(xi,xj) между двумя кодо-

выми комбинациями, принадлежащими коду, - это вес Хэмминга, т.е. число ненулевых символов в векторе , равном сумме ( xi xj ) по модулю 2. Очевидно, что 1 d(xi,xj) n. Расстояние Хэмминга удовлетворяют аксиомам:

d(xi,xj) 0; d(xj,xj) =0; d(xi,xj)= d(xj,xi) ; d(xi,xj) d(xi,xk)+d(xk,xj).

Вектор ошибки е - это двоичная комбинация длиной n, у которой символ “1” находится в тех позициях, где переданная и принятая комбинации не совпадают. Кратность ошибки равна весу Хемминга вектора е.

Исправляющая способность кода зависит от минимального кодового расстояния данного кода. Минимальное кодовое расстояние:

dmin=min i j d(xi,xj).

Для обнаружения одиночных ошибок минимальное кодовое расстояние между комбинациями должно равняться dmin=2. Например, для двоичного кода с основанием кода m=2 и длиной n=3 возможный набор разрешенных комбинаций с dmin=2 имеет вид:

000

;

110

Разрешенные

111 ; 001

Запрещенные

101

;

011

комбинации dmin=2;

010 ; 100

комбинации;

Предположим, что была передана комбинация 000. В линии связи помеха исказила второй символ и мы приняли 010. Это запрещенная комбинация, т.е. декодер обнаружит ошибку. Выигрыш в помехоустойчивости получен за счет проигрыша в скорости передачи, т.к. четыре сообщения мы могли бы передавать с помощью четырех комбинаций примитивного кода с m=2, n=2: 00, 01, 10, 11. Т.о. проигрыш по скорости передачи равен 1,5. Иными словами, к кодовой комбинации из k информационных символов 00, 01, 10, 11

добавляется (n-k) избыточных или корректирующих символов, связанных по определенному алгоритму с информационными символами. Количество корректирующих символов характеризует избыточность кода R:

R=(n-k)/n; (6.1)

Избыточность рассмотренного выше кода равна: R=(3-2)/3=0,33.

Для обнаружения ошибок кратности k следует использовать код, имеющий

dmin= k+1.

Для исправления одиночных ошибок следует использовать код с dmin=3. Например, для кода с m=2; n=3 можно использовать комбинации:

000

Разрешенные

001; 100;

Запрещенные

111

комбинации

010; 101;

комбинации

 

dmin=3 ;

011; 110;

 

Пусть передается комбинация 000. Допустим, что помеха исказила второй символ и мы приняли 010. Эта комбинация запрещенная, но она ближе к переданной комбинации 000 (d=1), чем к другой возможной 111 (d=2). Таким образом, мы декодируем комбинацию 010 как 000, т.е. исправляем ошибку. Выигрыш в помехоустойчивости достигается за счет еще большего проигрыша в скорости передачи, т.к. два сообщения мы могли бы передавать с помощью двух комбинаций примитивного кода с m=2, n=1: т.е. 0 и 1.Таким образом, к каждой информационной комбинации из одного символа мы добавили по 2 корректирующих (проверочных) символа.

Проигрыш по скорости передачи данного кода, исправляющего одиночные ошибки, по сравнению с примитивным или безызбыточным кодом равен 3. Избыточность этого кода равна: R=(3 -1)/3=0,667.

Для исправления ошибок с кратностью k следует использовать коды с минимальным кодовым расстоянием dmin=2k+1.

Проверка на четность.

Для обнаружения одиночных ошибок одним из наиболее совершенных способов кодирования является «проверка на четность»: к кодовой комбинации из n информационных символов добавляется один проверочный такой, чтобы количество единиц в кодовой комбинации было четным. Например, к комбинации 0100110 добавляем проверочный символ 1, и передаем комбинацию 01001101. Одиночная ошибка делает число единиц в принятой кодовой комбинации нечетным ( 3 или 5), что и обнаруживается на приеме.

6.2. Линейный двоичный блочный код.

Широко используются в технике связи линейные блочные систематические коды. Блочный код состоит из кодовых комбинаций, называемых также кодовыми словами. Длина каждого кодового слова равна n. Код - систематический, т.е. первые k символов являются информационными, а следующие (n - k) являются корректирующими. Блочный код обозначается, как код (n,k). Общее количество кодовых комбинаций равно N=mk. Если код – двоичный, то N=2k.

1

АЛГОРИТМ КОДИРОВАНИЯ

Рассмотрим алгоритм кодирования для двоичного блочного кода (7,3), у которого каждое слово имеет n=7 символов, из которых k=3 – информационные и (n-k)=4 – проверочные.

Алгоритм формирования кодовых комбинаций следующий: 1.Присваиваем каждому символу кода номер : a1, а2, а3, а4, а5, а6, а7.

Первые три символа (a1, а2, а3) являются информационными. Последние четыре символа - корректирующие (проверочные): а4, а5, а6, а7.

2. Составляем порождающую матрицу G. Эта матрица должна иметь n столбцов и k строк. Левая часть матрицы – это единичная матрица размером k*k. Правая часть G–это матрица-дополнение Р размером (n-k)*k:

1 0 0 0 1 1 1 G = 0 1 0 1 0 1 1 0 0 1 1 1 0 1

единичная матрица | матрица - дополнение Матрица-дополнение P имеет в данном случае вид:

0 1 1 1 P = 1 0 1 1 1 1 0 1

3. Формируем кодовые комбинации. Для этого, сначала, записываем все возможные информационные комбинации из трех символов (всего восемь комбинаций ): 000,001,010,011,100,101, 110,111.

4. К информационным символам приписываем четыре проверочных символа, получающихся в результате умножения информационного вектора-строки (a1a2a3) на матрицу-дополнение Р. Произведение есть вектор-строка (a4a5a6a7):

(a1a2a3) * P = (а4, а5, а6, а7)

Очевидно, для заданной матрицы Р: а4 = а2 а3; a5 = a1 а3;

а6 = а1 а2;

а7= а1 а2 а3;

 

Знак означает суммирование по модулю 2, т.е. 0 0 = 0;

1 0 = 1;

0 1 = 1; 1 1 = 0.

5. Составляем кодовую таблицу разрешенных кодовых комбинаций:

2

 

Значения символов комбинации

 

 

 

 

 

 

 

 

 

 

a1

a2

a3

a4

a5

a6

a7

1

0

0

0

0

0

0

0

 

 

 

 

 

 

 

 

2

0

0

1

1

1

0

1

3

0

1

0

1

0

1

1

4

0

1

1

0

1

1

0

5

1

0

0

0

1

1

1

 

 

 

 

 

 

 

 

6

1

0

1

1

0

1

0

7

1

1

0

1

1

0

0

8

1

1

1

0

0

0

1

Для полученного кода dmin = 4, т.е. наш код может исправлять все одиночные ошибки и некоторые двойные.

АЛГОРИТМ ДЕКОДИРОВАНИЯ

Принятые кодовые комбинации необходимо сравнить с каждой из разрешенных комбинаций и принять решение о переданном кодовом слове. Однако, количество операций необходимых для такого алгоритма быстро растет с ростом n. Более оптимальным способом является вычисление синдромов.

1. Составляем проверочную матрицу H:

 

0 1 1

1 0 0 0

 

H =

1 0 1

0 1 0 0

 

 

1

1 0

0 0 1 0

 

 

1

1 1

0 0 0 1

 

 

 

 

 

 

транспонированная

 

 

 

матрица – дополнение

 

единичная матрица

2. Вычисляем синдром принятой кодовой комбинации, т.е. кодовую комбинацию, равную произведению принятого вектора-строки на транспонированную проверочную матрицу. Синдром не зависит от переданной комбинации. Он зависит только от позиции, в которой произошла ошибка.

 

0 1

1 1

(C1C2C3C4) = (a1, а2, а3, а4, а5, а6, а7) * HТ = (a1, а2, а3, а4, а5, а6, а7) *

1 0 1 1

 

1 1

0 1

 

1 0

0 0

 

0 1

0 0

 

0 0

1 0

 

0 0

0 1

C1 = а2 а3 а4 ;

C2 = а1 а3 а5;

C3 = а1 а2 а6;

C4 = а1 а2 а3 а7 .

где а1, а2.....а7 - принятый кодовый символ, возможно искаженный помехой. 3. Формируем вектор ошибки V, т.е. кодовую комбинацию, которая содержит единицу на той позиции, где произошла ошибка. Формирование

3

синдромов и векторов ошибок можно произвести заранее, искажая последовательно символы в комбинации. Например, приняли: 0 0 0 0 0 0 0;

(C1C2C3C4) = 0 0 0 0; V = (0 0 0 0 0 0 0) - ошибок нет;

Пусть приняли: 0000001 - это запрещенная комбинация ( ошибка в символе а7). Вычисляем синдром: (C1C2C3C4) = 0001. Вычисляем вектор ошибки: V=(0000001). Составим таблицу синдромов и соответствующих векторов одиночных ошибок .

Вектор

 

0000000

0000001

0000010

 

0000100

0001000

 

0010000

 

 

0100000

1000000

ошиб-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ки

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Син-

 

0000

0001

 

 

0010

 

 

0100

1000

 

1101

 

 

1011

 

0111

дром

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В соответствии с алгоритмами кодирования и

декодирования

составим

структурные схемы кодера и декодера кода (7,4).

 

 

 

 

 

 

 

 

 

 

 

Структурная схема кодера кода (7,3).

 

 

 

 

a1

 

 

 

 

 

 

 

 

 

 

 

 

a1

 

 

 

 

а2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

а

 

 

 

 

а3

 

 

 

 

 

 

 

 

 

 

 

 

 

а

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

а4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

а5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

а6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

а7 Рис.6.1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Структурная схема декодера кода (7,3).

 

 

 

a1, а2, а3, а4, а5, а6, а7

 

 

 

 

 

 

 

 

Рис.6.2

 

 

С1

a1234567

ФормиC2 рователь

C3 вектора V

 

ошибки

 

 

 

C4

 

 

4

Соседние файлы в папке Лекции