Циклическая проверка четности с избыточностью (CRC)
С.1 Метод обнаружения ошибки, используя CRC
Циклическая проверка четности с избыточностью (CRC) проводится по всем данным, содержащимся в сообщении от начала флажков и до конца данных. Данная проверка CRC используется от терминального оборудования VCD к карте VICC и наоборот (см. таблицу С.1).
Таблица С.1 - Определение CRC
Определение CRC | |||||
Тип CRC | Длина | Полином | Направление | Начальная установка | Остаток |
ИСО/МЭК 13239 | 16 бит | Обратное | `FFFF' | `F0B8' |
Чтобы обеспечить дополнительную защиту от ошибок сдвига, дальнейшее преобразование осуществляется по вычисленному значению CRC. Значение, прикрепленное к сообщению для передачи, является дополнением вычисленного значения циклической проверки четности с избыточностью (CRC). Это преобразование показано в примере, приведенном ниже.
Для проверки принятых сообщений два байта CRC также часто включаются для перерасчета и облегчения использования метода. В этом случае остаток для ожидаемого генерируемого значения CRC составляет 'F0B8'.
Приведем пример, который иллюстрирует метод вычисления CRC на языке C по заданному набору байтов, составляющих сообщение.
При выполнении приведенной выше C-программы распечатка содержит следующие сообщения:
CRC согласно ИСО/МЭК 13239 {1, 2, 3, 4} есть '3991';
Полученный CRC - '3991';
Младший значащий байт (переданный первым): '91';
Старший значащий байт (переданный вторым): '39';
Исполнение этой программы при CHECK_CRC дает: 'F0B8'.
C.2 Пример вычисления CRC
Данный пример ссылается на запрос считать единичный блок (Read single block) при считывании блока '0В'.
Режимы, выбранные терминальным оборудованием VCD: одна поднесущая, высокая скорость передачи данных от карты VICC к терминальному оборудованию VCD, запрос по адресу.
Универсальный идентификатор UID карты VICC: 'Е0 04 АВ 89 67 45 23 01'.
Поэтому запрос состоит из следующих полей:
- флажки: '22';
- код команды: '20';
- UID: 'Е0 04 AB 89 67 45 23 01', где `Е0'- старший значащий байт;
- номер блока: '0B';