|
Демодуляция GFSK с помощью Витерби |
|
|
|
Mar 2 2011, 08:42
|
Частый гость
 
Группа: Свой
Сообщений: 136
Регистрация: 10-04-09
Из: Омск
Пользователь №: 47 461

|
Доброго времени суток. Возникла необходимость переписать GFSK демодулятор, заменив посимвольное принятие решений на более помехоустойчивое, учитывающее память сигнала с помощью алгоритма Витерби. Пока даже не важен индекс модуляции и BT гауссовского фильтра, т.к. при необходимости можно и поменять. Построил модель в Matlab, для простоты первого понимания взял сигнал MSK. Однако даже в этом случае возникло непонимание. Во-первых не ясно как быть с начальными условиями. Везде для пояснения пишут что в начале "0", но как я на приемном конце могу знать, что передается если я ещё это не декодировал и не принял решения? Во-вторых, в "Прокис - Цифровая связь" сказано, что на каждом интервале необходимо для каждого узла вычислять метрики, т.е. в нашем случае для каждого из 4-х узлов необходимо вычислить две метрики и исключить наибольшую. При этом на каждом символьном интервале у нас могут быть только два состояния, соответствующие +/-(pi/2) от предыдущего фазового состояния. Поэтому не ясен смысл вычислений метрик для оставшихся двух узлов.
|
|
|
|
|
Mar 2 2011, 09:25
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(STAR_IK @ Mar 2 2011, 11:42)  Во-первых не ясно как быть с начальными условиями. Везде для пояснения пишут что в начале "0", но как я на приемном конце могу знать, что передается если я ещё это не декодировал и не принял решения? Декодер необходимо синхронизировать, например по преамбуле устанавливать в исходное состояние. Цитата(STAR_IK @ Mar 2 2011, 11:42)  Во-первых не ясно как быть с начальными условиями. Везде для пояснения пишут что в начале "0", но как я на приемном конце могу знать, что передается если я ещё это не декодировал и не принял решения? У MSK 4 фазовых состояния 0 pi/2 pi -pi/2, из предыдущего фазового состояния не все переходы возможны, возможные и образуют решётку переходов между 4-мя фазовыми состояниями. Другое дело что MSK можно оптимально без витерби демодулировать, да и в случае GMSK c BT=0.3 такой демодулятор не очень много проигрывает, что-то в районе децибела с копейками.
|
|
|
|
|
Mar 2 2011, 09:56
|
Частый гость
 
Группа: Участник
Сообщений: 141
Регистрация: 25-10-07
Пользователь №: 31 729

|
Цитата(petrov @ Mar 2 2011, 12:25)  Другое дело что MSK можно оптимально без витерби демодулировать Это парой фильтров разнесенными на скорость?
|
|
|
|
|
Mar 2 2011, 10:41
|
Частый гость
 
Группа: Участник
Сообщений: 141
Регистрация: 25-10-07
Пользователь №: 31 729

|
Цитата(petrov @ Mar 2 2011, 13:00)  7ой матлаб (serv pack 1) чего то матерится по страшной силе, на два экрана красных надписей наваливает при попытке открытия проекта. Ну и в любом случае. Вроде бы Витерби не просто демодулирует, а пытается исправить канал (т.е. это не столько демодулятор сколько эквалайзер), и как то не совсем мне понятно (пока не смог открыть соответствующий mdl), в чем же оптимальность демодуляции без Витерби, особенно в срезе коррекции канала?
|
|
|
|
|
Mar 2 2011, 10:56
|
Частый гость
 
Группа: Участник
Сообщений: 141
Регистрация: 25-10-07
Пользователь №: 31 729

|
Цитата(one_eight_seven @ Mar 2 2011, 13:50)  Алгоритм Витерби, вообще, не применяется для демодуляции (СЮРПРИЗ!). Он применяется для декодирования сверточных кодов. Во для GSM то на самом деле сюрприз! Они оказываются не по теме Витерби применяют когда канал корректируют (для сверточников вроде бы сюрпризов не наблюдается). Цитата(petrov @ Mar 2 2011, 13:54)  Витерби это всего лишь алгоритм поиска максимально правдоподобного пути по решётке, автоматически он сам ничего не делает, в данном случае речь об учёте памяти модуляции, если необходим учёт памяти канала то нужно разрабатывать этот эквалайзер витерби. А какие мысли есть почему mdl не открывается?
|
|
|
|
|
Mar 2 2011, 11:10
|
Профессионал
    
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775

|
Цитата(one_eight_seven @ Mar 2 2011, 15:00)  В GSM применяется Soft-Decision Viterbi Decoder, декодер, а не демодулятор. Демодулятор выдаёт символы, декодер их оценивает. Навроде как гаечный ключ нельзя ввернуть в отверстие, в отверстие ввинчивается винт, а вот его уже можно крутить гаечным ключом. В GSM применяется эквалайзер Витерби, который производит оценку ИХ канала для каждого слота по заранее известной кодовой последовательности при помощи алгоритма максимального правдоподобия Витерби, а уже после демодуляции производится декодирование сверточного кода также по алгоритму Витерби. кроме того, не обязательно для целей демодуляции/декодирования применять алгоритм Витерби, можно использовать и другие алгоритмы, например, алгоритм оптимального посимвольного принятия решения - MAP (maximum a posteriori), тогда получите еще большую помехоустойчивость.
Сообщение отредактировал Serg76 - Mar 2 2011, 11:44
|
|
|
|
|
Mar 2 2011, 12:32
|
Профессионал
    
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775

|
Цитата(petrov @ Mar 2 2011, 14:40)  Вроде не так, определением ИХ канала занимается отдельное устройство, а эквалайзер Витерби используя ИХ уже ищет максимально правдоподобную последовательность символов. Это устройство в общем и называется эквалайзером Витерби, которое производит оценку ИХ канала, а алгоритм Витерби применяется для расчета метрику и оценки переданной последовательности данных. Цитата(one_eight_seven @ Mar 2 2011, 15:21)  Чтобы применить эквалайзер витерби нужно передавать с полезным сигналом (случайным) тестовый (детерминированый). Демодулировать (объясните мне, как работает демодулятор Витерби, если он демодулирует ЛЮБОЙ сигнал?) обе последовательности, и уже после этого в дело вступает эквалайзер Витерби. Все правильно, в пакетах GSM в середине передается настроечная последовательность, копиия которой хранится в приемнике. По ней и производится оценка ИХ.
Сообщение отредактировал Serg76 - Mar 2 2011, 12:34
|
|
|
|
|
Mar 2 2011, 12:44
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(petrov @ Mar 2 2011, 12:25)  Декодер необходимо синхронизировать, например по преамбуле устанавливать в исходное состояние. Нет вру, нет нужды знать начальное состояние автомата, выживший путь автоматом будет из правильного состояния выходить. Важно в конце блока автомат в известное состояние перевести чтобы последние символы декодировать. Цитата(Serg76 @ Mar 2 2011, 15:32)  Это устройство в общем и называется эквалайзером Витерби, которое производит оценку ИХ канала, а алгоритм Витерби применяется для расчета метрику и оценки переданной последовательности данных. С чего бы это? А если я по этой известной настроечной последовательности рассчитываю коэффициенты DFE эквалайзера? Это всего лишь фильтр согласованный с известной последовательностью, почему он вдруг эквалайзером Витерби стал?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|