Разработка sdr-драйвера LabVIEW

Радиотехника, платы, схемы, оборудование, фото- видео- приборы, компьютеры
Аватара пользователя
Mad_Ahab
junior
junior
Сообщения: 66
Зарегистрирован: 12 янв 2015, 16:33
Версия LabVIEW: 2013
Контактная информация:

Re: Разработка sdr-драйвера LabVIEW

Сообщение Mad_Ahab »

С неясной для меня пилообразностью разобрался - оказалось, что синус с частотой 70МГц оцифровывается с частотой 90МГц, и нужно бы полученные точки соединять кривыми Безье, чтобы получить более осмысленную картинку.
Зато с БПФ внезапно возникли какие-то заминки: в основном, я не совсем понимаю как это реализуется конкретно в :labview: , и мне неясно, зачем такое море инструментов только для одного лишь БПФ, хотя я понимаю, что они не только для него. Соответственно, непонятно пока, какой путь самый простой для реализации БПФ.
Вот я получил отсчеты с 16-разрядного АЦП, вот у меня есть слова 16-разрядные, в которых хранятся значения со знаком. И вот (рис.2) я пытаюсь сигнал обработать с помощью БПФ: сигнал - это синус с частотой 102 МГц, уровень = -50dB.
И вот (рис.1) - я получаю графики, которые почти не могу интерпретировать: пики есть, вот только ось Х весьма слабо соответствует частотам, точнее, вообще не соответствует. И высота пиков тоже не та, должна быть порядка 1200 (опять в отсчетах).

Страшно туплю, прошу совета, если возможно.
Вложения
Рис.1
Рис.1
Рис.2
Рис.2
Курю маны, дым уже глаза ест...
Изображение
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

Re: Разработка sdr-драйвера LabVIEW

Сообщение Vitekkz88 »

Mad_Ahab писал(а): у меня синус несколько ломаный, частоты дискретизации не хватает, для того чтобы отобразить данные плавно - чего-то я пока не догоняю, это же такие данные приходят? Я
Проверяйте количество принятых отсчетов. Если размер отправленных и принятых данных корректен - то ломаный синус можете интерполировать сплайнами например. Тут есть хорошая статья и пример реализации интерполяции от одного из наших коллег по форуму: http://habrahabr.ru/post/234895/ .
Соответственно, непонятно пока, какой путь самый простой для реализации БПФ.
Вот я получил отсчеты с 16-разрядного АЦП, вот у меня есть слова 16-разрядные, в которых хранятся значения со знаком. И вот (рис.2) я пытаюсь сигнал обработать с помощью БПФ: сигнал - это синус с частотой 102 МГц, уровень = -50dB.
Смотрите картинку ниже. Программу прикрепил. Вдогонку почитайте вот тут http://www.ni.com/white-paper/4541/en/. Верное дело пишут)
Вложения
Спектр.png
Spectrum.vi
(17.54 КБ) 175 скачиваний
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
Аватара пользователя
Mad_Ahab
junior
junior
Сообщения: 66
Зарегистрирован: 12 янв 2015, 16:33
Версия LabVIEW: 2013
Контактная информация:

Re: Разработка sdr-драйвера LabVIEW

Сообщение Mad_Ahab »

Спасибо за ответ, стало понятнее, я разобрался с Вашим :vi: , но теперь мне надо как-то систематизировать свои данные, чтобы больше не тыкаться вслепую в различные приборы из палитры для обработки сигналов в :labview: .
Итак, у меня есть:
  • точное число точек, пришедших с АЦП: 65536, или #s
    центральная частота сигнала - то есть, частота синусоиды, генератор сигнала подключен ко входу приемника: 100 МГц
    ширина полосы пропускания: 10 МГц
    приемник в данный момент настроен на 200 МГц (с помощью команд из DLL)
    уровень сигнала: -50 dB
    частота дискретизации: 90 МГц, или Fs
Я пытаюсь отобразить амплитудный спектр:
Вверху - с помощью Вашего прибора, внизу - с помощью Spectral Measurements Express VI
Вверху - с помощью Вашего прибора, внизу - с помощью Spectral Measurements Express VI
Узлы для этих графиков я использовал следующие:
1 - для нижнего графика, 2 - для графика полученного Вашим методом
1 - для нижнего графика, 2 - для графика полученного Вашим методом
И теперь я пытаюсь перевести эти самые отсчеты АЦП в Гц для отображения шкалы на оси Х в обоих графиках и не понимаю, как именно это сделать с помощью имеющейся у меня информацией.

Настройки для Spectral Measurements Express VI:
Безымянный1.jpg
Курю маны, дым уже глаза ест...
Изображение
Аватара пользователя
Mad_Ahab
junior
junior
Сообщения: 66
Зарегистрирован: 12 янв 2015, 16:33
Версия LabVIEW: 2013
Контактная информация:

Re: Разработка sdr-драйвера LabVIEW

Сообщение Mad_Ahab »

Здравствуйте, с праздниками :ru:

С вашей помощью (огромное спасибо :thank: ) добился приемлемого функционала в прототипе. Теперь захотел переписать программу как положено, с очередями, нотифаерами, обработкой сообщений и данных в разных потоках и прочим.
Соответственно - вопрос: как можно добавлять в очередь элементы переменного размера? То есть, я хочу собирать очередь входящих сообщений для вывода на консоль, они бывают разной длины, как их добавлять в очередь? Точнее, чем нужно инициализировать очередь? Пустой текстовой строкой?
Курю маны, дым уже глаза ест...
Изображение
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Разработка sdr-драйвера LabVIEW

Сообщение dadreamer »

 
Вложения
Snippet.png
TextQueue.vi
lv2011
(12.19 КБ) 172 скачивания
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Железо»