Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга бельфер.docx
Скачиваний:
228
Добавлен:
20.09.2019
Размер:
9.74 Mб
Скачать
    • 4.4. Обнаружение ошибок с помощью избыточного циклического кода

Ниже приводятся три способа описания определения кода CRC: с использованием арифметики по модулю 2, с использованием полинома и аппаратная реализация [13].

      • 4.4.1. Пример с использованием арифметики по модулю 2

В вычислениях по модулю 2 используется двоичное сложение без переноса в старший разряд (операция исключающего ИЛИ).

Введем следующие обозначения:

  • T – n-битовый кадр, который необходимо передать;

  • D – k-битовый блок сообщения (k первых бит кадра T);

  • R – (n-k) – битовая контрольная последовательность кадра (последние (n-k) бит кадра T). Значение R необходимо вычислить;

  • P - (n-k+1) – битовый делитель.

Пример:

  • Дано: сообщение D – 1010001101 (10 бит); последовательность P – 110101 (6 бит); Итак, n =15, k=10, n-k=5.

  • Сообщение умножается на 2 n-k, что дает в результате: 101000110100000.

  • Полученная последовательность делится на P:

Здесь Q – целое число от деления.

  • Полученный остаток складывается с 2 n-k * D, результат (T = 101000110101110) передается.

  • При отсутствии ошибок принятая последовательность T не отличается от переданной. Приемник выполняет деление на P:

Поскольку деление не дало остатка, считается, что ошибки отсутствуют.

4.4.2. Пример с использованием полинома

Используя предыдущий пример, получаем: последовательности D = 1010001101 соответствует полином D(Χ) = Χ9 + Χ7 + Χ3 + Χ2 + 1, последовательности Р = 110101 - полином P(Χ) = Χ5 + Χ4 + Χ2 + 1, последовательности R = 01110 − R(Χ) = Χ3 + Χ2 + Χ.

Полиномиальное деление, соответствующее приведенному ранее двоичному делению, показано на рис. 4.9.

Ошибка не обнаружится только в том случае, если соответствующий полином Е(Х) делится на Р(Х). При надлежащем выборе полинома Р(Х) выявляются такие ошибки:

  • все 1-битовые ошибки, если Р(Х) имеет более одного ненулевого члена;

  • все 2-битовые ошибки, если Р(Х) имеет делитель из трех членов;

  • любое нечетное количество ошибок, если в разложении Р(Х) по множителям: присутствует (X + 1);

  • любой пакет ошибок, длина которого не превышает n-k, или, эквивалентно, не превышает длину контрольной последовательности кадра.

Здесь Q(X) – полином от Q.

Рис. 4.9. Пример полиномиального деления

Приведем примеры длин n-k КПК (FCS) используемых полиномов Р(Х) в сетях связи: CRC – 3: в GSM. CRC – 16: в ОКС№7, X.25, Интернет (на межсетевом уровне, на транспортном уровне по протоколу TCP). CRC – 32: в ATM.

      • 4.4.3. Пример аппаратной реализации

Процесс циклической проверки четности с избыточностью можно представить как схему деления, состоящую из элемента исключающего ИЛИ (сложение по модулю 2) и регистра сдвига. Регистр сдвига представляет собой строку 1-битовых ячеек памяти. Каждая ячейка имеет выходную шину, показывающую текущее хранимое значение, и входную шину. В дискретные моменты времени, которые называют тактами, значения ячеек памяти замещаются значениями, указанным во входной шине. Замена происходит синхронно во всем регистре, так что в результате значения ячеек регистра сдвигаются на один бит.

Реализация схемы выглядит следующим образом.

  1. Регистр, содержащий (n - k) бит (по размеру контрольно-проверочной комбинации).

  2. До (n - k) элементов исключающего ИЛИ.

  3. Наличие или отсутствие логического элемента соответствует наличию или отсутствию члена в полиноме-делителе Р (Х), исключая члены 1 и Χn-k .

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

сообщение D = 1010001101; D(Χ) = Χ9 + Χ7 + Χ3 + Χ2 + 1;

делитель P = 110101; P(Χ) = Χ5 + Χ4 + Χ2 + 1.

На рис. 4.10, а) представлена реализация регистра сдвига. Процесс начинается с очистки регистра (все ячейки обнуляются). После этого передаваемое сообщение (делимое) побитово вводится в регистр, начиная со старшего бита. На pис. 4.10, б) приведена таблица, которая иллюстрирует пошаговую работу схемы по мере введения отдельных битов. Строки таблицы содержат значения пяти ячеек регистра сдвига в соответствующие моменты времени. Кроме того, в строках таблицы приводятся значения на выходе трех схем исключающего ИЛИ. Последнее число в каждой строке - значение следующего входного бита, который станет доступен для работы на следующем этапе.

Рис. 4.10. Схема реализации аппаратным способом

Отметим, что операция исключающее ИЛИ влияет на значения ячеек С4, С2 и С0 при следующем сдвиге, что идентично рассмотренному ранее процессу двоичного деления. Процесс выполняется для всех битов передаваемого сообщения. Для обеспечения корректности выходного сигнала используются два ключа. При вводе битов данных оба ключа находятся в положении А. В результате за первые 10 шагов входные биты подаются в регистр сдвига и также используются в качестве выходных битов. По окончании обработки последнего бита данных регистр сдвига содержит остаток деления - содержание регистров после этапа 10. При вводе последнего бита данных в регистр оба ключа устанавливаются в положение В. В этом случае:

  • все логические элементы больше не изменяют значения битов;

  • за следующие 5 шагов на выход подаются 5 бит контрольно-проверочной комбинации (т.е. содержимое регистров после этапа 10).

В приемнике используется аналогичная логика. Принятые биты последовательности М вводятся в регистр сдвига по мере поступления. Если ошибки отсутствуют, то после обработки М регистр сдвига будет содержать последовательность контрольно-проверочной комбинации КПК. После этого начинает поступать переданная последовательность КПК.

В результате на выход регистра будут подаваться двоичные нули и по завершении приема все ячейки будут иметь значение 0.