150
Приложение Г (обязательное)
Вычисление CRC слова
Реализация кодов циклической проверки избыточности (CRC-коды) позволяет обнаруживать ошибки передачи на приемной стороне. Для этой цели CRC слова должны быть включены в передаваемые данные. Эти CRC слова должны быть определены в результате процедуры, описанной в этом приложении.
CRC код определен полиномом степени n
Gn(x) = xn + gn-ix°-1 + ... + g2x2 + g^x + 1, (Г.1)
где n > 1; g, e {0,1}, i = 1,...n - 1.
Вычисление CRC может быть выполнено посредством сдвигового регистра, содержащего n ступеней (ячеек) регистра, эквивалентного степени полинома (см. рисунок Г. 1). Ячейки обозначены b0...bn-1, где b0 соответствует 1, b1 - х, b2 - х2,..., bn-1 -xn-1. В отводы сдвигового регистра вводятся элементы «исключающее ИЛИ» на входах тех ячеек, где соответствующие коэффициенты g, полинома равны 1.
В начале вычисления CRC все ячейки регистра инициализированы ко всем единицам. После поступления первого бита блока данных (сначала СБ) на вход тактовый генератор сдвига вызывает сдвиг содержания регистра на одну ячейку в сторону СБ ячейки, в то же время загружая ячейки с отводами результатами соответствующих «исключающее ИЛИ» операций. Процедура затем повторяется для каждого бита данных. Вслед за сдвигом после поступления последнего бита (МБ) блока данных на вход сдвиговый регистр содержит CRC слово, которое затем считывается из него. Данные и CRC слово передаются начиная с СБ. CRC должен быть инвертирован (дополнением до 1 ) перед передачей.
CRC коды, используемые в системе DRM, основываются на следующих полиномах:
G16(x) = x16 + x12 + x5 + 1;
G8(x) = x8 + x4 + x3 + x2 + 1;
G6(x) = x6 + x5 + x3 + x2 + x + 1;
G5(x) = x5 + x4 + x2 + x + 1; (Г.2)
G3(x) = x3 + x + 1 ;
G2(x) = x2 + x + 1 ;
G1 ( x) = x + 1 .
Назначение полиномов для соответствующих приложений задается в каждом подразделе.