Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
392
Добавлен:
14.04.2015
Размер:
4.43 Mб
Скачать

8.5.4. Коды с постоянным весом

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

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

В настоящее время широкое распространение получили коды «2 из 5», «3 из 6», «3 из 7», «4 из 8 «, «3 из 8».

В семиэлементном коде (коде «3 из 7») количество кодовых комбинаций с соотношением единиц и нулей 3:4 равно 35.

Биимпульсный (код Манчестера) является кодом с постоянным весом как в пределах кодовой комбинации, так и в пределах длительности одной информационной посылки.

Кодирование заключается в том, что информация о нуле и единице заключена в двух импульсах противоположной полярности и с определённой последовательностью смены полярности. Например, при передаче «единицы» первый из двух импульсов положительный, а второй – отрицательный. При передаче «нуля» первый импульс отрицательный, а второй положительный (рис.8.13).

Рис.8.13. Биимпульсный код

Применение такого кода позволяет улучшить решение задачи тактовой синхронизации приёмной аппаратуры. Поэтому он находит широкое применение в высокочастотных цифровых системах передачи.

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

Недостатками биимпульсного кода является большая избыточность .

8.5.5. Циклические коды

Способы описания циклических кодов

Циклические коды получили широкое распространение благодаря их эффективности при обнаружении и исправлении ошибок. Схемы кодирующих и декодирующих устройств для этих кодов строятся на основе обычных регистров сдвига.

Циклическим кодом называется линейный блочный (n,m)-код, который характеризуется свойством цикличности, т.е. сдвиг влево на один шаг любого разрешенного кодового слова дает также разрешенное кодовое слово, принадлежащее этому же коду и у которого, множество кодовых слов представляется совокупностью многочленов степени (n-1) и менее, делящихся на некоторый многочлен g(x) степени k=n-m, являющийся сомножителем двучлена xn+1.

Название кода произошло от его свойства, заключающегося в том, что каждая кодовая комбинация может быть получена путем циклической перестановки символов комбинации, принадлежащей этому же коду. Это означает, что если кодовая комбинация а0 а1 а2аn-1 является разрешенной комбинацией циклического кода, то комбинация вида аn-1 а0 а1 а2аn-2 так же является разрешенной комбинацией и принадлежит этому коду. Запись а0а1аn-1 означает, что кодовая комбинация состоит из n разрядов, первый из которых а0 , последний аn-1.

Отличие комбинации аn-1 а0 а1 а2аn-2 от комбинации а0 а1 а2аn-1 состоит в том, что последний разряд аn-1 становится первым, а предпоследний аn-2 становится последним. Такая перестановка называется циклической.

Циклические коды часто описываются с использованием многочленов (полиномов) переменной X

X = Р(x); Р(x) = an-1xn-1 + … + a1x+a0, (8.63)

где аi – цифры данной системы исчисления (в двоичной системе 0 и 1). Так, например, двоичное семиразрядное число 1010101 может быть записано в виде полинома:

Р(x) = 1x6 + 0x5 + 1x4 + 0x3 + 1x2 + 0x1 + 1x0 = x6 + x4 + x2 + 1. (8.64)

То есть цифры двоичного кода рассматриваются как коэффициенты многочлена Р(x). Наибольшая степень х в слагаемом с ненулевым коэффициентом называют степенью многочлена (полинома). Представление кодовых комбинаций в виде (8.63) позволяет свести действия над комбинациями к действиям над многочленами. При этом сложение двоичных многочленов сводится к сложению по модулю 2 коэффициентов при равных степенях переменной х

ха + ха = 0 ; ха+0 = ха ; 0 + 0 = 0. (8.65)

Умножение производится по обычному правилу перемножения степенных функций:

(8.66)

Рассмотрим пример умножения многочленов

и

Либо умножение можно произвести следующим образом

1 1 0

1 1

1 1 0

1 1 0

1 0 1 0.

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

Рассмотрим пример деления многочлена

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

1 1 1 0 1 0

1 0 0 1

1 0 0 1

