Юникод
- 1 year ago
- 0
- 0
Свёрточный код — это корректирующий ошибки код , в котором
Свёрточный код является частным случаем и кодов.
В 1955 году Л. М. Финком , который в то время являлся заведующим кафедрой Ленинградской академии связи, был предложен первый рекуррентный код.
В 1959 году западный специалист Хегельбергер ( Hegelbeger ), не имевший представления о работе советских ученых в области кодирования, «вновь открыл» рекуррентный код и назвал его своим именем.
Сам Финк в своей монографии «Теория передачи дискретных сообщений» писал: «В этом коде последовательность кодовых символов не разделяется на отдельные кодовые комбинации. В поток информационных символов включаются корректирующие символы так, что между каждыми двумя информационными символами помещается один корректирующий. Обозначая информационные символы через , а корректирущие через получаем такую последовательность символов:
Информационные символы определяются переданным сообщением, а корректирующие формируются по следующему правилу:
(1.1)
где — произвольное целое число, называемое шагом кода ( ). Очевидно, что при ошибочном приеме некоторого корректирующего символа b i соотношение (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 для образования кодовых символов в выходной последовательности. Входы сумматоров соединены с определёнными разрядами регистра. Коммутатор на выходе устанавливает очередность посылки кодовых символов в канал связи. Тогда структуру кода определяют нижеследующие характеристики.
Но! Это определение справедливо для блочных кодов, имеющих постоянную длину. Сверточные коды являются непрерывными и характеризуются многими минимальными расстояниями, определяемыми длинами начальных сегментов кодовых последовательностей, между которыми берется минимальное расстояние. Число символов в принятой для обработки длине сегменты L определяет на приемной стороне число ячеек в декодирующем устройстве.
Пусть регистр сдвига содержит m ячеек, то есть память кода равна m, коммутатор производит один цикл опроса, проходя значения информационных символов, где m кратно k , при этом за один цикл он опрашивает n 2 выходов кодера. Количество выходных кодовых символов, на которые оказывает влияние изменение одного входного информационного символа, равно . Величина I all называется .
Поскольку корректирующие свойства конкретного сверточного кода определяются длиной кодового ограничения и выбором связей сдвигающего регистра на сумматор по модулю 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) по аналогии с тем, как это осуществляется для линейных блоковых циклических кодов .
Порождающий многочлен полностью определяет структуру двоичного кодера свёрточного кода. В отличие от блоковых кодов , каждый из которых описывается лишь одним порождающим многочленом , свёрточный код описывается несколькими порождающими многочленами. Количество многочленов, которыми описывается свёрточный код, определяется количеством выходных символов n . Представим последовательность информационных символов, поступающих на вход кодера, в виде многочлена
где X i — символ оператора задержки на i тактов работы сдвигающего регистра, a i = {0, 1} — информационные двоичные символы. Многочлены, описывающие n последовательностей кодовых символов, поступающих на вход коммутатора кодера, а затем в канал связи, имеют вид
где двоичные кодовые символы на j -м входе коммутатора кодера.
j -й порождающий многочлен свёрточного кода имеет вид , где — двоичные коэффициенты, равные 1, если i -я ячейка сдвигающего регистра через схему суммирования связана с j -м коммутатором кодера, и равны 0 в противном случае. Причём, в силу линейности свёрточного кода и принятых обозначений получаем .
Используя представление свёрточного кода с помощью порождающих многочленов можно задавать свёрточный код посредством последовательностей коэффициентов производящих многочленов, записанных в двоичной или восьмеричной форме. Запись в восьмеричной форме более компактная и используется при большой длине сдвигающего регистра кодера.
В общем случае последовательность коэффициентов j -го производящего многочлена будет иметь вид и совпадает с порождающей последовательностью кода (4.1). Тогда, если — последовательность кодируемых символов, а — последовательность кодовых символов на j -м входе коммутатора кодера, то для любого из них, появляющегося в -й момент времени ( ), можно записать
Таким образом, каждый кодовый символ выходной последовательности кодера свёрточного кода определяется свёрткой кодируемой информационной и порождающей последовательности, что и обуславливает название свёрточных кодов. Свёрточные коды являются частным случаем итеративных или рекуррентных кодов.
Свёрточные коды используются для надежной передачи данных: видео, мобильной связи, спутниковой связи. Они используются вместе с кодом Рида — Соломона и другими кодами подобного типа. До изобретения турбо-кодов такие конструкции были наиболее действенными и удовлетворяли пределу Шеннона. Также свёрточное кодирование используется в протоколе 802.11a на физическом MAC-уровне для достижения равномерного распределения 0 и 1 после прохождения сигнала через скремблер , вследствие чего количество передаваемых символов увеличивается в два раза и, следовательно, мы можем добиться благоприятного приема на принимающем устройстве.