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

tes-slides-04

.pdf
Скачиваний:
8
Добавлен:
12.03.2015
Размер:
912.6 Кб
Скачать

 

 

 

 

 

 

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

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Циклическийконтрольсизбыточностью (CRC)

 

 

 

 

Представление циклическихческих кодовкодоввввидевидеполиномаполиномастепенистепени

Пример операции деления в декодере CRC :

Полиномиальное представление кода: циклический код более удобно

 

 

 

Процедура деления в декодере такая же как в кодере, но вычисляется синдром

 

 

представлять в виде полинома некоторой степени, а не элементов 0 и 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F(x) = a

xn–1

+ a

xn–2 + … + a

x2 + a ;

x – основание, a – элементы

 

 

 

 

 

 

Кодовое слово

 

 

 

 

 

Кодовое слово

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n–1

n–2

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Комбинация представляется как полином с коэффициентами 0 и 1, степень

 

 

 

 

 

 

Деление (нет ошибки)

 

 

 

 

Деление (есть ошибка)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

каждого члена указывает на позицию бита, а коэффициент на его значение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Для краткости все члены с нулевыми коэффициентами удаляются, x1 заменяется

 

 

 

 

 

 

 

 

Кодовое

 

 

 

Кодовое

 

 

 

 

 

 

 

 

 

слово

 

 

 

 

 

слово

 

 

 

 

 

на x, x1 на 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Синдром

 

Синдром

 

 

 

a) Двоичная комбинация и полином

b) Краткая форма

 

 

 

 

 

 

 

 

 

 

 

Рис. 3.23. Полиномиальное представление двоичного слова

 

 

Кодовое слово

 

Кодовое слово

 

 

 

 

Наибольшая степень в полиномиальном выражении является степенью

 

 

принято

 

отклонено

 

 

 

 

 

 

 

Рис. 3.18. Деление в декодере CRC

 

 

 

полинома, например, для выражения x1 + x + 1 степень полинома равна 6

 

2010

А.В. Абилов, Лекция 4. "Обнаружение и исправление ошибок"

41

2010

А.В. Абилов, Лекция 4. "Обнаружение и исправление ошибок"

42

 

 

 

 

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

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Представлениециклическихкодовввидеполиномастепени

 

 

 

 

 

 

Представление циклическихческих кодовкодоввввидевидеполиномаполиномастепенистепени

Сложение и вычитание полиномов:

 

 

Умножение двух полиномов :

 

 

 

 

 

 

 

 

Сложение и вычитание полиномов производится путем сложения или вычитания

 

 

 

Умножение двух полиномов производится по правилу перемножения степенных

 

 

 

 

коэффициентов членов с одинаковой степенью

 

 

 

 

 

 

функций, но коэффициенты складываются по модулю 2

 

 

 

 

 

 

Так как коэффициенты имеют двоичное представление, то операции двоичного

 

 

 

Каждый член первого полинома умножается на все члены второго

 

 

 

 

сложения и вычитания над ними идентичны и соответствуют операции XOR

 

 

 

 

 

 

(x5 + x3 + x2 + x)( x2 + x + 1)

 

 

 

 

 

 

 

Пары идентичных членов в слагаемых удаляются

 

 

 

 

 

 

= x7 + x6 + x5 + x5 + x4 + x3 + x4 + x3 + x2 + x3 + x2 + x

 

 

 

 

(x5 + x4 + x2 ) + ( x6 + x4 + x2) =

 

 

 

 

 

 

= x7 + x6 + x3 + x

 

 

 

 

 

 

 

 

0 + x5 + x4 + 0 + x2 + 0 + 0

 

 

Операция сдвига:

 

 

 

 

 

 

 

 

 

+ x6 + 0 + x4 + 0 + x2 + 0 + 0

 

 

 

 

 

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

 

 

 

 

= x6 + x5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

удаляются биты справа

 

 

 

 

 

Умножение или деление членов полинома:

 

 

 

 

 

Сдвиг влево выполняется умножением каждого члена полинома на xm, где m

 

 

 

При умножении полиномов складываются степени членов

 

 

 

 

 

 

количество сдвигаемых бит

 

 

 

 

 

 

 

 

x3 × x4 = x7

 

 

 

 

 

Сдвиг вправо выполняется делением каждого члена полинома на xm

 

 

 

При делении полиномов вычитаются степени членов

 

 

 

 

 

 

Сдвиг влево на 3 бита:

10011 => 10011000

x4 + x + 1

=>

x7 + x4 + x3

 

 

 

 

