Коды Боуза — Чоудхури — Хоквингема (БЧХ)


Коды Боуза — Чоудхури — Хоквингема (БЧХ) являются подклассом циклических кодов. Их отличительное свойство — возможность построения кода БЧХ с минимальным расстоянием d не меньше заданного. Это важно, потому что, вообще говоря, построение кода с расстоянием не меньше заданного это очень сложная задача.

В БЧХ-коде образующий полинома представляет собой произведение нескольких неприводимых полиномов – мы далее посмотрим каких.

БЧХ коды, вообще-то говоря , как и линейные циклические коды в целом не обязательно являются двоичными., то есть с символами, из которых состоит код =1 или 0.

Символами КС слова могут быть например числа вида qm представленные в виде полиномов с недвоичными коэффициентами. Мы же рассматриваем двоичные коды, что позволяет избежать значительных усилий на знакомство с теорией полей Галуа.

В БЧХ-кодах построение образующего полинома, в основном, зависит от двух параметров: от длины кодового слова n=k+r и от числа исправляемых ошибок S.

Особенностью кода является, то что для исправления числа ошибок S>=2 еще недостаточно условия, что между комбинациями кода минимальное кодовое расстояние dmin=2*S+1. Необходимо также, чтобы длина кода n удовлетворяла условию

 

n = 2h - 1, (1)

 

где h -любое целое число.

 

При этом длина кода n всегда будет нечетным числом и принимать значения: 1,3,7,15,31,63,127..и.т.д, т.е не все значения динымогут быть заданы пользователем.

 

Выбранная по формуле (1) величина n определяет число контрольных символов r.

 

r<=h*S<=log2(n+1)*S. (2)

 

При решении задачи выбора допустимого числа информационных символов при заданных корректирующих свойствах удобно пользоваться таблицей, в которой приведены соотношения корректирующих и информационных разрядов для БЧХ кодов.

 

Построение образующего полинома G(X) производится при помощи таблицы неприводимых полиномов M(X). Образующий полином представляет собой произведение неприводимых полиномов и является их наименьшим общим кратным (НОК). Максимальный номер неприводимого полинома в их произведении

 

p = 2*S - 1 . (3)

 

Порядок полинома используется при определении числа сомножителей. Для построения G(X) используются только нечетные полиномы.

Например, при S=4 ими будут: M1(X); M3(X); M5(X); M7(X). Старший из них имеет номер p=2*S-1=7. Число их равно 4, т.е. равно числу исправляемых ошибок.

Число неприводимых полиномов, участвующих в построении образующего полинома

 

V = S, (4)

 

а старшая степень

 

v= h (5)

 

указывает строку в таблице неприводимых полиномов, из которой обычно выбирается полином для построения G(X). Для построения образующего полинома используются только нечетные полиномы степени v. Иногда допускается использование полиномов и меньшей степени. Степень образующего полинома, полученного в результате перемножения выбранных неприводимых полиномов,

 

b = r = v*S = h*S (6)

 

В общем виде G(X)=НОК[M1(X)M3(X)...Mp(X)].

 

Пример: Рассмотрим построение циклического кода длиной в 15 разрядов, исправляющего одну или две ошибки. Согласно (1) ,

 

n = 2h - 1, откуда h=log2(n+1) = log216 = 4

 

Число контрольных символов k, согласно (2),

 

r=log2(n+1)*S=4*2=8.

 

Номер старшего из неприводимых полиномов, cогласно (3)

 

p = 2*S-1 = 2*2 -1 = 3.

 

Количество неприводимых полиномов, участвующих в построении образующего полинома, согласно (4),

 

V= S = 2,

 

cтаршая степень, согласно (5),

 

v = h = 4.

 

Степень образующего полинома , согласно (6),

 

b = r = 8.

 

Из таблицы неприводимых полиномов выбираем полиномы степени v=4, из них выбираем два (V=2) неприводимых полинома , номер старшего из которых равен 3(p=3), т.е. выбираем неприводимые полиномы p1 и p3 .

 

G(X)=M1(X)*M3(X) = 10011 * 11111 = 111010001 = X8+X7+X6+X4+1.

 

Число информационных разрядов

 

k = n - m = 15 - 8 = 7.

 

Первая строка образующей матрицы получается путем добавления слева от G(X) такого числа нулей, чтобы общая длина кодовой комбинации была равна n. Образующая матрица получается в результате m кратного циклического сдвига кодовой комбинации, соответствующей первой строке образующей матрицы.

 

0 0 0 0 0 0 1 1 1 0 1 0 0 0 1

0 0 0 0 0 1 1 1 0 1 0 0 0 1 0

0 0 0 0 1 1 1 0 1 0 0 0 1 0 0

||ОМ|| = 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0

0 0 1 1 1 0 1 0 0 0 1 0 0 0 0

0 1 1 1 0 1 0 0 0 1 0 0 0 0 0

1 1 1 0 1 0 0 0 1 0 0 0 0 0 0

 

Остальные комбинации кода получаются путем умножения 27=128 строк различных информационных слов на образующую матрицу. Таким образом, мы получили набор кодовых комбинаций для приведенного выше примера состоящего из 128 кодовых слов.