1 1 1

- результат деления –

0 1 1 1 1 0

1 0 0 1

0 1 1 0 0

1 0 0 1

0 1 0 1

- остаток.

А теперь рассмотрим деление полиномов

х5+х4+х3+х

х3+1

х5+х2

х2+х+1

- результат деления – 1 1 1

х4+х2+х3+х

новый многочлен

х4+ х

х3+х2

новый многочлен

х3+ 1

х2+1

- остаток- 0 1 0 1.

Представления комбинаций в форме (8.63) удобно еще тем, что упомянутая ранее циклическая перестановка есть результат простого умножения данного полинома на х. Если одна из кодовых комбинаций выражается полиномом

Р(x) = a0 + a1x + a2x2 + a3x3 + … + an-1xn-1, (8.67)

то новая комбинация за счет циклического сдвига будет x Р(x):

x Р(x) = a0x + a1x2 + a2x3 + a3x4 + an-2xn-1 + an-1xn. (8.68)

В последнем члене необходимо заменить хn на х0. Новую комбинацию обозначим Р1(x)

Р1(x) = an-1х0 + a0x + a1x2 + a2x3 + … + an-2xn-1. (8.69)

Пример. Рассмотрим, как получить новую комбинацию из кодовой комбинации 1010101= x6 + x4 + x2+1 путем циклического сдвига. Циклический сдвиг получается умножением многочлена, соответствующего исходной комбинации на х

Р(x) х = х(x6 + x4 + x2+1) = x7 + х5 + x3 + x. (8.70)

Заменив х7 на х0 т.е. на «1» получим новую кодовую комбинацию Р1(x) в виде полинома:

Р1(x) = х5 + x3 + x + 1. (8.71)

Р1(x) соответствует кодовой комбинации 0101011. Таким образом, в результате циклической перестановки исходной кодовой комбинации 1010101 получена новая кодовая комбинация 0101011 также принадлежащая циклическому коду. Заметим, что запись кода в виде многочлена получается более компактной, чем в матричном виде.

Циклический сдвиг на один разряд соответствует алгебраическому умножению некоторого многочлена g(x), который выбран в качестве исходного на х. Процесс получения новых комбинаций кода можно представить следующим образом g(x), х g(x), х2 g(x), х3 g(x),…, хn-1 g(x).

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

Принцип обнаружения ошибок при помощи циклического кода заключается в том, что в качестве разрешенных принимаются только те комбинации, которые без остатка делятся на заранее выбранный образующий многочлен g(x). Если принимаемая комбинация искажена, то это условие на приемной стороне не будет выполнено. В результате этого формируется сигнал, указывающий на наличие ошибки.

Задача состоит в том, чтобы сформировать кодовые комбинации на передаче, удовлетворяющие указанному условию. Метод построения кодовых комбинаций используется следующий. В процессе кодирования многочлен Р(x) отображающий двоичный код передаваемого сообщения (примитивный код) умножаются на хk. При этом длина кодовой комбинации увеличивается на k разрядов. Эти дополнительные разряды будут проверочными. Полученное произведение Р(x)xk делят на специально подобранный образующий многочлен g(x). При этом получают остаток R(x). Данный остаток R(x) суммируют с произведением Р(x)xk. Получают кодовую комбинацию F(x)= Р(x)xk +R(x), которая будет без остатка делиться на g(x).

Алгоритм формирования комбинаций циклического кода показан на рис. 8.14.

Покажем справедливость такого способа формирования циклического кода. Обозначим частное от деления Р(x)xk на g(x) как f(x). Тогда справедливо равенство Р(x)xk = f(x)g(x) – R(x), где R(x) остаток деления Р(x)xk на g(x).

Перенося R(x) за знак равенства получим:

Р(x)xk + R(x) = f(x)g(x).

При таком методе построения коэффициенты при высших степенях являются обозначениями информационных разрядов, а коэффициенты при степенях порядка k-1 и ниже – проверочными.

Рис. 8.14. Алгоритм формирования циклического кода

