УДК 681.3
ОСНОВЫ ПОМЕХОУСТОЙЧИВОГО КОДИРОВАНИЯ, ОСНОВНЫЕ ПРЕИМУЩЕСТВА И НЕДОСТАТКИ АЛГОРИТМОВ ДЕКОДИРОВАНИЯ
А.В. Башкиров, И.В. Остроумов, И.В. Свиридова
В статье рассматриваются алгоритмы помехоустойчивого кодирования, которые являются наиболее эффективными перед рядом других существующих на сегодняшний день алгоритмами
Ключевые слова: помехоустойчивое кодирование, алгоритм Витерби, методы декодирования
На сегодняшний день известно много различных классов помехоустойчивых кодов, отличающихся друг от друга структурой, функциональным назначением, энергетической эффективностью, алгоритмами кодирования и декодирования и многими другими параметрами.
Применение помехоустойчивого кодирования с исправлением ошибок в современных системах связи является обязательным. Кодирование информации позволяет, с одной стороны, уменьшить количество ошибок в канале, возникающих из-за влияния частотно-селективных замираний, индустриальных помех и прочих факторов, и, тем самым, уменьшить общее время неготовности линии связи, а с другой стороны, снизить значение пороговой чувствительности приемника, за счет чего увеличить энергетику линии связи. В малоканальных радиорелейных системах связи, работающих в сложной электромагнитной обстановке на низких частотах, применяется блочное кодирование Рида-Соломона, которое эффективно исправляет пакетные ошибки, вызванные индустриальными помехами от различных электроустановок и двигателей.
В высокоскоростных радиорелейной синхронной цифровой иерархии (SDH) применяется модифицированное кодирование Виттерби с мягким решением.
Алгоритм декодирования Вигерби
предназначен для декодирования сверточных кодов и является оптимальным в смысле минимизации вероятности ошибки последовательности. Витерби реализует метод максимального правдоподобия. Этот алгоритм находит кодовую
последовательность, ближайшую к принятой, обрабатывая ее бит за битом, т.е. этот алгоритм пошагово сравнивает все пути по кодовой решетке с принятой из канала последовательностью и отбрасывает те из них, которые точно будут находиться на большем расстоянии, чем другие
Башкиров Алексей Викторович - ВГТУ, канд. техн. наук,
доцент, тел. (473) 243-77-06,
e-mail: [email protected]
Остроумов Иван Владимирович - ВГТУ, аспирант,
тел. (473) 243-77-06, e-mail: [email protected]
Свиридова Ирина Владимировна - ВГТУ, аспирант,
тел. (473) 243-77-06, e-mail: [email protected]
пути (под расстоянием между двумя последовательностями понимается расстояние Хемминга) [1].
Главной особенностью алгоритма Витерби является очень простой переход к декодированию «мягких» решений, для чего при вычислении метрики ветвей вместо расстояния Хэмминга нужно использовать Евклидово расстояние. Остальные шаги алгоритма при этом не меняются.
Основным недостатком алгоритма Витерби является экспоненциальный рост числа просматриваемых путей с ростом конструктивной длины кода. При программной реализации алгоритма Витерби, для декодирования одного информационного символа требуется выполнение большого количества операций, эквивалентных сложению. Поэтому на практике часто приходится выбирать коды с небольшим значением.
Таким образом, главным недостатком данного алгоритма является необходимость анализа всех путей, выходящих из рассматриваемого узла кодовой решетки. При этом большинство выполняемых вычислений оказываются
бесполезными.
Другим методом декодирования является алгоритм последовательного декодирования, впервые предложенный Возенкрафтом, а затем усовершенствованный Фано.
Данный алгоритм имеет существенное преимущество перед алгоритмом Витерби. В процессе работы алгоритм декодирования Фано осуществляет обработку лишь наиболее вероятного пути по кодовой решетке. Если декодер на каком-либо шаге декодирования совершит ошибку, расстояние между текущим путем и принятой последовательностью начнет быстро
увеличиваться. Заметив это, декодер возвращается на один или несколько шагов назад и пытается найти более правильное решение. Для быстрого обнаружения неправильного пути и его быстрого исправления необходимо очень тщательно выбирать параметры декодера.
При поиске правильного пути на шаге декодирования последовательный декодер стремится выбрать ветвь с максимальным значением функции правдоподобия, т.е. находящуюся на минимальном расстоянии от принятой последовательности. Несмотря на то, что метрика правильного пути на достаточно больших интервалах имеет тенденцию к возрастанию, из-за
всплесков шума в канале метрика какого-либо неправильного пути может оказаться больше функции правдоподобия для правильного пути. При снижении шума метрика неправильного пути начинает уменьшаться, и задачей алгоритма декодирования становится выявление такой ситуации и поиск пути с возрастающей метрикой [3]. Для этого метрика текущего пути Ь сравнивается с некоторым переменным порогом Т, и, если Ь<Т, то рассматриваемый путь является плохим и необходимо начать поиск лучшего пути.
Главным преимуществом последовательного алгоритма декодирования по сравнению с алгоритмом Витерби является меньшая зависимость сложности декодера от конструктивной длины кода. В результате с помощью данного метода можно декодировать более длинные коды, обладающие большим свободным расстоянием, а, соответственно, и лучшей эффективностью. Однако при практической реализации алгоритма последовательного декодирования сталкиваются с рядом трудностей, вызванных тем, что требуемое для декодирования одного информационного бита количество операций является случайной величиной и быстро растет с ухудшением канала передачи данных. Из-за этого возникает необходимость в наличии большого количества буферной памяти, предназначенной для хранения поступившей, но еще не обработанной канальной последовательности. Причем, так как объем данной памяти конечен, всегда существует вероятность ее переполнения, что приведет к стиранию потерянных символов.
К сожалению, практическая реализация алгоритмов Витерби и Фано является слишком громоздкой, поскольку декодер проектируется в расчете на выполнение наибольшего количества операций, которое может понадобиться для декодирования сильно зашумленной последовательности.
Любой код над полем ОГ^т) можно превратить в код над полем ОГ^), «развернув» каждый qm-ичный символ исходного кода в последовательность т q-ичных символов. В результате из линейного (К,К)-кода над ОГ^т) получится линейный (тК,тК)-код над ОГ^) [2]. Скорость полученного кода будет такая же, как и у исходного кода, а минимальное расстояние будет составлять много меньшую долю длины.
Это «развертывание» представляет собой простой способ построения кода, исправляющего многократные пакеты ошибок. Если исходный код имел минимальное расстояние, равное 5, то в результате получится код, исправляющий одиночные пакеты q-ичных ошибок длины т+1 и многие конфигурации из двух пакетов меньшей длины. Например, (п, к)-код Рида-Соломона над ОГ(2т) развертывается в двоичный (тп,тк)-код, исправляющий многократные пакеты ошибок. Однако, как правило, такой код плохо исправляет случайные ошибки [3].
Многопороговый декодер (МПД)
самоортогональных кодов является развитием простейшего порогового декодера Месси и позволяет декодировать очень длинные коды с линейной от длины кода сложностью исполнения. В основе работы МПД лежит итеративное декодирование, что позволяет вплотную приблизиться к решению оптимального декодера в достаточно широком диапазоне кодовых скоростей и уровней шума в канале. При этом МПД сохраняет простоту и быстродействие обычного порогового декодера, что делает его очень привлекательным для применения в существующих и вновь создаваемых высокоскоростных системах связи [4]. Основным свойством МПД является постоянная сходимость его решения к решению оптимального (по максимуму правдоподобия) декодера (ОД), поскольку при каждом 1-м изменении декодируемых символов суммарный вес синдрома 8 и разностного вектора Б уменьшается, т.е. происходит переход к кодовому слову С1, которое более правдоподобно, чем кодовое слово С1-1, находившееся в МПД в предыдущий момент времени. В процессе работы МПД может прекратить изменение информационных символов, еще не достигнув решения ОД. Одной из основных причин этого является значительная подверженность пороговых декодеров, являющихся составной частью МПД, эффекту размножения ошибок (РО). В результате вторая и последующие итерации декодировании вынуждены работать в основном с потоками пакетов ошибок от декодеров предыдущих итераций, что существенно уменьшает эффективность всего декодера. Следовательно, основным способом приближения решения МПД крашению ОД является уменьшение эффекта РО. Для уменьшения РО необходим тщательный выбор кодов, характеризующихся малой степенью пересечения множеств ошибок, входящих в проверки относительно разных информационных символов, а также настройка параметров декодера (например, величины порогов на разных итерациях).
Турбо коды образуются при параллельном каскадировании двух или более составляющих систематических кодов. Как показано на рисунке, передаваемые данные перед кодированием каждым из составляющих кодов перемешиваются с помощью входящих в состав кодера перемежителей. Поскольку систематические выходы каждого из кодеров с учетом перемежения идентичны, в канал можно передавать только исходную последовательность и проверочные выходы каждого из кодеров. В результате общая кодовая скорость турбо кода при использовании составляющих кодов со скоростью 1/2 оказывается равной Я = 1 /(М+1), где М- количество
составляющих кодеров. Затем систематические и проверочные биты от всех составляющих кодеров объединяются в одно кодовое слово, передаваемое по каналу связи.
Общая схема кодера турбо кода
В качестве декодеров составляющих кодов турбо кода, применяемых в описанной схеме, можно использовать такие алгоритмы как MAP (Maximum A Posteriori-максимум по опыту), Log-MAP, Max-Log-MAP, SOVA (Soft Output Viterby Algorithm - «мягкий» вывод алгоритма Витерби). Сложность реализации последних трех методов в смысле количества выполняемых операций для декодирования одного информационного символа представлена в таблице [1].
Сложность алгоритмов декодирования помехоустойчивых кодов
Вид операции Алгоритм Витерби Max-Log- Map Log-Map SOVA
Выбор максимума Б ■ 211-’ -2 5 ■ гк_:-z 2К~■ + ЭК
Сложение г - гк': + 5 10-2К—1+11 15- 2К_1 +9 г - 2K_1 +s
Умножение на ±1 8 8 8
Сравнение 2К-1 GS
Поиск в таблице -2
Сложность декодирования турбо кодов определяется сложностью методов декодирования составляющих кодов и количеством итераций декодирования. Вычислительная сложность Log-
MAP, Max-Log-MAP и SOVA алгоритмов, используемых для декодирования составляющих кодов, представлена в таблице. Очевидно, что относительная сложность данных алгоритмов также экспоненциально растет с ростом конструктивной длины К составляющих кодов. Однако для построения турбо кода обычно применяются коды с небольшим К=3...5, так как на его характеристики основное влияние оказывает длина используемого перемежителя. Поэтому сложность данного декодера оказывается значительно меньше сложности декодера Витерби при равной эффективности[4].
На основе приведенных данных можно сделать вывод, что MAP алгоритм значительно превосходит остальные по сложности при одинаковой с Log-MAP алгоритмом эффективностью и поэтому на практике обычно не используется. Также, из таблицы видно, что сложность оптимального алгоритма Витерби растет экспоненциально с ростом конструктивной длины кода К, в связи с чем на практике данный метод обычно применяется для декодирования кодов с К<9, обладающих невысокой эффективностью.
Литература
1. http://www.telemultimedia.ru/art.php?id=56
2. http://www.ie.tusur.ru/books/COI/pageO8.htm
3. Золотарёв В.В., Овечкин Г.В.
Помехоустойчивое кодирование. Методы и алгоритмы: Справочник / Под. ред. чл.-кор. РАН Ю.Б. Зубарева. -М.: Горячая линия-Телеком, 2004.
4. Зюко А.Г., Фалько А.И., Панфилов И.П., Банкет В. Л., Иващенко П.В. Помехоустойчивость и эффективность систем передачи информации / Под ред. Зюко А.Г. М.: Радио и связь, 1985. - 272 с.
Воронежский государственный технический университет
BASES OF NOISE-RESISTANT CODING, PRIMARY BENEFITS AND LIMITATION
OF ALGORITHMS OF DECODING
A.V. Bashkirov, I.V. Ostroumov, I.V. Sviridova
In article algorithms of noise-resistant coding which are the most effective before a row of others existing for today algorithms are considered
Key words: noise-resistant coding, algorithm of Viterbi, decoding methods