x5/x2 = x3

 

 

 

 

 

 

Сдвиг вправо на 3 бита:

10011 => 10

x4 + x + 1

=>

x

 

 

 

 

 

 

 

 

 

 

При операции деления в кодере делимое создается путем сдвига влево ( на 3 бит)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2010

 

А.В. Абилов, Лекция 4. "Обнаружение и исправление ошибок"

43

2010

 

А.В. Абилов, Лекция 4. "Обнаружение и исправление ошибок"

44

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Представлениециклическихкодовввидеполиномастепени

 

 

 

 

 

 

Анализциклического кодаода

 

 

 

Кодер циклического кода с использованием полиномов:

 

 

Анализ возможностей циклического кода с помощью полиномов:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Информационное слово 1001

 

 

 

 

 

С помощью полиномов f(x) с двоичными коэффициентами обозначим следующие

 

 

 

 

Информационное слово

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

представляется как x3 + 1,

 

 

 

 

 

 

функции:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Деление (нет ошибки)

 

 

 

 

 

 

делитель 1011 представляется

 

 

 

 

d(x) информационное слово;

с(x) кодовое слово; s(x) синдром;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

как x3 + x + 1

 

 

 

 

 

 

g(x) генератор (делитель);

e(x) ошибка;

 

 

 

Делитель

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Делимое

 

Для нахождения делимого инф.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В циклических кодах если один или более бит искажены, то синдром отличен от

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

слово сдвигается влево на 3 бита

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нуля, синдром нулевой в случае отсутствия ошибок либо если ошибки не

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(умнож. на x3), результат x6 + x3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

обнаружены

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Первый член делимого, x6,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

делится на первый член

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Остаток

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

делителя, x3. Результат – первый

 

Для циклического кода

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

член частного x3, который затем

 

 

1) Если s(x) ≠ 0,

один или более бит искажены

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

умнож. на делитель (x3 + x + 1)

 

 

2) Если s(x) = 0,

либо

 

 

 

 

 

 

 

 

 

Кодовое слово

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Результат (x6 + x4 + x3) )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

а) искаженных бит нет, либо

 

 

 

 

 

 

 

 

 

 

Информационное слово Остаток

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вычитается из делимого и

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 3.24. Деление CRC с использованием полиномов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

б) какие-то биты искажены, но ошибки не обнаружены декодером

 

 

 

 

 

Деление продолжается до тех пор, пока

 

получается x4 со степенью,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

степень остатка будет меньше степени

 

большей чем у делителя

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

делителя

 

 

 

 

 

 

 

 

 

 

 

 

 

2010

 

 

 

 

А.В. Абилов, Лекция 4. "Обнаружение и исправление ошибок"

45

2010

 

 

А.В. Абилов, Лекция 4. "Обнаружение и исправление ошибок"

46

 

 

 

 

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

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Анализциклическогокода

 

 

 

 

 

 

 

 

 

 

 

Анализциклического кодаода

 

 

 

Критерии выбора генератора:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Если генератор g(x) имеет более чем один член и и коэффициент x0 = 1, то

 

 

 

 

 

 

Принятое слово можно представить в виде суммы: с(x) + e(x)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

обнаруживаются все одиночные ошибки

 

 

 

 

 

 

Для получения синдрома приемник делит принимаемое кодовое слово на g(x):

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Принимаемоеслово

=

c(x)

+

e(x)

 

 

 

Пример15

 

 

 

 

 

 

 

g(x)

g(x)

g(x)

 

 

 

 

 

 

 

 

 

 

 

 

 

Который из следующих генераторов g(x) гарантирует обнаружение любой одиночной ошибки?

 

 

 

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

 

 

 

 

 

 

Какие ошибки для этих случаев не обнаруживаются?

 

 

 

 

 

 

 

– это остаток второго члена. Если синдром нулевой, то либо e(x) = 0 либо e(x)

 

 

1.

x + 1

 

 

 

 

 

 

 

делится на g(x) (ошибки при этом не обнаруживаются)

 

 

2.

x3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.

1

 

 

 

 

 

 

В циклическом коде ошибки, комбинация e(x) которых делится на g(x),

 

 

 

 

 

 

 

 

 

 

Решение

 

 

 

 

 

 

 

не обнаруживаются

 

 

 

 

 

 

 

 

 

 

 

1.

Ни одна из комбинаций xi не может делится на x + 1. Т.е. xi/(x + 1) всегда имеет остаток.

 

 

 

 

 

 

 

 

 

 

 

 

