Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СДЭС_Уч_метод_пос_кодирование2.doc
Скачиваний:
93
Добавлен:
03.12.2018
Размер:
1.89 Mб
Скачать

3.1.3. Кодирование и декодирование двоичных циклических кодов.

Размерность двоичного циклического (n, k) кода равна

где deg[.] есть степень аргумента. Так как циклический код С является линейным кодом, то любое множество k линейно независимых векторов (кодовых слов) может быть выбрано в качестве порождающей матрицы кода. В частности, двоичные векторы, ассоциированные с многочленами g(x), xg(x), ..., хk-1g(x), линейно независимы. Эти векторы могут быть использованы в качестве строк порождающей матрицы кода С. В этом случае реализуется несистематическое кодирование. Другими словами, сообщение не появляется в неизмененном виде на каких-либо позициях кодового слова.

Пример 21. Рассмотрим циклический (7,4,3) код Хемминга с порождающим полиномом g(x) = х3 + х+1 (1101). Порождающая матрица этого кода имеет вид:

где первый столбец соответствует x0 степени, а последний x6 степени.

В другом варианте проверочная часть порождающей матрицы циклического кода может быть построена с помощью следующих полиномов:

С их помощью реализуется систематическое кодирование, показанное в примере ниже.

Пример 22. Пусть С циклический (7,4,3) код Хемминга с порождающим многочленом g(x) = х3 + х + 1. Тогда имеем (делим x6 на (x3+x+1) получаем (x3-x-1) и остаток x2+1 с учётом того, что сложение идёт по модулю 2 ):

Следовательно, систематическая порождающая матрица кода С имеет вид:

(первый столбец соответствует степени х6, а последний x0)

Пусть и(х) представляет кодируемое сообщение. Кодирование циклического кода может быть систематическим или несистематическим в зависимости от того, что именно делается с сообщением:

• Несистематическое кодирование

(3.3)

Для кода С(7, 4, 3) с порождающим полиномом g(x) = х3 + х + 1 найдём кодовое слово v(x), соответствующее информационной посылке u(1,0,1,0), т.е.u(x) = 1 + x2. Найдём v(x) используя выражение(3.3) v(x)=u(x)g(x)=1+x+x2+x5 , что соответствует кодовому слову v(1,1,1,0,0,1,0). Этот же результат можно получить, воспользовавшись матрицей G из примера 21.

• Систематическое кодирование

(3.4)

Для кода С(7, 4, 3) с порождающим полиномом g(x) = х3 + х + 1 найдём с помощью выражения (3.4) кодовое слово v(x) соответствующее информационной посылкой u(0,1,0,1), т.е. u(x) = x2 +1, тогда v(x)=x3u(x) + x3u(x)mod(g(x))= x5+x3+x2, что соответствует кодовому слову v(0,1,0,1,1,0,0). Этот же результат можно получить, воспользовавшись матрицей G из примера 22.

3.1.4. Проверочный полином.

Полином h(x), который может быть ассоциирован с проверочной матрицей циклического кода, называется проверочным полиномом. Порождающий и проверочный полиномы связаны следующим соотношением

g(x)h(x)=xn+1 (3.5)

Если известен порождающий полином, то проверочный полином легко вычисляется как h(х)= (хn + 1) /g(x) = h0 + h1x + ... +hk xk. Проверочную матрицу кода С легко построить, используя в качестве строк п-k-1 циклических сдвигов проверочного полинома,

(3.6)

Теперь рассмотрим схемную реализацию деления двоичных мно­гочленов в общем случае. Пусть заданы: делимое степени m

f(X) = f0 + f1X + f2X2 + … + fmXm (3.57)

и делитель степени r, причем, r < m

. (3.58)

В результате деления мы должны получить разложение

f(X) = а(Х)(Х) + b(Х) (3.59)

с сомножителем а(Х) степени т — r и остатком b(Х) со степенью, на превышающей r — 1.

Схема деления многочленов общего вида представлена на рис. 3.6.

Сначала регистр сдвига полностью загружается старшими раз­рядами делимого. Ключ S1 включен, а переключатель S2 находится в верхнем положении. Далее начинается сам процесс деления. В пер­вом такте производится сдвиг содержимого регистра на один разряд вправо. Так как fт = 1, эта единица, в соответствии с коэффициен­том двигателя (Х), суммируется с аналогичными разрядами дели­мого. В результате, мы получаем укороченный многочлен

(3.60)

со степенью

. (3.61)

Эта же единица заносится в регистр формирования а(Х) при за­мкнутом переключателе S2 и в дальнейшем не меняется.

На последующих l = т - r тактах алгоритм деления остается таким же. Так, если степень укороченного многочлена (X) в (3.60), равная k1 (3.61), остается большей и равной r, то с помощью цепи об­ратной связи производится укорочение теперь уже многочлена из (3.60).

(3.62)

со степенью

. (3.63)

Таким образом, после l = т — r тактов мы получаем разложение (3.59), причем, в регистре делимого находится остаток от деления b(Х). После этого, ключ S1 размыкается, переключатель S2 перево­дится в нижнее положение и на следующих r тактах остаток b(Х) заносится в регистр формирователя остатка.

Пример 23. Циклический (7,4,3) код Хемминга с порождающим многочленом g(x)=x3+x+1 имеет проверочный многочлен h(x) = 7 + 1)/3+x+1) = x4 +x2+x + 1. Проверочная матрица этого кода имеет, например, следующий вид:

Так же как и для линейных кодов, систематическое кодирование циклического кода можно реализовать как решение уравнения

Рассмотрим следующее правило систематического кодирования. Предположим, что код имеет скорость k/п ≤ 0,5. Пусть сообщение представлено многочленом и(х) = u0 + u1x +… + иk-1хk-1, степень которого меньше k. Пусть v(x) кодовое слово кода С, соответствующее информационному многочлену и(х). На первом шаге vl = иl l = 0, 1, ..., k - 1.

Из циклической природы этого кода следует, что проверочные символы кода vl, l = к, к+1,..., п - 1, могут быть вычислены рекурсивно с помощью проверочного уравнения

(3.7)

Рис. 17. Устройство систематического кодирования делением на g(х).

где h(l-k),j есть j-ый элемент (l - к)-ой строки матрицы (3.6).

В случае высокой скорости кода, к/п > 0,5, кодирование с помощью деления хn-kки(х) на порождающий полином эффективнее. В любом случае, кодовое слово получается в систематической форме, k первых символов которого совпадают с символами сообщения, а последние п-к являются проверочными символами.

На Рисунке 17 показана структурная схема кодера двоичного кода с порождающим полиномом g(x). Первые k тактов переключатель (правая нижняя часть схемы) находится в положении 1, а информационные символы передаются в канал связи и одновременно вводятся в схему умножения на хn-k и деления на порождающий многочлен g(x). За эти k тактов в регистре сдвига вычисляется остаток от деления, после чего переключатель переводится в положение 2 и содержимое регистра передается в канал.

Дуальные циклические коды и последовательности максимальной длины

По аналогии с линейными кодами, дуальным кодом циклического кода С, порождаемого полиномом g(x), является циклический код С┴, порождаемый полиномом h(х). Важный класс циклических кодов, словами которого являются все сдвиги последовательности максимальной длины (MLS), дуален циклическому коду Хемминга. Множество сдвигов MLS является (2т1, m, 2m-1) циклическим кодом, который порождается полиномом g(x)=(xn - 1 )/p(x), где р(х) примитивный полином. В дальнейшем этот код будем называть MLS-код.