Главная Случайная страница


Категории:

ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника






Систематический циклический код

Построение кодовых полиномов непосредственным перемножением информационного и порождающего полиномов не приводит к систематическим кодовым словам.

Пример 5.3.1 Воспользуемся для построения двоичного (7,4) циклического кода порождающим полиномом g(z)=z3+z+1 (см. пример 5.2.1).

Сообщению (1110) отвечает информационный полином a(z)=z2+z+1. При этом кодовый полином, получаемый прямым перемножением a(z) и g(z): u(z)=a(z)g(z)=(z2+z+1)(z3+z+1)=z5+z4+1, соответствует слову (1000110), не содержащему явно информационных битов в начале либо конце, т.е. не являющемуся систематическим.

Чтобы преобразовать фиксированный циклический код к систематической форме, нужно лишь переупорядочить соответствие между информационным и кодовым полиномами (не меняя последних!). Изящный алгоритм такого переупорядочения дается равенством

предписывающим умножение информационного полинома на zr=znk (другими словами, сдвиг информационных битов на n–k позиций вправо) и вычитание из полученного результата остатка r(z) от деления его на порождающий полином g(z). Полученный так полином u(z) делится на g(z), а значит, все кодовые полиномы остаются прежними – всеми полиномами степени не большей n–1, делящимися на g(z). Единственное, что изменилось в результате описанной модификации кода – теперь k старшими коэффициентами u(z) оказались информационные биты, т.е. на k последних позициях кодового вектора разместились «чистые» информационные биты.

Пример 5.3.2 Для условий примера 5.3.1 znka(z)=z3(z2+z+1)= z5+z4+z3, что после деления на g(z) дает остаток r(z)=z. В итоге u(z)= z5+z4+z3+z, и соответствующий кодовый вектор U=(0101110) имеет систематическую структуру, в которой информационные биты занимают последние k позиций.

Порождающая и проверочная матрица циклического кода

Как и любой линейный, циклический код может быть задан с помощью порождающей и проверочной матриц. Что касается порождающей матрицы, ее структура напрямую следует из систематического представления кодовых полиномов. Рассмотрим k «базисных» информационных векторов: a1=(10…00), a2=(01…00), … , ak=(00...01), чьи информационные полиномы после умножения на znk принимают вид
znka1(z)=znk, znka2(z)=znk+1, … , znkak(z)=zn–1. После нахождения систематических кодовых полиномов ui(z)=znkai(z)–ri(z), i=1,2, …, k,получатся k кодовых векторов вида u1=(r1 ¦ a1), u2=(r2 ¦ a2), …, uk=(rk ¦ ak), где ri – (n–k)-мерные векторы коэффициентов остатков ri(z), i=1,2, …, k. Линейная независимость этих кодовых векторов позволяет использовать их как базис кода, т.е. построить порождающую матрицу последнего как

Если систематичность кода не является непременным условием, порождающая матрица легко строится непосредственно по порождающему полиному: строки ее – это попросту k циклических сдвигов n-мерного вектора коэффициентов порождающего полинома. Подобным же образом несистематическая проверочная матрица напрямую получается из проверочного полинома h(z)=hkzk+hk-1zk–1+…+h0:

Циклические кодеры

Линейность циклических кодов означает безоговорочную применимость к ним всех методов кодирования и декодирования, рассмотренных в предыдущей главе. В то же время свойство цикличности зачастую открывает дополнительные возможности упрощения кодера в аппаратной реализации. Так, если приемлем несистематический вариант кода, структура кодера оказывается особенно простой. Поскольку любой кодовый полином u(z) такого кода есть произведение информационного a(z) и порождающего g(z) полиномов, компоненты соответствующего кодового вектора uявляются сверткой информационной последовательности a0, a1, … , ak–1 с последовательностью коэффициентов порождающего полинома g0, g1, … , gn–1.

Подобная операция реализуется фильтром с конечной импульсной характеристикой (КИХ–фильтром) вида

Обратимся теперь к структуре систематического циклического кодера. Согласно сказанному в параграфе 7.3, ключевой операцией в построении систематического кодового полинома циклического кода является нахождение остатка r(z) от деления произведения znka(z) на порождающий полином g(z). Чтобы понять, каким образом структура, представленная далее, вычисляет r(z), разделим znka(z)=ak–1zn–1+ak–2zn–2+…+a0znk на g(z)=zr+gr–1zr–1+ +…+g0, используя правило длинного деления. На первой итерации g(z) умножается на ak–1znr–1 и результат вычитается из делимого.

В итоге первый остаток r1(z)=r1,n–2zn–2+r1,n–3zn–3+…+r1,nr–1znr–1 имеет степень не более n–1 и после сложения с ak–2zn–2 используется на второй итерации как новое делимое. При выполнении второй итерации из него вычитается (r1,n–2+ak–2)znr–2g(z) , давая второй остаток r2(z)=r2,n–3zn–3+r2,n–4zn–4+…+r2,nr–2znr–2, степень которого не превышает n–3. Остаток r2(z) вновь суммируется с ak–3zn–3 и используется как делимое на третьей итерации и т.д. Легко видеть, что на i-й итерации предыдущий остаток, сложенный с
anizni, служит делимым, из которого вычитается произведение полинома g(z) на z в степени, уравнивающей степени вычитаемого и делимого, а также на коэффициент, равный старшему коэффициенту делимого. Результатом этого оказывается очередной остаток, с которым производятся те же действия на следующей итерации. После k итераций k-й остаток имеет степень, меньшую r, являясь, очевидно, требуемым остатком r(z). Подобное «длинное деление» реализуется систематическим циклическим кодером, показанным на предыдущем слайде и основанным на регистре сдвига с линейной обратной связью.

Исходно ключ S1 замкнут, а ключ S2 находится в положении 1. Биты данных подаются на вход, начиная со старшего ak–1. Допустим, что в r ячейках регистра сдвига записаны коэффициенты текущего делимого. Тогда в точке B присутствует старший коэффициент текущего делимого, а в точках C0Cr–1 – его произведения с коэффициентами порождающего полинома. Следовательно, в точках B1Br–1 формируются коэффициенты разности текущего делимого и порождающего полинома, умноженного на старший коэффициент делимого и соответствующую степень z,т.е. коэффициенты следующего остатка. При подаче тактового импульса эти коэффициенты записываются в ячейки регистра, подготавливая его к новой итерации. После k итераций регистр содержит остаток r(z), и, чтобы передать последний на выход, ключ S1 размыкается, а S2 переводится в положение 2. В результате на выходе после бита данных a0 следует старший коэффициент r(z) (первый проверочный символ), и т.д.

Пример 5.5.1 Кодер (7,4) кода из примера 5.3.2 приведен на следующем слайде. Там же дана таблица, содержащая значения информационных битов, состояние регистра и выходное слово. Как видно, при прежнем информационном полиноме a(z)=z2+z+1 последняя колонка таблицы, читаемая снизу вверх, совпадает со словом, полученным в примере 5.3.2.

Последнее изменение этой страницы: 2016-06-09

lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда...