1. побитово принимаем данные в лз длиной 60 бит
2. методом макс правдоподобия по таблице декодируем 4 слова. Для ускорения можно использовать 2 таблицы
- (2^15) х 4 бита только с минимальными хэмминговыми расстояниями от опорных слов для ускорения процесса поиска и синхронизации
- 16 x 15 бит с "неискаженными" кодовыми словами для декодирования
3. находим сумму мин. хэмминговых расстояний для 4-х слов из лз
4. сравниваем эту сумму с фикс. порогом. Если меньше порога, то считаем, что в лз находятся 4 валидных кодовых слова. Их потом можно декодировать.
Итого:
для быстрого варианта на каждый поступивший в лз бит нужно 4 обращения к таблице, сумма и порог. Но нужна память 16 кбайт.
для медленного варианта на каждый бит нужно 4 раза сделать поиск в таблице из 16 значений подсчетом хэммингового расстояния и выбором минимального. Но затрат по памяти почти нет. Сложность подсчета хэммингового расстояния и веса O(log( bitwidth )) т.е. невелика. Можно этот вариант ускорить за счет табличного вычисления весов для частей слова.
Это были варианты "в лоб".
Для оптимизации можно завести ЛЗ с весами хэмминга с отводами от каждого 15-го элемента. Тогда декодировать методом макс. правдоподобия придется только одно 15-ти битовое слово на один принятый бит. В этом случае удлиннение окна поиска на каждые 15 бит приведет лишь к 1 дополнительному сумматору . Для вычисления суммы весов можно использовать вариант "скользящего среднего" с вычитателем и сумматором. Таких надо 15 шт. В этом случае окно поиска можно увеличивать безгранично при фиксированной сложности.
В общем вариантов по реализации много.
Ну а "выкинь всё и сделай заново" - это, как всегда, солидно, хотя обработка 60 бит "в целом" в канале с абшг будет давать выигрыш по сравнению с обработкой по частям. Здесь спору нет.
Цитата(likeasm @ Nov 28 2014, 10:01)

Имеется систематический кодер 15 бит информации (4 бита инфрмационная часть, 11 избыточная)