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

|
Доброго времени суток. Возникла необходимость переписать GFSK демодулятор, заменив посимвольное принятие решений на более помехоустойчивое, учитывающее память сигнала с помощью алгоритма Витерби. Пока даже не важен индекс модуляции и BT гауссовского фильтра, т.к. при необходимости можно и поменять. Построил модель в Matlab, для простоты первого понимания взял сигнал MSK. Однако даже в этом случае возникло непонимание. Во-первых не ясно как быть с начальными условиями. Везде для пояснения пишут что в начале "0", но как я на приемном конце могу знать, что передается если я ещё это не декодировал и не принял решения? Во-вторых, в "Прокис - Цифровая связь" сказано, что на каждом интервале необходимо для каждого узла вычислять метрики, т.е. в нашем случае для каждого из 4-х узлов необходимо вычислить две метрики и исключить наибольшую. При этом на каждом символьном интервале у нас могут быть только два состояния, соответствующие +/-(pi/2) от предыдущего фазового состояния. Поэтому не ясен смысл вычислений метрик для оставшихся двух узлов.
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 21)
|
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 эквалайзера? Это всего лишь фильтр согласованный с известной последовательностью, почему он вдруг эквалайзером Витерби стал?
|
|
|
|
|
Mar 3 2011, 05:48
|
Частый гость
 
Группа: Свой
Сообщений: 136
Регистрация: 10-04-09
Из: Омск
Пользователь №: 47 461

|
Цитата(petrov @ Mar 2 2011, 18:44)  Нет вру, нет нужды знать начальное состояние автомата, выживший путь автоматом будет из правильного состояния выходить. Важно в конце блока автомат в известное состояние перевести чтобы последние символы декодировать. Если я правильно понял то не зная начальных условий мы перебираем все возможные пути. Однако если мы с помощью синхрослова синхронизируем начальный момент декодирования, то мы исключим из перебора те ветви, которые в принципе не могут выходить из данного начального состояния. Т.е. для той же MSK в синхрословом мы можем сократить количество путей в два раза??? Стоит наверно сказать более подробно о сигнале и приемнике: сигнал представляет собой короткое сообщение - 2 байта синхрослова + 10 байт данных. Приемник выполнен на сигнальном процессоре TMS320C5509. Может и не стоит в данном случае применять декодирование по Витерби, но как тогда учесть память сигнала. Посимвольные детектирование сигналов МНФ по максимуму апостериорной вероятности в данном случае не пойдет... каналов много, сигнальник не вытянет. to petrov: В модели которой Вы привели система с обратной связью, она просто не успеет за это время войти в синхронизм.
Сообщение отредактировал STAR_IK - Mar 3 2011, 07:08
|
|
|
|
|
Mar 3 2011, 07:48
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(STAR_IK @ Mar 3 2011, 08:48)  Если я правильно понял то не зная начальных условий мы перебираем все возможные пути. Однако если мы с помощью синхрослова синхронизируем начальный момент декодирования, то мы исключим из перебора те ветви, которые в принципе не могут выходить из данного начального состояния. Т.е. для той же MSK в синхрословом мы можем сократить количество путей в два раза??? Ну начальный момент это слишком мало чтобы тут что-то наэкономить, впрочем если в этом есть какой-то смысл то не проблема на передаче сбрасывать элементы памяти в начальное состояние. Цитата(STAR_IK @ Mar 3 2011, 08:48)  Стоит наверно сказать более подробно о сигнале и приемнике: сигнал представляет собой короткое сообщение - 2 байта синхрослова + 10 байт данных. Приемник выполнен на сигнальном процессоре TMS320C5509. Может и не стоит в данном случае применять декодирование по Витерби, но как тогда учесть память сигнала. Посимвольные детектирование сигналов МНФ по максимуму апостериорной вероятности в данном случае не пойдет... каналов много, сигнальник не вытянет. ИМХО для GMSK выигрыш мал чтобы заморачиваться алгоритмом Витерби. Цитата(STAR_IK @ Mar 3 2011, 08:48)  to petrov: В модели которой Вы привели система с обратной связью, она просто не успеет за это время войти в синхронизм. Можно сделать feed forward фазовую синхронизацию подобно как в модели для pi/4 qpsk приводил или по преамбуле синхронизироваться быстро а потом переключаться на обратную связь.
|
|
|
|
|
Mar 3 2011, 08:45
|
Частый гость
 
Группа: Свой
Сообщений: 136
Регистрация: 10-04-09
Из: Омск
Пользователь №: 47 461

|
Цитата(petrov @ Mar 3 2011, 13:48)  ИМХО для GMSK выигрыш мал чтобы заморачиваться алгоритмом Витерби. На самом деле я не ограничен только именно GMSK. Такой простой сигнал я взял для простоты понимания. Индекс модуляции я могу взять в принципе любой, как и ВТ. Соответственно и фазовое дерево можно по мудренее построить... Цитата(petrov @ Mar 3 2011, 13:48)  Можно сделать feed forward фазовую синхронизацию подобно как в модели для pi/4 qpsk приводил или по преамбуле синхронизироваться быстро а потом переключаться на обратную связь. До этого у проблемы с синхронизацией (частотной или символьной) у нас не возникало. Оценка частоты и времени выборки производится в самом начале, а за такую малую длительность пакета параметры просто не успевали измениться. Схема на частотном детекторе с посимвольным принятием решения отлично работает, но не хватает 2-3 дБ в помехоустойчивости.
|
|
|
|
|
Mar 3 2011, 09:08
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(STAR_IK @ Mar 3 2011, 11:45)  На самом деле я не ограничен только именно GMSK. Такой простой сигнал я взял для простоты понимания. Индекс модуляции я могу взять в принципе любой, как и ВТ. Соответственно и фазовое дерево можно по мудренее построить... Вы можете сделать GMSK c простейшим мягким свёрточным кодом и получить тот же выигрыш в 3 дБ. Цитата(STAR_IK @ Mar 3 2011, 11:45)  До этого у проблемы с синхронизацией (частотной или символьной) у нас не возникало. Оценка частоты и времени выборки производится в самом начале, а за такую малую длительность пакета параметры просто не успевали измениться. Схема на частотном детекторе с посимвольным принятием решения отлично работает, но не хватает 2-3 дБ в помехоустойчивости. Для MSK нужно учитывать два символа, например таким способом как в модели показано, получите 2-3 дБ.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|