Генератор g(x) для обнаружения одиночной ошибки:

 

 

 

 

 

 

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

 

 

 

 

 

 

Одиночную ошибку можно представить в виде e(x) = xi, где i – позиция бита

 

 

2.

Если i ≥ 3, то xi делится на g(x). Т.е.остаток от xi/x3 нулевой и приемник ложно решает,

 

 

 

При обнаружении одиночной ошибки xi не делится на g(x), остаток не нулевой

 

 

 

 

что ошибка есть. Обнаруживаются лишь одиночные ошибки на позициях 1…3, ошибки

 

 

 

 

 

 

 

на позициях 4 и выше не обнаруживаются

 

 

 

 

 

 

Если g(x) имеет по крайней мере два члена и коэффициент x0 ≠ 0 (крайний

 

 

3.

Любая комбинация xi делится на g(x) без остатка и ни одна одиночная ошибка не может

 

 

 

 

правый бит = 1), то e(x) не может делиться на g(x) без остатка

 

 

 

 

 

 

быть обнаружена

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2010

 

А.В. Абилов, Лекция 4. "Обнаружение и исправление ошибок"

47

2010

 

А.В. Абилов, Лекция 4. "Обнаружение и исправление ошибок"

48

 

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

 

 

 

 

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

 

 

Анализциклическогокода

 

 

 

 

Анализциклического кодаода

 

Генератор g(x) для обнаружения двух изолированных одиночных ошибок:

 

Пример16

 

Представим две изолированные одиночные ошибки в виде : e(x) = xj + xi, где i и

Который из следующих генераторов g(x) гарантирует обнаружение любых двух изолированных

 

j – определяют позиции ошибок, а разница j i есть расстояние между

 

одиночных ошибок?

 

 

ошибками

Разность i j

 

 

 

1.

x + 1

 

 

 

 

 

 

2.

x4 + 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. x7 + x6 +1

 

 

 

 

 

 

 

 

Решение

 

 

 

Рис. 3.25. Две изолированные одиночные ошибки

 

 

 

1.

Любая пара рядом расположенных одиночных ошибок (j – i =1) не может быть

 

Комбинацию двух ошибок можно записать в виде: e(x) = xi(xj–i + 1)

 

 

обнаружена, т.к. в этом случае x1 + 1 делится на x + 1 без остатка

 

 

2.

Любые две ошибки, расположенные на расстоянии четыре позиции (j – i =4), не

 

Если g(x) имеет более одного члена и один из них x0, то xi не делится на g(x)

 

 

 

 

обнаруживаются, т.к. в этом случае xji+ 1 делится на x4 + 1 без остатка

 

Ошибка e(x) будет делиться на g(x), только если xj–i + 1 будет делиться на g(x),

3.

Две изолированные одиночные ошибки обнаруживаются при любом их расположении

 

иначе говоря, для обнаружения двух одиночных ошибок xt + 1 не должен

 

Генератор g(x) для обнаружения нечетного количества ошибок:

 

 

делиться на g(x), где t = j – i

разница в пределах от 0 до n – 1

 

 

Любое количество нечетных ошибок обнаруживается любым генератором g(x),

 

 

 

 

 

 

 

 

Любые две изолированные одиночные ошибки могут быть обнаружены

 

 

имеющим множитель x + 1. Например, генератор x4 + x2 + x +1 может быть

 

 

 

 

представлен как произведение двух полиномов: x +1 и x3 + x2 + 1

 

 

если выражение xt + 1 (t в пределах от 2 до n – 1) не делится на g(x)

 

Нечетное количество ошибок обнаруживается генератором с множителем x + 1

 

 

 

 

 

 

 

2010

 

А.В. Абилов, Лекция 4. "Обнаружение и исправление ошибок"

49

2010

А.В. Абилов, Лекция 4. "Обнаружение и исправление ошибок"

50

 

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

 

 

 

 

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

 

 

Анализциклическогокода

 

 

 

 

Анализциклического кодаода

 

Генератор g(x) для обнаружения пакетных ошибок:

 

 

 

Генератор g(x) для обнаружения пакетных ошибок:

 

Наибольшее значение имеют пакетные ошибки, которые могут быть

 

2.

В некоторых редких случаях, если j – i = r или L = r + 1 синдром оказывается

 

представлены в форме: e(x) = (xj + … + xi), количество членов в выражении –

 

нулевой и пакетная ошибка не обнаруживается. В этом случае вероятность не

 

два и более

 

 

 

 

 

