Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Табличный метод вычисления CRC




Операция деление по модулю 2

Пусть массив (последовательность бит) имеет следующий вид: 101111001110 (для простоты примера берем небольшую разрядность). Число, на которое выполняется деление по модулю (носит название образующего полинома) для примера будет 10011. Выбирается это число с учетом тех свойств, что оно должно делиться по модулю 2 без остатка только на единицу и само на себя. Образующий полином имеет разрядность на единицу больше чем разрядность контрольного кода. К примеру, если требуется получить 8 – разрядный контрольный код необходимо взять образующий полином 9 – разрядный.

В рассматриваемом примере это полином 5-го разряда, а контрольная сумма (остаток от деления) будет 4-х разрядной. Если бы требовалось получить 8-разрядный остаток то можно, к примеру, было бы взять образующий полином равным 100011101 в шестнадцатеричном коде 11D.

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

Рис. 1

 

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

Таблица 1. Табличный метод вычисления контрольной суммы.

Адрес в таблице Данные в таблице (числа)
   
  Остаток от деления числа 1 0000 0000 на полином
  Остаток от деления числа 10 0000 0000 на полином
  Остаток от деления числа 11 0000 0000 на полином
  Остаток от деления числа 100 0000 0000 на полином
  Остаток от деления числа 101 0000 0000 на полином
 
  Остаток от деления числа 1111 1111 0000 0000 на полином

Числа являются остатком от деления по модулю 2 числа с n конечными нулями (в нашем примере n = 8) и с n начальными разрядами, равными номеру числа (его адресу) в таблице. Выполняется деление на 9-разрядный образующий полином. Вычисление таблицы производится однократно, и она хранится в ПЗУ или на диске.

Алгоритм вычисления контрольного кода при помощи данной таблицы следующий (рассматриваем случай n = 8). Выбирается первый байт массива, который рассматривается как адрес в таблице (номер числа). Выбираем в таблице число с данным номером — получаем остаток О1. Берем второй байт информационного массива и суммируем его по модулю 2 с остатком О1. Полученное число есть адрес в таблице. Для этого адреса берем из таблицы остаток О2. Выбираем третий байт массива, суммируем его по модулю 2 с остатком О2. Полученное число есть адрес в таблице, выбираем из нее остаток О3 и так далее до конца массива.




Поделиться с друзьями:


Дата добавления: 2015-08-31; Просмотров: 4830; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.