Лабораторная работа: Программный кодер-декодер для циклических (n,k)-кодов

(7)

Здесь т.е. является проверочными битами кодового слова.


7.2 Алгоритм кодирования

Известно на старте:

– длина выходных кодовых слов n ;

– длина входной последовательности k ;

– число контрольных бит (n-k)=r ;

– порождающий многочлен G (x) ;

Назначается величина ℓ≤ r . Вычисляются параметры s и m0 . В памяти машины организуется 2 строк («мест»). В каждую строку для каждой конфигурации двоичного отрезка длины пишется остаток, вычисленный заранее по изложенному выше алгоритму. В процессе кодирования процедура деления заменяется считыванием из памяти остатка для очередного -отрезка кодируемой последовательности. Это существенно повышает быстродействие программного кодера при (обычно) приемлемом расходе памяти. Желательно так писать программу, чтобы -отрезок мог выступать в роли «смещения» по адресному пространству списка остатков.

Алгоритм кодирования сводится к следующему.

1. Из исходной k‑ битовой информационной последовательности со стороны левых («старших») разрядов выделяется отрезок длины и из таблицы выбирается соответствующий ему остаток.

2. Полученный остаток суммируется по mod2 с левыми разрядами оставшейся части блока длиной (k-ℓ ) бит.

3. Из полученной суммы со стороны левых разрядов выделяется очередной -отрезок, для которого из таблицы считывается соответствующий остаток и т.д.

4. Через (s‑1) таких шагов из полученной суммы выделяются m0 старших разрядов ℓ-m0 и для сформированной ℓ- разрядной комбинации выбирается соответствующий остаток из таблицы.

5. Полученный остаток суммируется по mod 2 с оставшимися (после выделения m0 разрядов) битами. Эта сумма является комбинацией проверочных разрядов циклического кода.

8. Содержательный пример [3]

Методом деления по частям построить кодер для циклического (15,11) – кода, заданного порождающим многочленом G ( x )=х4 +х+1 .

Здесь n =15; k =11. Выбираем =4. Тогда s =3, m0 =3. Всего имеем 2 различных конфигураций -отрезков. Остатки, соответствующие этим отрезкам, вычисленные в соответствии с алгоритмом деления по частям, приведены в табл. 1.

Пусть входная (информационная) последовательность, разделенная на отрезки, имеет вид: 1101 1000 110

Выбираем первый -отрезок 1101 и выбираем из таблицы соответствующий остаток 0100. Складываем по mod 2 со следующим отрезком 0100+1000=1100. Полученной сумме соответствует остаток 0111. Поскольку сделано уже (s‑1) шагов, прибавим этот остаток к оставшимся трем битам 0111+110=1011. На этот результат понадобится ссылка, поэтому присвоим ему наименование U s-1 . Из полученной суммы выделим m0 левых бит и дополним их слева нулями до размерности (в данном случае – одним нулем). Получим 0101. Из таблицы найдем остаток – 1111. Выполняется s ‑й шаг деления. Оставшуюся «1» (справа) от U s-1 , из которого выделяли m0 левых бит, сложим со стороны старших разрядов с только – что полученным остатком 1111+1=0111. Это и есть контрольные биты к информационной последовательности 1101 1000 110.

Результат можно проверить традиционным делением последовательности А (х) х( n - k ) на G ( x ) (в нашем случае 1101 1000 110 0000 на 10011).


Табл. 1. Остатки для -отрезков информационной последовательности

ℓ- отрезок Остаток ℓ- отрезок Остаток

0000

0001

0010

0011

0100

0101

0110

К-во Просмотров: 250
Бесплатно скачать Лабораторная работа: Программный кодер-декодер для циклических (n,k)-кодов