[an error occurred while processing this directive]
|
При декодировании мягких решений по алгоритму Витерби важно евклидово расстояние между символами а не угловое, т. е. требуются мягкие значения координат вектора. Делают так: алгоритмом CORDIC определяют аргумент входного вектора (причём угол измеряют не в радианах а
2*pi --> 2^n), часть старших разрядов считается целой в зависимости от того сколько положений по углу на комплексной плоскости в вашей модуляции (BPSK - 1 разряд, QPSK - 2 разряда, NPSK - log2(N)разрядов), дробная часть является ошибкой(сразу в доп. коде) из-за несинхронности передающего и приёмного гетеродинов, интегрируете ошибку(интегратор+параллельное пропорциональное звено(для устойчивости)), далее выход интегратора управляет входом NCO, выходом которого является фаза на которую вы и доворачиваете алгоритмом CORDIC входной вектор. Таким образом получается ФАПЧ с обратной связью по решению. Берёте несколько старших разрядов координат повёрнутого вектора и получаете мягкие решения для декодера Витерби. Дифференциальное декодирование для устранения неоднозначности фазы приёмного гетеродина выполняется после Витерби на уровне информационных битов кодирующих угол вектора. Ключевым для вычислений является CORDIC (ищите в GOOGLE море всего) а не atan(x/y), часто atan реализуется в библиотеках именно через CORDIC (что и пытался объяснить fontp). Реализация на DSP послений этап для начала необходимо сделать модель демодулятора (рекомендую Simulink).
E-mail: info@telesys.ru