Свёрточный код
Свёрточный код — это корректирующий ошибки код, в котором
- на каждом такте работы кодера символов входной полубесконечной последовательности преобразуются в символов выходной последовательности
- в преобразовании также участвуют предыдущих символов
- выполняется свойство линейности (если двум кодируемым последовательностям и соответствуют кодовые последовательности и , то кодируемой последовательности соответствует ).
Свёрточный код является частным случаем древовидных и решетчатых кодов.
История возникновения
В 1955 году Л. М. Финком, который в то время являлся заведующим кафедрой Ленинградской академии связи, был предложен первый рекуррентный код.
В 1959 году западный специалист Хегельбергер (Hegelbeger), не имевший представления о работе советских ученых в области кодирования, «вновь открыл» рекуррентный код и назвал его своим именем.
Сам Финк в своей монографии «Теория передачи дискретных сообщений»[1] писал: «В этом коде последовательность кодовых символов не разделяется на отдельные кодовые комбинации. В поток информационных символов включаются корректирующие символы так, что между каждыми двумя информационными символами помещается один корректирующий. Обозначая информационные символы через , а корректирущие через получаем такую последовательность символов:
Информационные символы определяются переданным сообщением, а корректирующие формируются по следующему правилу:
(1.1)
где — произвольное целое число, называемое шагом кода (). Очевидно, что при ошибочном приеме некоторого корректирующего символа bi соотношение (1.1) в принятой последовательности не будет выполнено для . В случае же ошибочного приема информационного символа соотношение (1.1) не будет выполняться при двух значениях , а именно при и при . Отсюда легко вывести правило исправления ошибок при декодировании. В принятой кодовой последовательности для каждого проверяется соотношение (1.1). Если оно не выполняется при двух значениях ( и ), и при этом
(1.2)
то информационный элемент должен быть заменен на противоположный.
Очевидно, что избыточность кода равна . Он позволяет исправлять все ошибочно принятые символы, кроме некоторых неудачных сочетаний. Так, если , он обеспечивает правильное декодирование, когда между двумя ошибочно принятыми символами имеется не менее трех (а в некоторых случаях двух) правильно принятых символов (при этом учитываются как информационные, так и проверочные символы).»
Общая схема нерекурсивного кодера
Схема кодера нерекурсивного свёрточного кода представлена на Рис.1. Он состоит из -ичных регистров сдвига с длинами . Некоторые (может и все) входы регистров и выходы некоторых ячеек памяти соединены с несколькими сумматорами по модулю . Число сумматоров больше числа регистров сдвига:
На каждом такте работы кодера на его вход поступает информационных символов, они вместе с хранящимися в регистрах сдвига символами поступают на входы тех сумматоров, с которыми имеется связь. Результатом сложения является кодовых символов, готовых к передаче. Затем в каждом регистре сдвига происходит сдвиг: все ячейки сдвигаются вправо на один разряд, при этом крайние левые ячейки заполняются входными символами, а крайние правые стираются. После этого такт повторяется. Начальное состояние регистров заранее известно (обычно нулевое).
- Суммарная длина всех регистров сдвига называется кодовым ограничением, а максимальная длина — задержкой.
- Значения регистров сдвига в каждый момент времени называется состоянием кодера.
Двоичные свёрточные кодеры
Для наглядности представления будем описывать свёрточное кодирование по действию соответствующего кодирующего устройства.
Свёрточный кодер — это устройство, принимающее на каждом такте работы в общем случае k входных информационных символов, и выдающее на выход каждого такта n выходных символов. Число называют относительной скоростью кода. k — число информационных символов, n — число передаваемых в канал связи символов за один такт поступления на кодер информационного символа. Выходные символы рассматриваемого такта зависят от m информационных символов, поступающих на этом и предыдущих тактах, то есть выходные символы свёрточного кода однозначно определяются его входными символами и состоянием, которое зависит от m — k предыдущих информационных символов. Основными элементами свёрточного кода являются: регистр сдвига, сумматор по модулю 2, коммутатор.
Регистр сдвига (англ. Shift register) — это динамическое запоминающее устройство, хранящее двоичные символы 0 и 1. Память кода определяет число триггерных ячеек m в регистре сдвига. Когда на вход регистра сдвига поступает новый информационный символ, то символ, хранящийся в крайнем правом разряде, выводится из регистра и сбрасывается. Остальные символы перемещаются на один разряд вправо и, таким образом, освобождается крайний левый разряд куда будет поступать новый информационный символ.
Сумматор по модулю 2 осуществляет сложение поступающих на него символов 1 и 0. Правило сложения по модулю 2 таково: сумма двоичных символов равна 0, если число единиц среди поступающих на входы символов четно, и равно 1, если это число нечетно.
Коммутатор последовательно считывает поступающие на его входы символы и устанавливает на выходе очередность кодовых символов в канал связи. По аналогии с блоковыми кодами, свёрточные коды можно классифицировать на систематические и несистематические.
Систематический свёрточный код — это код, содержащий в своей выходной последовательности кодовых символов породившую её последовательность информационных символов. Иначе код называют несистематическим.
Параметры и характеристики свёрточных кодов
При свёрточном кодировании преобразование информационных последовательностей в выходные и кодовые происходит непрерывно. Кодер двоичного свёрточного кода содержит сдвигающий регистр из m разрядов и сумматоры по модулю 2 для образования кодовых символов в выходной последовательности. Входы сумматоров соединены с определёнными разрядами регистра. Коммутатор на выходе устанавливает очередность посылки кодовых символов в канал связи. Тогда структуру кода определяют нижеследующие характеристики.
- Число информационных символов, поступающих за один такт на вход кодера — k.
- Число символов на выходе кодера — n, соответствующих k, поступившим на вход символам в течение такта.
- Скорость кода определяется отношением R=k/n и характеризует избыточность, вводимую при кодировании.
- Избыточность кода
- Память кода (входная длина кодового ограничения или информационная длина кодового слова), определяется максимально степенью порождающего многочлена в составе порождающей матрицы G(X):
- Маркировка сверточного кода обозначается в большинстве случаев (n, k, l), но возможны и вариации.
- Вес w двоичных кодовых последовательностей определяется числом «единиц», входящих в эту последовательность или кодовые слова.
- Кодовое расстояние показывает степень различия между i-й и j-й кодовыми комбинациями при условии их одинаковой длины. Для любых двух двоичных кодовых комбинаций кодовое расстояние равно числу несовпадающих в них символов. В общем виде кодовое расстояние может быть пределено как суммарный результат сложения по модулю 2 одноимённых разрядов кодовых комбинаций
, где и — k-е символы кодовых комбинаций i и j; L- длина кодовой комбинации. - Минимальное кодовое расстояние — это наименьшее расстояние Хемминга для набора кодовых комбинаций постоянной длины. Для его нахождения необходимо перебрать все возможные пары кодовых комбинаций. Тогда получаем .
Но! Это определение справедливо для блочных кодов, имеющих постоянную длину. Сверточные коды являются непрерывными и характеризуются многими минимальными расстояниями, определяемыми длинами начальных сегментов кодовых последовательностей, между которыми берется минимальное расстояние. Число символов в принятой для обработки длине сегменты L определяет на приемной стороне число ячеек в декодирующем устройстве.
Общий вид двоичного сверточного кодера
Пусть регистр сдвига содержит m ячеек, то есть память кода равна m, коммутатор производит один цикл опроса, проходя значения информационных символов, где m кратно k, при этом за один цикл он опрашивает n2 выходов кодера. Количество выходных кодовых символов, на которые оказывает влияние изменение одного входного информационного символа, равно . Величина Iall называется полной длиной кодового ограничения.
Поскольку корректирующие свойства конкретного сверточного кода определяются длиной кодового ограничения и выбором связей сдвигающего регистра на сумматор по модулю 2 (XOR), то для задания структуры сверточного кодера необходимо указать какие разряды регистра сдвига связаны с каждым из сумматоров по модулю 2 (XOR).
Связь j-го сумматора по модулю 2 описывается j-ой порождающей последовательностью:
где (4.2)
Типичные параметры сверточных кодов: k, n= 1,2,…,8; R=k/n=1/4,…,7/8; m=2,…,10.
Способ задания свёрточных кодов
Свёрточный код удобно задавать с помощью порождающих многочленов, которые определяются видом формулы (4.1) по аналогии с тем, как это осуществляется для линейных блоковых циклических кодов.[2]
Порождающий многочлен полностью определяет структуру двоичного кодера свёрточного кода. В отличие от блоковых кодов, каждый из которых описывается лишь одним порождающим многочленом, свёрточный код описывается несколькими порождающими многочленами. Количество многочленов, которыми описывается свёрточный код, определяется количеством выходных символов n. Представим последовательность информационных символов, поступающих на вход кодера, в виде многочлена
где Xi — символ оператора задержки на i тактов работы сдвигающего регистра, ai = {0, 1} — информационные двоичные символы. Многочлены, описывающие n последовательностей кодовых символов, поступающих на вход коммутатора кодера, а затем в канал связи, имеют вид
где двоичные кодовые символы на j-м входе коммутатора кодера.
j-й порождающий многочлен свёрточного кода имеет вид , где — двоичные коэффициенты, равные 1, если i-я ячейка сдвигающего регистра через схему суммирования связана с j-м коммутатором кодера, и равны 0 в противном случае. Причём, в силу линейности свёрточного кода и принятых обозначений получаем .
Используя представление свёрточного кода с помощью порождающих многочленов можно задавать свёрточный код посредством последовательностей коэффициентов производящих многочленов, записанных в двоичной или восьмеричной форме. Запись в восьмеричной форме более компактная и используется при большой длине сдвигающего регистра кодера.
В общем случае последовательность коэффициентов j-го производящего многочлена будет иметь вид и совпадает с порождающей последовательностью кода (4.1). Тогда, если — последовательность кодируемых символов, а — последовательность кодовых символов на j-м входе коммутатора кодера, то для любого из них, появляющегося в -й момент времени (), можно записать
Таким образом, каждый кодовый символ выходной последовательности кодера свёрточного кода определяется свёрткой кодируемой информационной и порождающей последовательности, что и обуславливает название свёрточных кодов. Свёрточные коды являются частным случаем итеративных или рекуррентных кодов.
Применение
Свёрточные коды используются для надежной передачи данных: видео, мобильной связи, спутниковой связи. Они используются вместе с кодом Рида — Соломона и другими кодами подобного типа. До изобретения турбо-кодов такие конструкции были наиболее действенными и удовлетворяли пределу Шеннона. Также свёрточное кодирование используется в протоколе 802.11a на физическом MAC-уровне для достижения равномерного распределения 0 и 1 после прохождения сигнала через скремблер, вследствие чего количество передаваемых символов увеличивается в два раза и, следовательно, мы можем добиться благоприятного приема на принимающем устройстве.
См. также
- Обнаружение и исправление ошибок
- Алгоритм свёрточного декодирования Витерби
- Линейный код
Примечания
- ↑ Финк Л. М. Теория передачи дискретных сообщений
- ↑ Сагалович, 2014, главы 4 и 5.
Литература
- Галлагер Р. Теория информации и надёжная связь. — М.: Советское радио, 1974. — 720 с.
- Морелос-Сарагоса Р. Искусство помехоустойчивого кодирования. Методы, алгоритмы, применение / пер. с англ. В. Б. Афанасьева. — М.: Техносфера, 2006. — 320 с. — (Мир связи). — 2000 экз. — ISBN 5-94836-035-0.
- Финк Л. М. Теория передачи дискретных сообщений. — М.: Сов. радио, 1963. — 576 с.
- Никитин Г. И. Сверточные коды: Учебное пособие. — СПб.: Сов. радио, 2001. — 78 с.
- Сагалович Ю. Л. Введение в алгебраические коды — 3-е изд., перераб. и доп. — М.: ИППИ РАН, 2014. — 310 с. — ISBN 978-5-901158-24-1
- Никитин Г. И. Сверточные коды Учебное пособие
- Банкет, В. Л. "Сигнально-кодовые конструкции в телекоммуникационных системах." О.: Феникс (2009).
- Колесник В. Д., Полтырев Г. Ш. Курс теории информации. – " Наука," Глав. ред. физико-математической лит-ры, 1982.
- Нгок Д. К. Исследование методов поиска оптимальных сверточных и перфорированных сверточных кодов : дис. – Диссертация на соискание ученой степени кандидата технических наук. СПб.: ЛЭТИ, 2014.