Если ошибки отсутствуют, то декодирование происходит нормально - составляет решетку, выбирает оптимальные пути. При появлении ошибок в исходной последовательности начинает выдавать пакетные ошибки на выход
Это ошибки в канале

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