ГОСТ Р 54714—2011
15
Код циклической проверки CRC-32 должен вычисляться как результат деления входного блока данных на
порождающий многочлен:
x
32
+ x
26
+ x
23
+ x
22
+ x
16
+ x
12
+ x
11
+ x
10
+ x
8
+ x
7
+ x
5
+ x
4
+ x
2
+ x + 1.
HEX
Декодер кода циклической проверки CRC-32 должен обрабатывать данные на уровне битов и содержать
14 сумматоров и 32 элемента задержки Z(i), где индекс i = 0, 1, 2, 3, 4, 6, 7, 9, 10, 11, 15, 21, 22, 25, 31 — номер яче-
ек задержки, на выходе которых осуществляется операция суммирования. Этот индекс на 1 меньше соответству-
ющей степени порождающего многочлена. Вход CRC-декодера суммируется с выходом ячейки Z(31), и результат
суммирования подается, в том числе, на вход ячейки Z(0), в результате чего реализуется операция циклического
деления.
Перед обработкой блока данных MIP-пакета декодером CRC-32, на выходе каждого элемента задержки Z(i)
должно быть установлено значение «1». После данной инициализации на вход CRC декодера должен подаваться
каждый байт MIP-пакета, включая четыре байта кода crc_32, но исключая байты стаффинга. Каждый байт должен
сдвигаться в CRC декодере на 1 бит за такт, причем старший бит (НЗБ) должен подаваться на вход CRC-декодера
первым. Поскольку транспортный пакет MPEG-2 начинается байтом синхронизации со значением 0 × 47
(01000111), то на вход CRC-декодера сначала должен поступать »0», а затем «1». После ввода последнего бита
поля crc_32 в декодер, то есть в ячейку Z(0) после сложения его с выходом ячейки Z(31) производится считывание
выходных состояний всех элементов задержки Z(i). В отсутствие ошибок каждый из выходов ячеек Z(i) должен быть
равен нулю. Этот алгоритм работы обеспечивается вычислением в кодере CRC-32 такого кода, который, будучи
введенным в поле crc_32 MIP-пакета, соответствует результату проверки с нулевым значением во всех разрядах.