Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТИ / Lec / ТИ (Best).doc
Скачиваний:
131
Добавлен:
17.03.2015
Размер:
1.01 Mб
Скачать

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

Это коды, в которых контрольные и информационные разряды размещаются по определенной системе. Закономерности, заложенные в структуре этих кодов, позволяют проводить декодирование более простым способом, чем методом полной кодовой таблийы.

Кодовый вектор – последовательность 0-й и 1-й кодовой комбинации.

Вес кодового вектора – число единиц в кодовой комбинации.

Нулевой вектор – кодовая комбинация, состоящая из одних нулей.

n – значность кода (из скольки символов состоит кодовая комбинация);

nu – число информационных разрядов;

nk – число контрольных разрядов;

Пример: Для систематических кодов применяют обозначение:

Код(n, nu) Код (5,3)

Построение систематических кодов производится следующим образом: в качестве первого берется нулевой вектор, затем составляется производящая матрица. Она имеет nи – строк, n – столбцов. В качестве строк производящей матрицы берутся любые линейно независимые n-значные векторы, отстоящие друг от друга не менее, чем на заданное кодовое расстояние. Строки матрицы G – являются кодовыми векторами. Первый вектор - нулевой.

Линейно независимыми называются векторы, для которых выполняется условие:

v1, v2,...,vк

v1 + v2 + ...+ vк ≠ 0

Остальные кодовые векторы определяются количеством:

где

- всего (общее число кодовых векторов);

- находится в производящей матрице;

1 –нулевой вектор.

Остальные кодовые векторы получаются в результате суммирования строк производящей матрицы G в различных сочетаниях.

Для обнаружения ошибок составляется множество проверочных векторов, ортогональных векторам кода. Т.е. если кодовый вектор v образован символами а1, а2,…, аn, а ортогональный вектор u образован символами – b1, b2,..., bn, то

Из векторов u составляется проверочная матрица Н. Она имеет nк – строк, n-столбцов. Строками матрицы Н являются любые линейно-независимые векторы u.

Пример: Пусть строится код (5,3) с минимальным кодовым расстоянием d0=2. Он позволяет обнаруживать все одиночные ошибки. Составим производящую матрицу G:

Три строки, т.к. nu = 3, n = 5 – столбцы

Комбинации Результат комбинации

Нулевой вектор

Строки матрицы

G

1 + 2

2 + 3

1 + 3

1 + 2 + 3

Можно было бы построить G из любой другой тройки векторов, кроме сочетаний v2v3v5, v2v4,v1 и т.д. (семь штук), т.к. эти сочетания линейно зависимы, т.е. v2 + v4 + v7 ≠0.

Построим ортогональные векторы u (проверочные).

Составим для векторовv2, v3, v8. Эти вектора имеют минимальное количество единиц.

v2 0  b1 + 0  b2 + 0  b3 + 1  b4 + 1  b5 = 0

b4 + b5 = 0

v3 b2 + b3 + b5 = 0

v8 b1 + b3 = 0

Для любого вектора u должно выполняться

Перебирая все удовлетворяющие этим условия сочетания, получили:

u1 = 00000

u2 = 01011

u3 = 10111

u4 = 11100

Из этих векторов необходимо составить проверочную матрицу Н

- т.к. они линейно независимы

Декодирование систематических кодов

1. Декодирование с помощью полной кодовой таблицы. Рассчитаем параметры этой таблицы

N = 25 = 32 – код пяти значений

N0 = 23 = 8 – разрешённая комбинаяция

N - N0=32-8=24 – запрещённая коибинация ( кодовых исправлений 24 ошибки )

Строим полную кодовую таблицу. В качестве первой строки используем разрешенные комбинации v1 – v8

00000

00011

01101

11010 01110 10111 11001 10100

00001

00100

01000

00010

00111

01011

01100

01001

00101

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

Пример: vx=00111, находим в таблице и соотносят с 01 строкой, т.е. v = 00011

Достоинство метода: его универсальность, возможность применять различные стратегии.

Недостаток: громоздкость кода и только 3-и ошибки.

2. Декодирование с проверкой на четность.

С помощью ортогональных векторов u из матрицы Н можно установить связь между составляющими векторов v.

Используя условие ортогональности:

Составляющие - берутся из матрицы Н, а - из принятого вектора.

схема проверок:

На основании векторов u можно записать схему проверок

Пример: , пусть принят вектор vx = 00110. Он имеет координаты а1 а2 а3 а4 а5. Составим схему проверок.

Если бы ошибок не было бы, то здесь были бы нули.

Возможность кода к исправлению ошибки можно объяснить схемой

N символов

N-проверки

1

2

3

4

5

1

+

+

+

1

+

+

+

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

Для исправления всех ошибок надо, чтобы каждый бит появлялся в оригинальной комбинации строк в таблице проверки, и так будет, когда d0=3 и добавиться ещё одна проверка.

  1. Декодирование с помощью корректирующего вектора

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

Составляющие вектора С c1,c2,..,ci представляют собой скалярное произведение принятого вектора vx на строки исправляющей матрицы. Вектор представляется двоичным числом С =c1,c2,…,cк. Если ошибок нет, то С = 0

Рассмотрим i-ую строку полной кодовой таблицы

- i-ая строка полная кодовая таблица

Умножим эту строку на вектор uj, то получим

=0 =0 =0

- в каждой строке будет одной и той же величиной для любой кодовой комбинации.

Метод декодирования состоит из следующих операций:

  1. По полной кодовой таблице и матрицы Н вычисляют корректирующий вектор С;

  2. Принятый вектор vx умножают на векторы матрицы Н и вычисляют корректирующий вектор.

  3. Сравнивают полученные значения корректирующего вектора с имеющимся шаблоном и определяют ошибку

Пример: Нужно выбрать систему кодирования. Возьмём ту же систему кодов и H.

1. Определение шаблонов корректирующего вектора

Векторы ошибок

шаблоны

Для вектора e1 построение шаблона.

e1:

e1u1 = 0000101011 = 1  C1 = 1

e1u2 = 0000111100 = 0  C2 = 0

Следовательно, вектору e1 ставится в соответствие вектор С = (10)

Для e2:

e2u1 = 0010001011 = 0  C1 = 0

e2u2 = 0010011100 = 1  C2 = 1

Для e3:

e3u1 = 0100001011 = 1  C1 = 1

e3u2 = 0100011100 = 1  C2 = 1

Шаблоны известны на приёмной стороне ещё до посылки комбинации

2. Определение корректирующего вектора

Пусть принят вектор vx = 01001

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

3) Исправляем ошибку

, что соответствует комбинации v3.

Можно строить образующую матрицу достаточно простым способом, например, единичной матрицей nu  ni.

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

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

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