обнаружения пакетной ошибки длиной r + 1 равна 0,5r–1.

 

Комбинацию всех ошибок в пакете можно записать в виде: e(x) = xi(xj–i + … + 1)

 

Например, g(x) = x14 + x3 +1 , где r = 14, тогда пакетная ошибка длиной L = 15

 

Ошибки обнаруживаются в том случае, если выражение x

j–i

+ … + 1 не делится

 

может быть пропущена с вероятностью 0,514–1, что примерно 1/10000 (0,000122)

 

 

В некоторых редких случаях, если j – i > r или L > r + 1 синдром оказывается

 

на генератор g(x), т.е. остаток от (xj–i + … + 1)/(xr + … + 1) не нулевой, где

 

3.

 

выражение (xr + … + 1) – генератор и r – его макс. степень (избыточность)

 

 

нулевой и пакетная ошибка не обнаруживается. В этом случае вероятность не

 

Рассмотрим три случая:

 

 

 

 

 

обнаружения пакетной ошибки длиной более чем r + 1 равна 0,5r. Например,

1. При любых j – i < r, остаток всегда не нулевой. Запишем j – i = L – 1, где L

 

 

g(x) = x14 + x3 +1 , где r = 14, тогда пакетная ошибка длиной L > 15 может быть

 

 

пропущена с вероятностью 0,514 , что примерно 1/16000 (0,000061)

 

 

длина ошибки. Следовательно, L – 1 < r или L < r + 1 или L r. Это означает,

 

 

 

 

 

 

 

что все пакетные ошибки, длиной меньшей или равной числу проверочных бит,

 

 

 

 

будут обнаружены.

 

 

 

 

Все пакетные ошибки длиной L r обнаруживаются

 

 

 

Длина пакетной ошибки L

 

 

 

Все пакетные ошибки длиной L = r + 1 обнаруживаются с вероятностью 1 – 0,5r1

 

 

1

0

 

 

 

Все пакетные ошибки длиной L > r + 1 обнаруживаются с вероятностью 1 – 0,5r

 

 

 

 

 

 

 

 

 

 

 

Рис. 3.26. Пакетная ошибка

 

 

 

 

 

 

2010

 

А.В. Абилов, Лекция 4. "Обнаружение и исправление ошибок"

51

2010

А.В. Абилов, Лекция 4. "Обнаружение и исправление ошибок"

52

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

Анализциклическогокода

Пример17

Который из следующих генераторов g(x) гарантирует обнаружение пакетных ошибок различной длины?

1.x6 + 1

2.x18 + x7 + x + 1

3.x32 + x23 + x7 + 1

Решение

1.Такой генератор способен обнаружить все пакетные ошибки длиной L ≤ 6 бит; пакетная ошибка длиной L = 7 бит будет пропущена с вероятностью 0,03; пакетная ошибка длиной L ≥ 8 бит будет пропущена с вероятностью 0,016.

2.Такой генератор способен обнаружить все пакетные ошибки длиной L ≤ 18 бит; пакетная ошибка длиной L = 19 бит будет пропущена с вероятностью 8·106; пакетная ошибка длиной 20 и более бит будет пропущена с вероятностью 4·106.

3.Такой генератор способен обнаружить все пакетные ошибки длиной L ≤ 32 бит; пакетная ошибка длиной L = 33 бит будет пропущена с вероятностью 5·1010; пакетная ошибка длиной 34 и более бит будет пропущена с вероятностью 3·1010.

2010

А.В. Абилов, Лекция 4. "Обнаружение и исправление ошибок"

53

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

Анализциклического кодаода

Критерии по выбору генератора:

Полином генератора (образующий полином) должен удовлетворять следующим условиям:

1.Должен иметь по крайней мере два члена

2.Коэффициент члена x0 должен быть равен 1

3.Не должен делиться на xt + 1, для t от 2 до n – 1

4.Должен иметь множитель x + 1

Стандартные образующие полиномы:

 

Код

Полином

Применение

 

 

CRC-8

x8 + x2 + x + 1

ATM заголовок

 

CRC-10

x10

+ x9 + x5 + x4 + x2 + 1

ATM AAL

 

 

CRC-16

x16

+ x12

+ x5 + 1

HDLC

 

 

CRC-32

x32

+ x26

+ x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 +

Локальные

 

 

 

x4 + x2 + x + 1

сети LAN

 

 

 

 

 

 

 

 

2010

 

А.В. Абилов, Лекция 4. "Обнаружение и исправление ошибок"

54

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