Цитата(ShamilIhs @ Oct 25 2008, 23:06)

Уважаемые специалисты.
Буду очень признателен, если кто-нибудь поможет исходником декодера систематических сверточных кодов по алгоритму Фано. Интересует декодер, который работает с длиной кодового ограничения К=36.
Заранее благодарен.
Не вижу в этом никакой проблемы. Алгоритм Фано входит в семейство алгоритмов последовательного декодирования, поэтому сложность и структура построения декодера не зависят от длины кодового ограничения, в отлчие от алгоритма Витерби, где сложность реализации экспоненциально возрастает с увеличением длины кодового ограничения. Я тоже в свое время столкнулся с такой проблемой, когда надо было реализовать ССК декодер с относительной скоростью кодирования 7/8 (семь полиномов кода имели общую длину регистра 91 бит), но выход очевиден. Реализован декодер был на С++ (компилятор MS VisualStudio 6), поэтому максимально доступными оказались регистры unsigned __int64. Поэтому я брал 2 регистра данного типа (общая длина такой спарки составляла 128 бит, что вполне достаточно) и на каждом такте работы декодера старшие 7 бит первого регистра заносились в младшие 7 бит второго и оба сдвигались тоже на 7 бит. Для 1/2 подход тот же, только сдвигать регистры надо побитно. Вот и весь секрет. Реализовывал я ССК декодеры со скоростями 1/2, 3/4 и 7/8 в жесткой (Хемминга) и мягкой (Эвклидовой) метрике. Для 1/2 даже с длиной регистра 63 бита. Привожу фрагмент кода для декодера 7/8:
unsigned __int64 state1; /* Состояние первого регистра кодера следующего узла */
unsigned __int64 state2; /* Состояние второго регистра кодера следующего узла */
state1 <<= 7;
tstate = state1 >> 57; // временный регистр
state2 <<= 7;
state2 |= tstate;
// и так на каждом такте, при условии, что в канале нет ошибок