Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Реализация демодулятора MSK на Blackfin
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Pavel_SSS
Возникла необходимость сделать программный демодулятор MSK на DSP Blackfin.
Мой опыт в DSP на MK ограничивается линейной и адаптивной фильтрацией да и то на других платформах, на Blackfin-е ничего писать не доводилось - осваиваю. На входе - потоки 24-бит I и Q, на выходе - демодулированный битовый поток.
Хотелось бы узнать, как народ реализует управляемые генераторы для Костаса на Blackfin-e- а если удастся посмотреть кусок кода, который делает примерно то же самое - было бы замечательно, а то похоже изобретением велосипеда занимаюсь.
Заранее спасибо всем откликнувшимся.
petrov
Непонятно какое отношение имеет блэкфин к петле Костаса. Что на FPGA делать, что на PC, алгоритмы одни и те же. Примеры алгоритмов выкладывались на форуме.
Pavel_SSS
Цитата(petrov @ Mar 20 2011, 00:07) *
Непонятно какое отношение имеет блэкфин к петле Костаса. Что на FPGA делать, что на PC, алгоритмы одни и те же. Примеры алгоритмов выкладывались на форуме.

Алгоритм-то как раз понятен - два перемножителя, два ФНЧ, сумматор, управляемый генератор. Вопрос в эффективной реализации с учетом особенностей архитектуры конкретного процессора - а то я и с петлей Костаса только теоретически знаком и на Блэкфине до этого ничего не писал, а код надо эффективный и скоростной. Библиотечные синус и косинус, полагаю, не применишь.
P.S. Писать собрался на ассемблере.
Lmx2315
а что за блекфин и куда и как вы в него потоки i/q 24 бита заводите ? ..и на какой скорости ?
Oldring
Цитата(Pavel_SSS @ Mar 19 2011, 23:52) *
Возникла необходимость сделать программный демодулятор MSK на DSP Blackfin.


Для какого канала? Какие требования по SNR?

Для AWGN канала без особых требований по SNR - согласованный фильтр, потом восстанавливаете символьный тайминг, например, Гарднером, демодулируете дифференциально - смотрите, куда повернулась на 90 градусов фаза по отношению к предыдущему символу. Всё.

Но обычно MSK - это только часть большой системы. Многое (почти всё) в устройстве демодулятора зависит от канала, через который должна работать система.

Pavel_SSS
Цитата(Lmx2315 @ Mar 20 2011, 13:12) *
а что за блекфин и куда и как вы в него потоки i/q 24 бита заводите ? ..и на какой скорости ?

Блекфин ADSP-BF504, скорость 540 000 выборок в секунду, I/Q заводим по SPORT-у, с AD9874.

Цитата(Oldring @ Mar 20 2011, 14:21) *
Для какого канала? Какие требования по SNR?

Для AWGN канала без особых требований по SNR - согласованный фильтр, потом восстанавливаете символьный тайминг, например, Гарднером, демодулируете дифференциально - смотрите, куда повернулась на 90 градусов фаза по отношению к предыдущему символу. Всё.

Но обычно MSK - это только часть большой системы. Многое (почти всё) в устройстве демодулятора зависит от канала, через который должна работать система.

По многим соображениям, в том числе и по SNR, хотелось бы когерентную демодуляцию сделать.
Oldring
Цитата(Pavel_SSS @ Mar 20 2011, 14:27) *
По многим соображениям, в том числе и по SNR, хотелось бы когерентную демодуляцию сделать.


Кто мешает?
Коггерентная демодуляция отличается от дифференциальной только тем, что дифференциальная демодуляция оценивает фазовый сдвиг в канале только по предыдущему символу, а коггерентная - по некоторой последовательности символов, выигрывая 3 dB за счет меньшего шума референсной фазы. При непрерывной передаче делаете ФАПЧ с NCO чиста в цифре, плавно отслеживающий референсную фазу.
Pavel_SSS
Цитата(Oldring @ Mar 20 2011, 14:47) *
Кто мешает?
Коггерентная демодуляция отличается от дифференциальной только тем, что дифференциальная демодуляция оценивает фазовый сдвиг в канале только по предыдущему символу, а коггерентная - по некоторой последовательности символов, выигрывая 3 dB за счет меньшего шума референсной фазы. При непрерывной передаче делаете ФАПЧ с NCO чиста в цифре, плавно отслеживающий референсную фазу.

Мешает отсутствие опыта написания таких вещей вообще и опыта программирования на блекфине в частности. Хотелось бы раздобыть кусокк кода с целью ознакомиться с приемами программирования
Oldring
Цитата(Pavel_SSS @ Mar 20 2011, 14:57) *
Мешает отсутствие опыта написания таких вещей вообще и опыта программирования на блекфине в частности. Хотелось бы раздобыть кусокк кода с целью ознакомиться с приемами программирования


А...
Ну опыт можно приобрести только самостоятельно. И чтение описания архитектуры и системы команд камня тут ничто не заменит IMHO. Вне зависимости от модуляции. Если меня не подводит память, у блэкфина нет команды "демодулировать MSK".

Из приемов специфичных для MSK вне зависимости от камня: умножьте сигнал на символьной дискретизации на комплексную синусоиду с периодом, равным 4 символам. То есть четыре точки последовательно по углам квадрата, угол поворота квадрата медленно отслеживается вашей фазовой ФАПЧ. Не важно в какую сторону. Тогда констелляция сведется к двум точкам +-1, действительную часть демодулируете в бит, в зависимости от того, положительная она или отрицательная, не забывая проксорить с предыдущим битом, мнимая компонента умноженная на знак действительной - сигнал ошибки для вашего фазового ФАПЧ, задающей угол поворота референсного квадрата. И, разумеется, такой огромный динамический диапазон как 24 бита вам может потребоваться только до AGC на входе. Потом достаточно 8 бит, но и 16 бит у вас бесплатны.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.