Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Декодер Витерби выдает пакетные ошибки
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Вопросы системного уровня проектирования
Muscat
Написал модель сверточного кодера/декодера Витерби.
Если ошибки отсутствуют, то декодирование происходит нормально - составляет решетку, выбирает оптимальные пути. При появлении ошибок в исходной последовательности начинает выдавать пакетные ошибки на выход

Это ошибки в канале


А это ошибки уже после декодера. Как видно появление одиночной ошибки не всегда вызывает пакетные, но часто приводит к тому, что следующая серия выходных бит оказывается ошибочной, и ошибки следуют до тех пор, пока не встретиться еще одна ошибка в канале. То есть визуально эффект похож на ошибку фазовой синхронизации в BPSK.


Я так понимаю, что ошибка кроется в механизме выбора выходного бита. На данный момент она организованна так - составляется матрица путей вида

1 2 3...1...4
2 1 3....2..4
1 2 2....3..4
1 2 3....1...4
И столбец метрики путей. (10 11 7 3)
Выбираем путь с минимальной метрикой - в нашем случае 3.
Значит принимаем за достоверный переход из 4 в 3, ему условно соответствует 1. Выдаем единицу на выход, из остальных метрик вычитаем тройку. Получаем новую матрицу, смещенную вправо на единицу. Повторяем операцию.

Что то здесь наверное неправильно? Как должен действовать механизм, определяющий что подать на выход?

Прикрепляю m.файлы в архиве
petrov
По матрице путей надо на всю глубину обратно проходить чтобы переданный бит определить.
Muscat
Не понял

Запустите файлы, там на каждом новом шаге выдается состояние матрицы состояний. Слева - концы путей, справа начала путей. В рабочем состоянии буфер всегда заполнен и его правые значения должны быть отброшены, чтобы слева вписать новые состояния. Перед отбрасыванием я смотрю, какие это были состояния и в соответствии с этим формирую выходной бит

В дальнейшем при реализации будут храниться не номера состояний, а единицы и нули соответствующие переходу вверх-вниз, но пока то для модели можно хранить и сами состояния, тогда возвращаться назад по всему дереву не обязательно, достаточно посмотреть состояния последних переходов
petrov
Проход назад по матрице путей это ключевая обязательная операция. Нужно пройти по пути с минимальной метрикой через весь буфер обратно чтобы определить переданный бит.
Muscat
Если переданный бит определяется переходом, то зачем проходить через весь буфер, если искомый переход - последние 2 числа в строке буфера с минимальной метрикой?
petrov
Цитата(Muscat @ Jul 7 2010, 13:16) *
Если переданный бит определяется переходом, то зачем проходить через весь буфер, если искомый переход - последние 2 числа в строке буфера с минимальной метрикой?


Затем что обратный проход это и есть история переходов автомата максимально правдоподобно оценённая, cтрока никак не связана с тем куда выйдет путь с минимальной метрикой при обратном проходе.
Muscat
Наверное я плохо объяснил. В буфре у меня именно что пути и хранятся.

Ошибку кстати нашел, как обычно ей оказалась ошибка в индексе, которая вылезала при определенных условиях. Обнаружил выполняя переходы руками.
Декодер больше не размножает ошибки, данные согласуются с тем, что выдает bertool.
Буду разбираться с полиномиальным описанием и мягкими решениями

Кстати, посоветуйте какой нибудь хороший материал на русском? На английском читаю, но на русском все таки проще для понимания. Скляра читал.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.