Как программно декодировать 4-QAM сигнал
QAM4 - можно рассматривать как QPSK, которую в свою очередь можно рассматривать как 2xBPSK, т. е. как два независимых сигнала Cos и Sin одинаковой частоты и амплитуды, но сдвинутых по фазе. Иными словами, решить систему уравнений вида sin+cos=A. В любом случае вы вычисляете точку на созвездии, а затем принимаете решение, какой именно из 4 фиксированных эта точка является.
Как должен работать алгоритм пилот-тона? И как обеспечить синхронизацию
если во время декодирования фаза начнет "уползать" в сторону?
Синхросигнал должен выполнять две функции:
1) Маркировать начало передачи или иным образом синхронизировать такты (фронт волны).
2) Детектировать условия среды передачи. Зная отправленный и имея принятый синхросигнал, можно определить параметры среды и определить корректирующие коэффициенты для дальнейшего приёма. В данном случае, это будет нулевая фаза и амплитуда.
Таким образом синхросигнал должен фиксировать все три параметра синусоид. Далее, принимая сигнал с данными, можно уже декодировать их.