Рассмотрим использование описанного алгоритма формирования комбинаций циклического кода на примере.

Пример. Требуется закодировать сообщение 1011. Дано: порождающий полином g(x)=х3+х2 + 1, общее число разрядов n = 7, число информационных разрядов m =4, число избыточных разрядов k = 3.

Решение:

1. Для кодирования сообщения 1011 определим, какому многочлену оно соответствует: Р(x) = 1x3 + 0x2 + 1x1 + 1x0 = x3 + x + 1.

2. Разделим полином Р(x)xk на порождающий g(x) для определения остатка R(x):

Р(x)xk = Р(x)x3 = (x3 + x + 1)x3 = x6 + x4 + x3

х 6+х4+х3

х 3+х2+1

х 6+х 5+ х 3

х 3+х2

х5+х4

х5+ х4+ х2

х2

- остаток

R(x)=x2

3. Суммируем произведение Р(x)x3 с полученным остатком x2 получим кодовый многочлен F(x)

F(x) = G(x) x3 + R(x) = x6+х4+х3 + х2.

В двоичном коде этому многочлену соответствует кодовая комбинация 1011100. В этой кодовой комбинации последние три позиции занимают проверочные разряды (выделены).

Проверим возможность обнаружения ошибки при приеме кодовой комбинации циклического кода указанным выше алгоритмом. Пусть принимается рассмотренная выше комбинация F(x)=1011100. Порождающий полином должен быть известен на приеме. Вынесение решения о наличии ошибки основывается на анализе остатка R(x) от деления комбинации на порождающий полином g(x) если R(x) = 0 , то ошибки нет.

Кодовой комбинации 1011100 соответствует многочлен F(x)= x6+x4+x3+х2.

Делим F(x) на g(x)

х 6+х4+х3+х2

х 3+х2+1

х 6+ х 5+ х 3

х 3+х2

х5+х4+х2

х5+ х4+ х2

0

Остаток R(x)=0, следовательно, ошибки нет.

Допустим, в результате воздействия помех в канале связи вместо комбинации 1011100 принято 0011100. Этой комбинации соответствует многочлен х432. Деление на g(x) дает:

х 4+х3+х2

х 3+х2+1

х 4+х3

х

х 2+х

Остаток R(x) 0

Ошибка обнаружена.

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

Матричное задание кодов

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

, где - единичная матрица;- прямоугольная матрица контрольных разрядов.

Строки матрицы определяются из выражений

- остаток от деления на образующий полином,

где - значениеi-той строки матрицы ;

i - номер строки матрицы .

Пример. Матрица для (7,4)-кода на основе порождающего многочлена, строится в следующей последовательности.

.

Определяется , используя

.

При .

Определим остаток от деления на образующий полином.

х 6

х 3+ х2+1

х 6+ х 5+ х 3

x5+ х 3

x5+ х4+ х2

x4 +х32

x4 +х3+ x

х2+ x

- остаток

.

При .

Определим остаток от деления на образующий полином.

х 5

х 3+ х2+1

х 5+ х 4+ х 2

x4+ х 2

x4+ х3+ x

х3 +х2+ х

х3 +х2+ 1

x+ 1

- остаток

.

При .

Определим остаток от деления на образующий полином.

х 4

х 3+ х2+1

х 4+ х 3+ х

x3+х

x3+ х2+ 1

х2+ х+1

- остаток

111.

При .

х 3

х 3+х 2+1

х 3+ х 2+ 1

x2+ 1

- остаток

101

В результате получаем

.

Процесс кодирования с помощью такой матрицы производится следующим образом. Пусть требуется закодировать информационные разряды

1 0 1 1= x3 +х+1.

Суммируются соответствующие строки 1-ю, 3-ю и 4-ю

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

Преимуществами кодирования с помощью образующей матрицы являются:

  1. большое быстродействие (не требуются сдвиги кодируемого числа),

  2. компактная запись всех комбинаций кода.

Декодирование циклического кода

Соседние файлы в папке Пособие ТЕЗ_рус12