Все тот же алгоритм Витерби. Есть набор 2^4 текущих состояний лз. Есть набор 2^4 следующих состояний. Есть ребра - связи между текущими и следующими состояниями лз. Из каждого текущего состояния исходит 2 ребра: для входного значения кодера 0 и входного значения 1.
В процессе декодирования каждому ребру присваивается значение оценки апостериорной вероятности перехода по нему, полученное из решений на выходе демодулятора, соответствующих паре принятых бит, т.н. реберная метрика.
Последовательность ребер - путь. Надо найти максимально правдоподобный путь с наилучшей путевой метрикой, которая получается, как совокупность реберных метрик. Он будет проходить через состояния лз. Проходя выбранный путь в направлении 'к началу', вы восстанавливаете последовательность состояний лз, а из нее последовательность значений на входе кодера.
При рассмотрении нужно уйти от реализации кодера в виде схемы, а вместо нее использовать описание графа переходов из текущих состояний в следующие. Тогда всё унифицируется.
Иными словами: сверточный кодер описывается как {текущее состояние лз}+{значение на входе} => {следующее состояние лз}+{значения на выходе}
для декодера вам нужно модифицировать описание
для прямого прохода {текущее состояние}+{значения на выходе} => {следующее состояние}+{значение на входе} {значения на выходе} будут для вас опорными точками при расчете реберных метрик
для обратного прохода {текущее состояние}+{значение, которое было на входе} => {предыдущее состояние}
Как считать реберные и путевые метрики описано, например, здесь Морелос-Сарагоса Р. Искусство помехоустойчивого кодирования. Методы, алгоритмы, применение / пер. с англ. В. Б. Афанасьева. — М.: Техносфера, 2006. — 320 с. — (Мир связи). — 2000 экз. — ISBN 5-94836-035-0.
|