Статус документа
Статус документа

ГОСТ Р ИСО/МЭК 15693-3-2011 Карты идентификационные. Карты на интегральных схемах бесконтактные. Карты удаленного действия. Часть 3. Антиколлизия и протокол передачи данных


Приложение С
(справочное)

Циклическая проверка четности с избыточностью (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';