fk0, легенда (12.12.2016 02:16, просмотров: 888) ответил fk0 на Я код даже смотреть не буду. Приличные люди могут объяснить как оно работает. Неприличные только что-то рассказывать про коды.
Я профессиональный программист с достаточно большим опытом. Код таки посмотрел. Писали студенты. Ни программировать нормально не умеют (всё в одну кучу, ни строчки комментариев где нужно, зато масса где студенту всё понятно и не нужно, сплошные magic numbers в коде, неуменее произвести декомпозицию на отдельные законченные функции хотя бы, пытаются написать автомат -- пусть идут Шалыто читают! какие-то бессмысленные присваивания без обработки результата -- явно копипаста чего-то более разумного), ни вопросом эти студенты не владеют.
Восстановления несущей не видно. Видно что с АЦП попадает в массив carrier, а потом сразу оно перемножается на testInput и комментарий, мол когерентное декодирование. Ну правильно, там где-то должен быть вообще-то PLL! А ЕГО НЕТ! РОСПИЛ! Даже на западе сплошной РОСПИЛ. PLL спиздили прямо из исходников.
Битовой синхронизации я тоже не увидел. А это отдельная очень интересная вещь, вполне может быть асинхронная с несушей -- там второй PLL должен быть, ну или хоть какое-то подобие. В зашумлённом же канале как это работает? Там вообще преамбулу в пакет обычно вставляют, да не простую, а с минимальными автокоррелляционными свойствами, чтоб точно момент засечь. Потом по этой преамбуле и собственно PLL лочит несущую (так "Нордики" работают) может, чтоб два удара одним зайцем. Потому, что два кварца разбегаются, по частоте, за несколько (десятков) бит. А если чотка залочить по преамбуле, то и 32 байта одним кусом принять можно. Иначе подстраивайся непрерывно. А где я тут вижу скремблер, чтоб непрерывно-то оно хоть работать смогло? А я его тоже не вижу. Я вижу только FEC (см. ниже) который может, потенциально, выполнять роль скремблера. Только обладает ли он такими свойствами, что если мы байтики так подберём, то на выходе точно не одни нули окажутся? Ещё вопрос. Я не поленился и проверил. Как минимум для 0x00 и 0xff FEC даёт те же 0x00 и 0xff. Лепота! Паделка студентов как она есть.
Декодера Витерби в "FECDecoder" тоже не увидел. Как оно работает? А оно работает? Увидел что-то похожее на код Хэмминга. Не понял какой, глаза уже слипаются. Не уверен, что там нет ошибки, например. И грош цена тогда тому коду. Повторюсь, приличные люди пишут, мол код Хэмминга, или BCH-код с такими-то параметрами. И кому интересно могут сразу разобраться и проверить. А студенты тыкают своим говнокодом и не могут на пальцах объяснить -- первейший признак, что гнать нужно подальше.
[ZX]