ГОСТ Р 54309—2011
32
Приложение Д
(обязательное)
Вычисление циклического избыточного кода
Реализация проверки с помощью циклических избыточных кодов (CRC-кодов) позволяет выявлять ошибки
передачи в приемнике. С этой целью слова CRC-кода должны быть включены в передаваемые данные. Слова
CRC-кода определяют в соответствии с описанной в настоящем приложении процедурой.
Код CRC определяют с помощью полинома степени n
G
n
(x) = x
n
+ g
n – 1
∙ x
n – 1
+ … + g
2
∙ x
2
+ g
1
∙ x + 1
i
0n – 1
012n – 1
i
при n ≥ 1 и g
Î
{0,1}, i = 1, … , n – 1.
CRC-код может быть вычислен с помощью сдвигового регистра, содержащего n ячеек, где n равно степени
полинома. Блок-схема вычисления CRC-кода представлена на рисунке Д.1. Ячейки обозначают как b … b, где
b соответствует 1; b соответствует x; b соответствует x
2
; ...; bсоответствует x
n – 1
. Сдвиговый регистр допол-
няют с помощью вставки операторов XOR на входе тех ячеек, где соответствующие коэффициенты g полинома
равны 1.
Рисунок Д.1 — Блок-схема вычисления CRC-кода
n – 1
В начале вычисления кода CRC-8 все ячейки сдвигового регистра инициализируют нулями.
После поступления первого бита блока данных на вход данных (старший бит поступает первым) тактовый
генератор обеспечивает сдвиг ячеек регистра на одну ячейку в направлении ячейки старшего бита b. При этом
в промежуточные ячейки помещают данные после соответствующих операций XOR. Затем процедуру повторяют
для каждого входного бита данных. После поступления последнего бита (младший бит) блока данных на вход сдви-
говый регистр будет содержать слово CRC-кода, которое вслед за этим считывают. При передаче данных и слова
CRC-кода старший бит следует первым.
Код CRC-8, используемый в системе РАВИС, основан на следующем полиноме:
G
8
(x) = x
8
+ x
7
+ x
6
+ x
4
+ x
2
+ 1.