|
|
  |
Реализация демодулятора MSK на Blackfin, с петлей Костаса |
|
|
|
Mar 19 2011, 20:52
|
Участник

Группа: Участник
Сообщений: 63
Регистрация: 11-10-10
Из: Москва
Пользователь №: 60 055

|
Возникла необходимость сделать программный демодулятор MSK на DSP Blackfin. Мой опыт в DSP на MK ограничивается линейной и адаптивной фильтрацией да и то на других платформах, на Blackfin-е ничего писать не доводилось - осваиваю. На входе - потоки 24-бит I и Q, на выходе - демодулированный битовый поток. Хотелось бы узнать, как народ реализует управляемые генераторы для Костаса на Blackfin-e- а если удастся посмотреть кусок кода, который делает примерно то же самое - было бы замечательно, а то похоже изобретением велосипеда занимаюсь. Заранее спасибо всем откликнувшимся.
Сообщение отредактировал Pavel_SSS - Mar 19 2011, 20:53
|
|
|
|
|
Mar 19 2011, 21:15
|
Участник

Группа: Участник
Сообщений: 63
Регистрация: 11-10-10
Из: Москва
Пользователь №: 60 055

|
Цитата(petrov @ Mar 20 2011, 00:07)  Непонятно какое отношение имеет блэкфин к петле Костаса. Что на FPGA делать, что на PC, алгоритмы одни и те же. Примеры алгоритмов выкладывались на форуме. Алгоритм-то как раз понятен - два перемножителя, два ФНЧ, сумматор, управляемый генератор. Вопрос в эффективной реализации с учетом особенностей архитектуры конкретного процессора - а то я и с петлей Костаса только теоретически знаком и на Блэкфине до этого ничего не писал, а код надо эффективный и скоростной. Библиотечные синус и косинус, полагаю, не применишь. P.S. Писать собрался на ассемблере.
|
|
|
|
|
Mar 20 2011, 11:21
|

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(Pavel_SSS @ Mar 19 2011, 23:52)  Возникла необходимость сделать программный демодулятор MSK на DSP Blackfin. Для какого канала? Какие требования по SNR? Для AWGN канала без особых требований по SNR - согласованный фильтр, потом восстанавливаете символьный тайминг, например, Гарднером, демодулируете дифференциально - смотрите, куда повернулась на 90 градусов фаза по отношению к предыдущему символу. Всё. Но обычно MSK - это только часть большой системы. Многое (почти всё) в устройстве демодулятора зависит от канала, через который должна работать система.
--------------------
Пишите в личку.
|
|
|
|
|
Mar 20 2011, 11:27
|
Участник

Группа: Участник
Сообщений: 63
Регистрация: 11-10-10
Из: Москва
Пользователь №: 60 055

|
Цитата(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, хотелось бы когерентную демодуляцию сделать.
|
|
|
|
|
Mar 20 2011, 11:57
|
Участник

Группа: Участник
Сообщений: 63
Регистрация: 11-10-10
Из: Москва
Пользователь №: 60 055

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

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(Pavel_SSS @ Mar 20 2011, 14:57)  Мешает отсутствие опыта написания таких вещей вообще и опыта программирования на блекфине в частности. Хотелось бы раздобыть кусокк кода с целью ознакомиться с приемами программирования А... Ну опыт можно приобрести только самостоятельно. И чтение описания архитектуры и системы команд камня тут ничто не заменит IMHO. Вне зависимости от модуляции. Если меня не подводит память, у блэкфина нет команды "демодулировать MSK". Из приемов специфичных для MSK вне зависимости от камня: умножьте сигнал на символьной дискретизации на комплексную синусоиду с периодом, равным 4 символам. То есть четыре точки последовательно по углам квадрата, угол поворота квадрата медленно отслеживается вашей фазовой ФАПЧ. Не важно в какую сторону. Тогда констелляция сведется к двум точкам +-1, действительную часть демодулируете в бит, в зависимости от того, положительная она или отрицательная, не забывая проксорить с предыдущим битом, мнимая компонента умноженная на знак действительной - сигнал ошибки для вашего фазового ФАПЧ, задающей угол поворота референсного квадрата. И, разумеется, такой огромный динамический диапазон как 24 бита вам может потребоваться только до AGC на входе. Потом достаточно 8 бит, но и 16 бит у вас бесплатны.
--------------------
Пишите в личку.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|