Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТИКЛекции.doc
Скачиваний:
124
Добавлен:
07.05.2019
Размер:
2.69 Mб
Скачать

8.4. Циклические коды, обнаруживающие трехкратные ошибки

Рассмотрим алгоритм построения циклического кода для обнаружения трехкратных ошибок (при этом d0 = 4).

1. Для заданного k и S определяется число контрольных разрядов m и длину кодовой комбинации n по формуле:

m = [log2 {(k+1)+ [log2(k+1)]}]+1.

2. Выбирается образующий многочлен P(x) по таблице неприводимых многочленов из условия d0 = 3r+1 = 3+1 = 4. При этом многочлен 3 степени, имеющий число ненулевых членов больше или равно трем позволяет обнаружить все двойные ошибки, а многочлен первой степени (х+1), обнаруживает все нечетные ошибки. Многочлен 4 степени, представляющий произведение многочленов 3-й и 1-й степени позволит обнаружить трехкратную ошибку.

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

4. Обнаружение ошибок производится по остаткам от деления принятой комбинации F(x) на образующий полином P(x).

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

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

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

Решение:

1. Определим количество проверочных разрядов при k = 5 и d0 = 4

m = [log2 {(k+1)+ [log2(k+1)]}]+1 = [log2 {(5+1)+ [log2 (5+1)]}]+1 = 5.

При этом n = k + m = 10, т. е. получим (10, 5)-код.

2. По таблице неприводимых многочленов выбираем образующий полином равный произведению полинома (х+1) на полином четвертой степени с числом ненулевых членов больше или равных четырем (т. к. d0 4) и степени большей или равной m

Р(х) = (x+1)(x4 +x+1) = x5 + x4 +x2+1 = 1 1 0 1 0 1

3. Строим образующую матрицу, состоящую из 4-х строк.

00001110101`

00010110101

00100110101

01000110101

10000110101

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

4. Обнаружение ошибок. Как видно, в полученном коде все комбинации содержат нечетное число единиц. При делении полученной комбинации F(x) на образующий полином нулевой остаток свидетельствует об ошибке и такие комбинации бракуются.

Применение циклических кодов.

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

Циклические коды широко используются в ЭВМ при последовательной передаче данных между ЭВМ и внешними устройствами, а также передачи данных по каналам связи, в сетях передачи данных (каждый передаваемый кадр снабжается проверочной последовательностью).

Коды с циклическими, избыточными проверками (ЦИП) широко используются в СПД, при этом используются коды

ЦИП-16 P(x) = x16+ x15+ x2+ 1.

ЦИП-МККТТ P(x) = x16+ x12+ x5+ 1.

ЦИП-32

P(x) = x32+ x26+ x23+ x22+ x16+ x12+ x11+ x10+ x8+ x7+ x5+ x4+ x2+ x+ 1.

Код ЦИП-32 используется в соответствии со стандартом IEEE 802 для локальных сетей ETHERNET. Такая проверочная последовательность сопровождает кадр до 1526 байт. Циклический код, исправляющий ошибки с образующим полиномом до 32-го порядка, используется при записи на «винчестер».

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

Регистры состоят из ячеек памяти (2-х ступенчатый TT-триггер), сумматоров по модулю 2 и устройств умножения на коэффициенты многочленов множителя и делителя. При использовании двоичных кодов умножение на коэффициент равный 1 соответствует включению ОС, для коэффициента 0 - ее отключение. Сдвиг осуществляется с помощью генератора тактовых импульсов, который на структурной схеме, как правило, не показывается.

Структура кодера. Структура кодера однозначно зависит от структуры образующего многочлена P(x). Основа кодирования - деление многочлена G(x). xn-k на образующий многочлен. В соответствии с этим кодер строится следующим образом:

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

2. Количество сумматоров по модулю 2 берется на 1 меньше количества членов образующего многочлена.

3. Входы ячеек обозначают xi , где (i = 0, ... , r). Вход первой ячейки x0, выход последней- xn-k.

4. Сумматоры располагают на выходе ячеек (TТ), номера которых совпадают со степенями образующего полинома.

5. Кодер содержит два ключа, k1 расположенный в обратной связи и

ключ k2 -расположенный на выходе схемы. Рассмотрим схему кодера

P(x) = x3 +x2 +1 для кода (7, 4).

Рис. 8.1. Схема кодера P(x) = x3 +x2 +1 для кода (7, 4)

На входную шину поступает код (информационное слово) начиная со старшего разряда. В исходном состоянии k2 в положении 2, а к1 замкнут.

Информационные символы одновременно поступают как в канал связи, так в регистр сдвига, где за к = 4 тактов, образуется остаток. После чего к1 размыкается, а к2 переключается в положение 1 и за m = n - k = 3 такта остаток сдвигается в канал связи.

Пусть G(x) = x3 +1 = 1001; F(x) = G(x) xn-k = 1001000.

Процесс формирования кодовой комбинации показан в таблице 1.

Таблица 1

N

такта

Вход

T1

T2

T3

Выход

1

1

1

0

1

1

2

0

1

1

1

01

3

0

1

1

0

001

4

1

1

1

0

1001

5

0

-

1

1

01001

6

0

-

-

1

101001

7

0

-

-

-

1101001

Через 4 такта в регистре получат остаток 011. После 7 тактов кодер освободится и в канал будет передана кодовая комбинация 1101001.

Проверка:

1001000 1101 1001011 1101

 1101  1101

1000 1000

 1101  1101

1010 1011

 1101  1101

1110 1101

 1101  1101

R(x)= 011 000

Пример 1. Реализовать схему кодера P(x) = x5 +x2 +1 для циклического кода.

Рис. 8.2. Схема кодера P(x) = x3 +x2 +1 для кода (7, 4)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]