Категории: ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника |
Систематический циклический кодПостроение кодовых полиномов непосредственным перемножением информационного и порождающего полиномов не приводит к систематическим кодовым словам. Пример 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=zn–k (другими словами, сдвиг информационных битов на n–k позиций вправо) и вычитание из полученного результата остатка r(z) от деления его на порождающий полином g(z). Полученный так полином u(z) делится на g(z), а значит, все кодовые полиномы остаются прежними – всеми полиномами степени не большей n–1, делящимися на g(z). Единственное, что изменилось в результате описанной модификации кода – теперь k старшими коэффициентами u(z) оказались информационные биты, т.е. на k последних позициях кодового вектора разместились «чистые» информационные биты. Пример 5.3.2 Для условий примера 5.3.1 zn–ka(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), чьи информационные полиномы после умножения на zn–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) от деления произведения zn–ka(z) на порождающий полином g(z). Чтобы понять, каким образом структура, представленная далее, вычисляет r(z), разделим zn–ka(z)=ak–1zn–1+ak–2zn–2+…+a0zn–k на g(z)=zr+gr–1zr–1+ +…+g0, используя правило длинного деления. На первой итерации g(z) умножается на ak–1zn–r–1 и результат вычитается из делимого. В итоге первый остаток r1(z)=r1,n–2zn–2+r1,n–3zn–3+…+r1,n–r–1zn–r–1 имеет степень не более n–1 и после сложения с ak–2zn–2 используется на второй итерации как новое делимое. При выполнении второй итерации из него вычитается (r1,n–2+ak–2)zn–r–2g(z) , давая второй остаток r2(z)=r2,n–3zn–3+r2,n–4zn–4+…+r2,n–r–2zn–r–2, степень которого не превышает n–3. Остаток r2(z) вновь суммируется с ak–3zn–3 и используется как делимое на третьей итерации и т.д. Легко видеть, что на i-й итерации предыдущий остаток, сложенный с Исходно ключ S1 замкнут, а ключ S2 находится в положении 1. Биты данных подаются на вход, начиная со старшего ak–1. Допустим, что в r ячейках регистра сдвига записаны коэффициенты текущего делимого. Тогда в точке B присутствует старший коэффициент текущего делимого, а в точках C0 … Cr–1 – его произведения с коэффициентами порождающего полинома. Следовательно, в точках B1…Br–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. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда... |