Применительно к циклическим кодам принято отводить под информационные символы k старших разрядов многочлена кода, а под проверочные символы n-k низших разрядов.
Применяется следующая процедура кодирования:
многочлен а(х), соответствующий k -разрядной комбинации информационных разрядов кода, умножается на хт, где т - степень образующего многочлена. Это соответствует добавлению к комбинации а(х) m нулей со стороны младших разрядов. Произведение a(x)xm делится на образующий многочлен g0(x). В общем случае при этом получаем некоторое частное q(x) и остаток r(x):
a(x)xm=q(x)g0(x) Å r(x).
Остаток прибавляется к а(х)хт. Поскольку степень остатка r(x) не превышает т-1, а в комбинации, соответствующей многочлену а(х)хт, т младших разрядов-нулевые, то указанная операция сложения равносильна приписыванию r(x) к а(х) со стороны младших разрядов.
Полученный многочлен f(x)=a(x)xmÅ r(x)=q(x)g0(x) делится на g (x) без остатка и, следовательно, соответствует разрешенной комбинации кода.
Техническая реализация описанного процесса кодирования в случае двоичных кодов осуществляется посредством регистра сдвига с обратными связями, состоящего из ячеек памяти и сумматоров по модулю два. Сдвиг информации в регистре осуществляется импульсами, поступающими с генератора продвигающих импульсов, который на схеме, как правило, не указывается. На вход регистра поступают только коэффициенты многочленов, причем, начиная с коэффициента при переменной в старшей степени.
На рис.3.1 представлена схема, выполняющая деление произвольного многочлена (например, многочлена а(х)=ап-1хп-1+ап-2хп-2+,...,+а1(х)+а0) на некоторый фиксированный (например, образующий) многочлен
g(x)=gn-kхп-к+...+g1(x)+g0.
Обратные связи регистра соответствуют виду многочлена g0(x). Количество включаемых в него сумматоров равно числу отличных от нуля коэффициентов g0(x), уменьшенному на единицу. Это объясняется тем, что сумматор сложения коэффициентов старших разрядов многочленов делимого и делителя в регистр не включается, так как результат сложения заранее известен (он равен нулю).
За первые m тактов коэффициенты многочлена-делимого заполняют регистр, причем коэффициент при х в старшей степени достигает крайней правой ячейки. На следующем такте единица делимого, выходящая из крайней ячейки регистра по цепи обратной связи, подается к сумматорам по модулю два, что равносильно вычитанию многочлена-делителя из многочлена-делимого. Если в результате предыдущей операции коэффициент при старшей степени х у остатка оказался равным нулю, то на следующем такте вычитания делителя не происходит. Коэффициенты делимого только сдвигаются вперед по регистру на один разряд, что находится в полном соответствии с тем, как это делается при делении многочленов столбиком.
Рис. 3.1 Схема деления на произвольный многочлен.
Деление заканчивается с приходом последнего символа многочлена-делимого. При этом разность будет иметь более низкую степень чем делитель. Эта разность и есть остаток.
Рассмотренная схема деления многочленов может использоваться при декодировании. При кодировании она не применяется в силу того, что между информационными и проверочными символами образуется разрыв в m тактов.
Для кодирования используется схема, позволяющая разделить многочлен типа а(х)хm за к тактов. Она отличается от рассмотренной тем, что коэффициенты кодируемого многочлена участвуют в обратной связи не через m сдвигов, а сразу с первого такта.
Для случая g0(x)=x3+x2+1 и а(х)=а3+1 схема кодирующего устройства приведена на рис. 3.2.
В исходном состоянии ключ К1 находится в положении 1, а ключ К2 замкнут. Информационные символы одновременно поступают как в линию связи, так и в регистр сдвига, где за к тактов образуется остаток. Затем ключ К2 размыкается, ключ К1 переходит в положение 2 и остаток выводится в канал связи.
Процесс формирования кодовой комбинации шаг за шагом представлен в табл. 3.1, где черточками отмечены освобождающиеся ячейки, занимаемые новыми информационными символами.
Рис. 3.2 Схема кодирующего устройства.
Таблица 3.1
N такта | Вход | Состояние ячеек регистров | Выход | ||
- | |||||
- | - | ||||
- | - | - |