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

определить, было ли искажение кадра при передаче, и

если искажение было – то вычислить номер искажённого бита.

8.4.3Методы обнаружения искажений в кадрах

Другой класс методов анализа искажений в кадрах связан с установлением самого факта искажения.

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

Для сравнения сложности задач исправления искажений и обнаружения искажений рассмотрим следующий пример. Пусть известно, что в кадре может быть искажено не более одного бита. Если размер кадра n = 1000, то

для исправления такого искажения нужно 10 контрольных битов,

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

Один из методов кодирования с целью обнаружения искажений заключается в следующем:

кадр делится на k частей, и

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

Если при передаче этого кадра биты искажаются равновероятно и независимо, то для каждой такой части кадра вероятность того, что

254

эта часть кадра искажена, и

тем не менее, её чётность верна (т.е. мы считаем её неискажённой)

меньше 1/2, поэтому вероятность необнаружения искажения меньше 2−k.

Другим методом кодирования с целью обнаружения искажений является полиномиальный код (Cyclic Redundancy Check, CRC).

Данный метод основан на рассмотрении битовых строк как многочленов над полем Z2 = {0, 1}: битовая строка вида

(bk, bk−1, . . . , b1, b0)

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

bk · xk + bk−1 · xk−1 + . . . + b1 · x + b0

Пусть необходимо передавать кадры размера m + 1. Каждый такой кадр рассматривается как многочлен M(x) степени ≤ m.

Для кодирования этих кадров выбираются

число r < m, и

многочлен G степени r, имеющий вид

xr + . . . + 1

Многочлен G называется образующим многочленом.

Для каждого кадра M(x) его код T (x) вычисляется следующим образом. Многочлен xr · M(x) делится с остатком на G(x):

xr · M(x) = G(x) · Q(x) + R(x)

где R(x) – остаток, т.е. многочлен степени < r. Кодом кадра M(x) является многочлен

def

T (x) = G(x) · Q(x)

Нетрудно видеть, что размер T (x) больше размера M(x) на r.

255

Обнаружение искажений при передаче кадра T (x) производится путём деления полученного кадра T 0(x) на G(x): считается, что кадр T (x) был передан без искажений (т.е. полученный кадр T 0(x) совпадает с T (x)), если T 0(x) делится без остатка на

G(x).

Если кадр T (x) был передан без искажений, то исходный кадр M(x) можно восстановить путём представления T (x) в виде сум-

мы

T (x) = xr · M(x) + R(x)

где R(x) состоит из всех мономов в T (x) степени < r.

Если кадр T (x) был передан с искажениями, то связь между T (x) и T 0(x) можно представить в виде соотношения

T 0(x) = T (x) + E(x)

где многочлен E(x) называется многочленом искажений, и соответствует битовой строке, каждая компонента которой равна

1, если соответствующий бит кадра T (x) был искажён, и

0, иначе.

Таким образом,

если T (x) был искажён в одном бите, то E(x) = xi

если T (x) был искажён в двух битах, то E(x) = xi + xj,

и т.д.

Из определений T 0(x) и E(x) следует, что T 0(x) делится на G(x) без остатка тогда и только тогда, когда E(x) делится на G(x) без остатка. Поэтому искажение, соответствующее многочлену E(x), обнаруживается в том и только том случае, когда остаток от деления E(x) на G(x) не равен нулю.

Рассмотрим подробнее вопрос о том, какие виды искажений могут быть обнаружены при помощи данного метода.

1.Однобитные искажения обнаруживаются всегда, т.к. многочлен E(x) = xi не делится на G(x) без остатка.

256

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

E(x) = xi + xj = xj · (xi−j + 1)

делится на G без остатка (мы предполагаем, что i > j):

xj · (xi−j + 1) = G(x) · Q(x)

(8.16)

Из теоремы о единственности разложения на множители многочленов над полем следует, что соотношение (8.16) влечёт соотношение

xi−j + 1 = G(x) · Q1(x)

(8.17)

Имеет место следующий факт: если

G(x) = x15 + x14 + 1

(8.18)

то для каждого k = 1, . . . , 32768 многочлен xk + 1 не делится на G(x) без остатка. Поэтому образующий многочлен (8.18) позволяет обнаружить двухбитные искажения в кадрах длины ≤ 32768.

3. Представим многочлен искажений E(x) в виде

E(x) = xj · (xk−1 + . . . + 1)

(8.19)

Число k в этой записи называют размером пакета ошибок. Очевидно, что k равно размеру подстроки строки искажений (т.е. той строки, которой соответствует многочлен E(x)), ограниченной левым и правым единичными битами.

Обозначим знакосочетанием E1(x) второй множитель в (8.19).

Из теоремы о единственности разложения на множители многочленов над полем следует, что искажение, соответствующее многочлену (8.19), не обнаруживается в том и только том случае, когда E1(x) делится без остатка на G(x). Это невозможно, если степень E1(x) меньше степени G(x), т.е. если k − 1 < r (или k ≤ r).

Таким образом, можно обнаружить такие искажения, размер пакета ошибок в которых ≤ r.

257

4.Если размер пакета ошибок k = r + 1, то многочлен E1(x) (см. предыдущий пункт) делится без остатка на G(x) в том и только том случае, когда E1(x) = G(x).

Вероятность такого совпадения равна 2−(r−1).

Таким образом, если размер пакета ошибок равен r + 1, то вероятность необнаружения такого искажения равна 2−(r−1).

5.Можно доказать, что если размер пакета ошибок k > r + 1, то вероятность необнаружения такого искажения < 2−r.

6.Если

искажено нечётное количество битов, т.е. E(x) состоит из нечётного количества мономов, и

G = (x + 1) · G1

то такое искажение обнаруживается, т.к. если бы было верно равенство

E(x) = G(x) · Q(x)

для некоторого многочлена Q(x), то, в частности было бы верно равенство

E(1) = G(1) · Q(1)

(8.20)

чего не может быть, так как левая часть в (8.20) равна 1,

аправая – 0.

Взаключение отметим, что в стандарте IEEE 802 используется образующий многочлен G(x) вида

G(x) = x32 + x26 + x23 + x22 + x16 + x12 + x11+

+x10 + x8 + x7 + x5 + x4 + x2 + x + 1

он обнаруживает искажения, в которых размер пакета ошибок ≤ 32, или искажено нечётное количество битов.

258