ГОСТ Р ИСО/МЭК 18000-62-2014. Национальный стандарт Российской Федерации. Информационные технологии. Идентификация радиочастотная для управления предметами. Часть 62. Параметры радиоинтерфейса для связи в диапазоне частот 860 - 960 МГц, тип B
Приложение A
(справочное)
КОНТРОЛЬ 16-БИТОВЫМ ЦИКЛИЧЕСКИМ ИЗБЫТОЧНЫМ КОДОМ (CRC-16)
A.1. Пример схемы кодирования/декодирования кода CRC-16
Пример схемы кодирования/декодирования кода CRC-16 приведен на рисунке A.1. Алгоритм использует полином и начальное значение, определенное в таблице A.1 (полином для вычисления кода CRC-16, x16 + x12 + x5 + 1, соответствует стандарту CRC-CCITT, ITU Recommendation X.25).
Таблица A.1
Прообраз кода CRC-16
Прообраз кода CRC-16 | ||||
Тип кода CRC | Длина | Полином | Начальное значение | Остаток |
по ИСО/МЭК 13239 | 16 бит | x16 + x12 + x5 + 1 | FFFFh | 1D0Fh |
Рисунок A.1 - Пример схемы контроля кодом CRC-16
Для вычисления значения кода CRC-16 необходимо загрузить CRC-регистр Q[15:0] начальным значением FFFFh (при этом Q15 содержит старший бит, а Q0 - младший), а затем на вход, обозначенный "данные", нужно подать синхронизованную битовую последовательность данных, которые требуется закодировать, начиная со старшего бита (MSB). После последнего такта ввода данных в регистре Q[15:0] получится двоичное дополнение кода CRC-16. Инверсия битов позволяет вычислить значение кода CRC-16.
Существуют два метода контроля данных кодом CRC-16:
Метод 1: В CRC-регистр Q[15:0] загружается начальное значение FFFFh, затем на вход "данные" подается синхронизованная битовая последовательность полученных данных и кода CRC-16, начиная со старшего бита. Контроль кодом CRC-16 считается выполненным успешно, если в регистре оказалось значение Q[15:0] = 1D0Fh.
Метод 2: В CRC-регистр Q[15:0] загружается начальное значение FFFFh, затем на вход "данные" подается синхронизованная битовая последовательность полученных данных, начиная со старшего бита. Все полученные биты кода CRC-16 вместе с данными инвертируются и также подаются на вход "данные", начиная со старшего бита. Контроль кодом CRC-16 считается выполненным успешно, если в регистре оказалось значение Q[15:0] = 0000h.
A.2. Примеры вычислений кода CRC-16
Пример 1: Ниже показаны:
(a) - вычисление кода CRC, который использует устройство опроса типа B при передаче радиочастотной метке команды SUCCESS (код 09h);
(b) - выполнение радиочастотной меткой контроля данных полученной команды. Устройство опроса передает пакет данных, указанный в таблице A.2, но код CRC-16 вычисляется только для кода команды SUCCESS (09h).
Таблица A.2
Пример пакета команды системы типа B
Признак заголовка (Preamble detect) | Заголовок (Preamble) | Разделитель (Start delimiter) | Код команды SUCCESS | Код CRC-16 |
2 бита | девять символов '0' манчестерского кода | 11 00 11 10 10 | 09h | CRC-16 |
Вычисление кода CRC-16: в таблице A.3 указаны значения 16 бит CRC-регистра при побитовом введении в него кода команды 09h. Биты кода CRC-16, которые передает УСО в команде, инвертированы по отношению к результату шага 8 таблицы A.3, т.е. радиочастотной метке передается значение 8F26h.
Таблица A.3
Значения регистра Q[15:0] для команды SUCCESS
(см. таблицу A.2)
Шаг | Бит входных данных (кода команды SUCCESS) | Значение CRC-регистра Q[15:0] |
1 | 0 | EFDFh |
2 | 0 | CF9Fh |
3 | 0 | 8F1Fh |
4 | 0 | 0E1Fh |
5 | 1 | 0C1Fh |
6 | 0 | 183Eh |
7 | 0 | 307Ch |
8 | 1 | 70D9h |
Контроль кодом CRC-16: как указано в таблице A.1, радиочастотная метка может выбрать один из двух методов проверки полученной команды кодом CRC-16. В таблице A.4 показан первый метод, при котором радиочастотная метка подает на вход "данные" CRC-регистра синхронизированную битовую последовательность полученных данных и кода CRC-16 {data, CRC-16}, начиная со старшего бита. Конечное значение CRC-регистра Q[15:0] должно быть равно 1D0Fh. На шаге 0 таблицы A.4 предполагается, что CRC-регистр предварительно загружен значением FFFFh, данные введены в регистр, после чего его значение оказалось Q[15:0]=70D9h перед вводом кода CRC-16. Таблица A.4 показывает значения 16 бит CRC-регистра (см. рисунок A.1) при побитовом вводе кода CRC-16 в регистр.
Таблица A.4
Первый метод контроля кодом CRC-16 для последовательности
бит {код команды SUCCESS, код CRC-16}
Шаг | Бит входных данных (полученного кода CRC-16) | Значение CRC-регистра Q[15:0] |
0 | Введен код команды | 70D9h |
1 | 1 | F193h |
2 | 0 | F307h |
3 | 0 | F62Fh |
4 | 0 | FC7Fh |
5 | 1 | F8FEh |
6 | 1 | F1FCh |
7 | 1 | E3F8h |
8 | 1 | C7F0h |
9 | 0 | 9FC1h |
10 | 0 | 2FA3h |
11 | 1 | 4F67h |
12 | 0 | 9ECEh |
13 | 0 | 2DBDh |
14 | 1 | 4B5Bh |
15 | 1 | 8697h |
16 | 0 | 1D0Fh |
В таблице A.5 показан второй метод контроля кодом CRC-16, при котором радиочастотная метка подает на вход "данные" CRC-регистра синхронизированную битовую последовательность полученных данных, начиная со старшего бита. Затем радиочастотная метка инвертирует все биты полученного кода CRC-16, подает их на вход "данные" и проверяет конечное значение регистра Q[15:0], которое должно быть равно 0000h. На шаге 0 таблицы A.5 предполагается, что CRC-регистр предварительно загружен значением FFFFh, данные введены в регистр, после чего его значение оказалось Q[15:0]=70D9h перед вводом инвертированного кода CRC-16. Таблица A.5 показывает значения 16 бит CRC-регистра (см. рисунок A.1) при побитовом вводе в регистр инвертированного кода CRC-16.
Таблица A.5
Второй метод контроля кодом CRC-16 для последовательности
бит {код команды SUCCESS, инвертированный код CRC-16}
Шаг | Бит входных данных (инвертированного полученного кода CRC-16) | Значение CRC-регистра Q[15:0] |
0 | Введен код команды | 70D9h |
1 | 0 | E1B2h |
2 | 1 | C364h |
3 | 1 | 86C8h |
4 | 1 | 0D90h |
5 | 0 | 1B20h |
6 | 0 | 3640h |
7 | 0 | 6C80h |
8 | 0 | D900h |
9 | 1 | B200h |
10 | 1 | 6400h |
11 | 0 | C800h |
12 | 1 | 9000h |
13 | 1 | 2000h |
14 | 0 | 4000h |
15 | 0 | 8000h |
16 | 1 | 0000h |
