На главную страницу сайта
· Наш магазин · Объявления · Рейтинг · Статьи · Частоты · Копилка · Аэродромы · Live!
· Файлы · Диапазоны · Сигналы · Музей · Mods · LPD-форум · Клуб · Радиостанции
На сайте: гостей - 53,
участников - 4 [ ivan93, DangerAlex, sasha555, Greenland]
 · Начало · Опросы · События · Статистика · Поиск · Регистрация · Правила · FAQ · Галерея ·
 Форум —› Радиосигналы —› SDR: I/Q - как выделить несколько полос по 12500 Гц из гирокой полосы потока данных из SDR? 
Различные приборы, оборудование, спутниковые и радиотелефоны!


Усилители сигнала и мощности

Усилители сотовой связи

Металлоискатели

Радионяни и видеоняни

Измерители КСВ и мощности
 Страница:  ««  1  2  3  4  5  6  7  8  9Поиск в теме
Автор Сообщение
vladisslav2011
Участник
Offline0.0
с фев 2022
СЗФО
Сообщений: 343

Дата: 30 Янв 2023 01:09:10 · Поправил: vladisslav2011 (30 Янв 2023 01:14:31) #  

Programmist
А шумы и звук будут ужасны, из-за встроенной линейной интерполяции.
Так это же венда гадит своим интерполятором, а не звуковая карта. Звуковая карта воспроизводит то, что ей дают в буферах DMA. Когда-то давно моя более-менее качественная звуковая карта под вендой довольно сильно искажала звук из-за неотключаемой обработки в драйвере. После избавления от венды звук значительно улучшился.

Зачем вообще использовать MCI в 2023 году? Есть же DirectSound, ASIO, OpenAL...
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 30 Янв 2023 01:25:33 · Поправил: Programmist (30 Янв 2023 02:05:12) #  

vladisslav2011
Так это же венда гадит своим интерполятором, а не звуковая карта.
Звуковая карта, или драйвер её. Подайте на неё 16 кГц и посмотрите что на выходе.
Не думаете же Вы, что кто-то там заморачивался с качественной интерполяцией, которая, взятая из методички, сожрёт весь ресурс процессора.

Есть же DirectSound, ASIO, OpenAL...
Есть и ASIO, но только для взрослых, потому что не заморачивался с ASIO для двухканальных карт:



Нет восьми каналов, нет и ASIO, слушай стерео через bass.dll.

А чтобы пользователи не задавали странных вопросов, типа почему сегодня звук аж за душу берёт, а вчера был не очень, на "часах" написана частота DAC:


Увеличить


Которую так любят переключать на 44100 любители чужих микрофонов с половины сайтов.
Даже YouTube уже давно за ум взялся, и переключает на 48000.
Читают видно иногда форум-то.)
Реклама
Google
wazzoo
Участник
Offline3.4
с авг 2016
Псков
Сообщений: 7162

Дата: 30 Янв 2023 02:15:05 · Поправил: wazzoo (30 Янв 2023 02:16:03) #  

Programmist
А я сделал без провалов, и с другой картинки
Тогда при чем здесь спектр водорода?
Спектр водорода без провалов - это НЕ спектр водорода. Собственно по частотам провалов и определяют, спектр какого атома вы наблюдаете.

Вы же просто увидели спектр белого цвета, который берут за основу при рисовании спектров атомов. Вот на него (на спектр белого цвета) и наносят частоты провалов - и таким образом изображают линейчатый спектр разных атомов
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 30 Янв 2023 02:20:38 · Поправил: Programmist (30 Янв 2023 04:22:11) #  

wazzoo
Тогда при чем здесь спектр водорода?
Откуда я знаю?
Просто увидел картинку четверть века++ назад, подумал что в природе должно быть всё связано и прикрутил к FFT.
Тогда SDR и "водопадов" ещё и в проекте не было.
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 30 Янв 2023 03:29:09 #  

Сайт завис. Музыкальная пауза. (18+)
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 30 Янв 2023 03:54:07 · Поправил: Programmist (30 Янв 2023 16:09:33) #  

wazzoo
Вы же просто увидели спектр белого цвета, который берут за основу при рисовании спектров атомов
Итак, продолжим. Пред предыстория.
Даже Sinus удивлялся, когда первый раз увидел "радугу", а уж он-то рулит в FFT гораздо лучше меня.
Несмотря на то, что у той "радуги" уже борода была седая.
Потом у супостатов эта "радуга" стала каким-то там стандартом, под номером RFC№какой-то, ну в общем как обычно.
А исходный код-то вот он: http://www.radioscanner.ru/uploader/2022/ufftasm.rar
Как был 30 лет назад, так и остался, ещё на турбо ассемблере, переделанном под Delphi.
И первое что с ним сделал это выложил в интернет, который тоже сделал самостоятельно, одним из первых в Москве.
В то время было всего 2 провайдера, мы и конкуренты. Не буду называть кто, так как о мёртвых плохо не говорят.
И линии связи были коаксиальные.

vladisslav2011
в США и на вас давят экспортными ограничениями на криптографию?
Невнимательно смотрели мои скриншоты.
Там написано Random AES256, что означает не смену пароля раз в 5 минут, а новый ключ в каждом пакете.
И вовсе не означает, что там только AES.
Подарок США, чтоб их искусственный интеллект пополам треснул, стуча своими сраными когтями, как в песне поётся, не смотря на то, что есть ГОСТ.
Много чего есть, вагон и маленькая тележка, в том числе и недокументированного.
И когда-нибудь точно этому ворью мы подпалим задницу. По самые уши.

//
Вернёмся к измерениям.
Подайте на неё 16 кГц и посмотрите что на выходе.
Забыл сказать, что нужно две карты, на одну подаём сигнал, на второй смотрим.
Соединяем карты по оптике, не забыв включить Clock, иначе будут потери.
С линейного выхода не получится, там всегда слишком много "мусора".
wazzoo
Участник
Offline3.4
с авг 2016
Псков
Сообщений: 7162

Дата: 30 Янв 2023 16:07:40 · Поправил: wazzoo (30 Янв 2023 16:14:24) #  

Programmist
Пред предыстория.
Об это я и говорю - вы взяли спектр белого цвета (на картинке - это верхняя цветная полоска), думая, будто это спектр атома водорода - так бывает, когда что-то делаешь, не вникая в детали. Откройте любую графическую программу - там увидите то же самое при выборе цвета. В линию будет спектр белого цвета, а на плоскости будет добавлена яркость по одной из осей.

Это обычный спектр видимого света - по оси Х - длина волны - каждой соответствует свой цвет.
Вот тут подробнее

А вот когда речь о спектрах атома - там уже рисуют линейчатый спектр, на котором линии провалов уникальны для каждого элемента таблицы (это уже нижняя цветная полоска на вашей картинке). Ессно цвета те же самые - они не могут быть другие, поскольку речь о видимом свете и его визуальном отображении, где по оси Х - длина волны.

Собственно, на вашей картинке подписи даны:
"Visible" - это спектр видимого света
"Emission"/"Absorption" - это линейчатые спектры атома водорода (излучения и поглощения).

Потом у супостатов эта "радуга" стала каким-то там стандартом,
Только они её не считают спектром атома водорода (а она и не является им!). Для них это просто спектр видимого цвета, нарисованный с определенной яркостью. Когда это лежит на поверхности - не удивительно, что разные люди независимо берут за основу.
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 30 Янв 2023 16:19:43 · Поправил: Programmist (30 Янв 2023 21:55:19) #  

wazzoo
вы взяли спектр белого цвета
Нет, на той картинке, которую увидел 30 лет назад, был именно спектр атома водорода.
Не моя вина, что он похож на спектр белого цвета.

Для них это просто спектр видимого цвета
Спектр спектру рознь, мой получается с использованием шести констант, и подбирали их не один день.
Конечно, это не спектр атома, просто рассказал, откуда появилась идея сделать цветной водопад.

Собственно, на вашей картинке подписи даны
Это тоже не та картинка, первая была на бумаге, и время поступило с ней жестоко.

Теперь с рисованием спектра можно поступить проще, берётся небольшой градиент в bmp и растягивается на всю ивановскую.
У меня работает старая процедура DoubleToRGB(Account: Single; var R,G,B: Byte).
Она и есть стандарт. Все остальные разноцветные спектры дело вкуса разработчика.
Соответствие цветов легко проверить по той же самой таблице:
http://www.radioscanner.ru/uploader/2022/20230128135515.png
Или, ещё проще, по линейно затухающему сигналу:



Только такой сигнал сделать надо, в копилку положить не могу.
Как можно заметить, фиолетового цвета там уже нет, был методом проб и ошибок добавлен белый, как индикатор наивысшего уровня сигнала.
Точную точку в 0 дБ я обозначить не смог, так и плавает в зависимости от реализации и методики измерений, наверно где-то посредине картинки.
В последствии то же самое было обнаружено на больших японских спектрометрах, и в сейсмографическом оборудовании.

это лежит на поверхности
Нет. Вот так выглядел тот же спектр в 2001 году:



А вот CoolEdit 1993 (Windows): http://www.radioscanner.ru/uploader/2022/cool.rar
Вообще спектра нет, но всё остальное до сих пор исправно работает.)
Другие редакторы до 2000 года даже не имеет смысла рассматривать.
wazzoo
Участник
Offline3.4
с авг 2016
Псков
Сообщений: 7162

Дата: 31 Янв 2023 02:29:28 #  

Это тоже не та картинка, первая была на бумаге, и время поступило с ней жестоко.

Т.е. вы хотите сказать, что у водорода раньше был другой спектр? Или что опубликованные научные труды врут, а на самом деле спектр водорода другой, секретный, был на бумажке, а теперь никому и не узнать никак?

Не моя вина, что он похож на спектр белого цвета.

Вы издеваетесь? На спектре по оси Х - длина волны. Каждой длине волны соответствует свой цвет. Этот цвет неизменен, кто бы его не испускал.

Вся разница между спектром белого цвета и спектрами атомов - в том, что спектр белого цвета непрерывный - и именно его вы используете. А спектр атомов - с провалами. Водород не исключение. Не верите - погуглите вместо того, чтобы ссылаться на некую бумажку, которую никто кроме вас и не видел больше.

по линейно затухающему сигналу:
Так и где здесь спектр водорода? Что у вас по оси Х у спектра водорода? И как у вас получился белый цвет, если это вообще комбинация волн разной длины?
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 31 Янв 2023 02:41:57 · Поправил: Programmist (31 Янв 2023 05:19:27) #  

wazzoo
Вы издеваетесь? На спектре по оси Х - длина волны.
Какая разница, что там по оси X. Забудьте уже про спектр водорода.
Можете считать, увидел в небе радугу и прикрутил её к FFT.
Там всё равно ось X другая, и распределение цветов другое, важен сам факт, откуда эта радуга появилась на спектрометрах - из радуги.
Всё описано в процедуре, и второй такой нет. Измените процедуру, изменится и радуга.

Я вообще большой любитель прикручивать FFT к чему не положено.
Точно так, как прибивать рояли к стенам и вставлять динамики во все возможные отверстия.
Иногда из этого получаются интересные результаты, но редко.

const
vColor01 = 13000;
vColor02 = 60000;
vColor03 = 80000;
vColor04 = 100000;
vColor05 = 500000;
vColor06 = 4000000;
vColor07 = 8380143;

Procedure DoubleToRGB(Account: Single; var R,G,B: Byte);
var Red : Single;
Green : Single;
Blue : Single;
begin
if Account > vColor07 then Account:= vColor07;
case TRUNC(Account) of
0..vColor01-1:
begin
Red := 0.0;
Green := 0.0;
Blue := (Account) / (vColor01);
end;
vColor01..vColor02-1:
begin
Red := 0.0;
Green := (Account - vColor01) / (vColor02 - vColor01);
Blue := 1.0
end;
vColor02..vColor03-1:
begin
Red := 0.0;
Green := 1.0;
Blue := -(Account - vColor03) / (vColor03 - vColor02)
end;
vColor03..vColor04-1:
begin
Red := (Account - vColor03) / (vColor04 - vColor03);
Green := 1.0;
Blue := 0.0
end;
vColor04..vColor05-1:
begin
Red := 1.0;
Green := -(Account - vColor05) / (vColor05 - vColor04);
Blue := 0.0
end;
vColor05..vColor06-1:
begin
Red := 1.0;
Green := 0.0;
Blue := (Account - vColor05) / (vColor06 - vColor05);
end;
vColor06..vColor07:
begin
Red := 1.0;
Green := (Account - vColor06) / (vColor07 - vColor06);
Blue := 1.0;
end;
else
Red := 0.0;
Green := 0.0;
Blue := 0.0
end;
R := round(255 * Red);
G := round(255 * Green);
B := round(255 * Blue);
end;


Именно это и стало стандартом.
Результат процедуры слишком большой, чтобы отобразить на экране, и в линейном виде выглядит так:



На выходе же FFT получится тот самый радужный спектр:


Увеличить


Всё, больше там ничего нет, ни спектра водорода, ни спектра других атомов.
Хотелось использовать все возможные цвета, но ни хрена не получилось, так что, что имеем, то и имеем.
И ничего здесь ни убавить, ни прибавить, будет только хуже.
Можно прикручивать логарифмы для расширения динамического диапазона.

Так и где здесь спектр водорода?
Ладно, открою тайну, спектр водорода считается по очень похожей формуле, только константы другие, и их меньше.
Хотите заставить меня их вспомнить и его нарисовать? Ну нет, можете попробовать самостоятельно.

И как у вас получился белый цвет, если это вообще комбинация волн разной длины?
Я уже говорил, белый цвет добавлен участником форума, но его с нами нет.
Есть такие программы как SA и Cool+.
SA используется для анализа сигналов, его все знают, а Cool+ пошёл в другом направлении и стал Eear.
Вот и сравнивали спектры, у кого красивей получится: http://www.radioscanner.ru/uploader/2011/sa_cool_plus_test.gif
Теперь я знаю в чём разница, но к приведённой выше формуле она отношения не имеет.
Да в общем-то оно и не секрет уже, там FFT 64 бита, а у меня 32.
pavelkolodin
Участник
Offline1.3
с апр 2012
Санкт-Петербург
Сообщений: 71

Дата: 13 Сен 2023 11:11:30 · Поправил: pavelkolodin (13 Сен 2023 11:45:28) #  

Отписываюсь по результатам.
Начальная идея "софтварного супергетеродина" - это конечно дичь, надо было быть наркоманом чтобы это придумать. Я долго не верил что это породил и что двигало аффтором. Хотя далее было сказано про некий IQ down conversion, но наверное это описание ядра типичного IQ приёмника.

В общем, поступил наивно - откусил нужный кусок спектра и перенёс. Не аккуратно, без оконной функции (но не совсем). Подробнее:

Приемник: rtl-sdr. Семплы валятся на частоте 250К. I+Q по 8 бит каждый, итого примерно 500К семплов в сек. Есть там какая-то неточность в скорости, ну либо я криво мерял, не суть. Где-то ходило мнение, что 8 бит там на ОБА семпла, а семплы таки 8-битные, но я чё-то сомневаюсь: оба кажутся 8-битными.

Далее стоит FFT. Размер - 4096 бинов. Пихаю I семплы в одно измерение, Q семплы в другое. Умножаю на окно sin(x/2). Ну в общем на полупериод синуса, на "горб" между нулём и нулём. Сдвигаю входной сырой поток на 2048 и очередные 4096 на вход оконной функции и FFT и так далее.


Каждые 4096 семплов - это на выходе две пачки по 4096 прямого FFT, каждая от чигнала с нахлестом 50%. Результаты прямого FFT я конечно же математически никак не обрабатываю, не складываю арифметически, а отдаю по конвееру дальше.

Дальше стоит такая хитрая штука. Стоит обратный FFT размером примерно 740 бинов (точно не помню). Назовём эту пачку бинов R. Это число бинов взято из рассчета "уменьшим 250К до 48К звуковой частоты". В эти 740 бинов R, изначально нулевые, я тупо копирую кусочек исходного прямого FFT. Какой кусочек? Охватывающий полосу нужного сигнала - кусочек выделенный юзером. Как копирую? Правую часть выделенного куска - в начало R, левую часть выдеденного - в конец R. Ну как будто юзер бы сделал прямое FFT на выделенном сигнале, если бы его центр стоял на частоте "IQ-гетеродина" приемника и частота семплирования приемника была бы 48000. "Фазовую" часть прямого FFT между половинками при этом НЕ инвертирую, хотя инверсия интуитивно напрашивается, если бы гипотетический 48000-гц приёмник был реальным и наблюдаемая полоса бы стояла центром в нуле. Каждая первая половина выхода IFFT складывается с последней половиной предыдущего IFFT. На выход этого блока отдается 740 семплов от предыдущего шага, вторая половина которого получила свою завершающую сумму от первой половины последнего/текущего IFFT. В общем, опять нахлест 50%.

Тут недоработка в том, что делаю это выкусывание спектра без оконных функций. То есть, существует только одна большая оконная на входе первого FFT сырых данных, но далее выкусывание подспектра уже грубым методом. Возможно для выкусывания окно и не нужно, ибо все работает на слух отлично. Интуитивно кажется, что огрызоу можно было бы жахнуть синусным горбом. Хотя-бы сплюснутыми полугорбами по краям. Незнаю откуда эти фантазии, ибо в таком подходе я уже не получу исходную сумму при чложении двух слагаемых, их уже нужно будет 4, иначе я услышу пульсации.

Перед этим шагом стоит squelch - оценивалка уровня сигнала в выбранной полосе: просто поиск FFT бина с максимальной амалитудой и сравнение с порогом. Величина - в попугаях. FFT бин я ищу еще в измерительных целях - например нарисовать в интерфейсе измеренрую частоту несущей...

Что дальше? Далее делаем на нашем спектре R обратное FFT (IFFT) и получаем IQ нашей выкушенной полосы с выхода нашего гипотетического IQ-приемника на частоте 48000 гц. Порции этого сигнала я складываю внахлест 50%, ибо нахлест был в прямом FFT. Визуально шума на стыках не видел, может плохо смотрел.

Далее стоит FM-демодулятор: полярный дискриминатор, или как там его: меряет угол фазы между соседними семплами и фигачит это измерение на выход в виде семпла звука. Ну, делим на 2*ПИ для нормировки в единицу конечно. Умножаем на 32767 или на "сколько там вы хотите разрядность семплов".

На слух - отлично, дребезга от склеиваний полукусков не слышу, чистый речевой сигнал вытаскивается. Погрешность от неточности подбора числа бинов в R относительно входного samplerate приемникв наверное сказывается на pitch речевого сигнала и голоса звучат на какие-нибудь 0.05 единиц скорости выше или ниже... Надо мерять-калибровать... FM демодулятор используется тот самый "гениальный" умножительный из интересной статьи с мировой историей создания IQ-FM-демодуляторов: https://www.site2241.net/may2020.htm

Отлично, да не совсем: FM-демодулятору ведь пофигу между чем и чем искать фазовую разницу, он и шум радостно демодулирует в Ш-ш-ш. И его выходной сигнал всегда радостно широкополосный. В общем, речь из заведомо узкополосных FM-радиостанций звучит широкополоснее чем надо, хотя в чём-то приятно: как будто все шипящие буквы идут в Wide FM. Короче, после демодулятора стоит IIR фильтр Баттерворта 0...6КГц и это вносит некую законченность.

Ну далее стоит блок разных записывалок сигнала: сохранить IQ до демодуляции в .wav, сохранялка демодулированного сигнала в ogg/opus (использованы libopus, libogg).

Чо по ресурсам:

Написано все это на C++ с частичным воровством низкоуровневого libusb-кода из проекта rtl-sdr для вытягивания сырых IQ семплов из приемника по USB напрямую "без драйверов" (драйвер вкоспмливаю в себя какбэ).

Запустил на Cubieboard-3 (Allwinner A20 cortex a-7).
Получилась такая маложрущая автономная коробочка в углу стола.
В режиме мониторинга уровня сигнала в полосе (FFT, перенос спектра, поиск FFT-бина с максимальной амплитудой и сравненик с порогом) жрет 40% CPU, в режиме "вижу уровень выше порога, демодулирую, кодирую в opus" - 70%.
Не профилировал. Что точно жрет ARM-проц и что можно оптимизировать пока не в курсе. Возможно тупо FFT дешевле не сделать, а возсожно FFT-либа не дружит с ускориткльными функциями камня. Используется libfftw дефолтная "для дебиана" (ARM-сборка).
Если запускать на ноутбучном core i5-4300m, то вместо 40% ARM проца, отъедается 2-5% "взрослого" проца, что приравнивается к бесплатно.
wazzoo
Участник
Offline3.4
с авг 2016
Псков
Сообщений: 7162

Дата: 13 Сен 2023 12:00:36 #  

pavelkolodin
Нет ли планов поделиться этими наработками?
vladisslav2011
Участник
Offline0.0
с фев 2022
СЗФО
Сообщений: 343

Дата: 13 Сен 2023 23:48:40 #  

Дальше стоит такая хитрая штука.
Пробовал я так делать. Не понравилось ни по качеству, ни по расходу ресурсов. FIR со сдвигом жрет почти в 2 раза меньше времени и не дает искажений на склейках IFFT.
И ресэмплировать в 48k лучше классическим способом (MMSE decimator или FIR filterbank) - будет точное попадание в нужный сэмплрэйт.
А если нужно много каналов, то FFT минимальной длины без последующего IFFT с перекрытием 1/2 или лучше 3/4 дает максимальную производительность.

Короче, после демодулятора стоит IIR фильтр Баттерворта 0...6КГц
Почему бы тогда не взять сразу PLL демодулятор из той же статьи. При правильной настройке фильтра он дает очень качественный результат для NFM. Максимум разборчивости для слабых сигналов.

с частичным воровством низкоуровневого libusb-кода из проекта rtl-sdr для вытягивания сырых IQ семплов из приемника по USB напрямую
А как осуществляется настройка на нужную центральную частоту? Поддержка тюнера тоже выковыряна? Может стоило все-таки разобраться с librtlsdr - overhead от нее небольшой и сразу поддержка всех вариаций этих свистков...

жрет 40% CPU
На 250k input rate? Это очень много. На 2.4M еще терпимо, но тоже многовато. SDR++/Gqrx насколько нагружают эту платку?

Если запускать на ноутбучном core i5-4300m
Тут уже надо b210 на 61Msps чтобы заметно нагрузить или хотя бы HackRF и сотня каналов параллельного приема...
pavelkolodin
Участник
Offline1.3
с апр 2012
Санкт-Петербург
Сообщений: 71

Дата: 14 Сен 2023 12:54:39 · Поправил: pavelkolodin (14 Сен 2023 13:00:26) #  

А если нужно много каналов, то FFT минимальной длины без последующего IFFT с перекрытием 1/2 или лучше 3/4 дает максимальную производительность.

Я не понял как без IFFT забирать результаты выкусывания в виде IQ.

Почему бы тогда не взять сразу PLL демодулятор из той же статьи. При правильной настройке фильтра он дает очень качественный результат для NFM. Максимум разборчивости для слабых сигналов.
Надо будет прочитать статью ПОЛНОСТЬЮ.

А как осуществляется настройка на нужную центральную частоту? Поддержка тюнера тоже выковыряна? Может стоило все-таки разобраться с librtlsdr - overhead от нее небольшой и сразу поддержка всех вариаций этих свистков...
Выковыряны все librtlsdr функции для этого. Если посмотреть на количество краденого, то возможно сворована почти вся librtlsdr. Есть желание всё это краденое переписать по современным нормам C++20 заодно, а то компилятор много ругается на их код. Так, для порядка. Всю вариацию свистков я тоже поддерживаю, точнее краденое поддерживает. Ну, фактически я и разобрался с librtlsdr, только линкую её статически.

На 250k input rate? Это очень много. На 2.4M еще терпимо, но тоже многовато. SDR++/Gqrx насколько нагружают эту платку?
Да на 250k 40% слабого древнего ARM-проца 2012 года архитектуры. И 2% ноутбучного intel проца 2015 года. Возможно это нормально.
SDR++/Gqrx на этой платке запускать не пробовал, на платке не стоит X11 и она не видит никакие мониторы...
На большом ноутбучном проце SDR++ жрёт под 50-70% CPU, а моя софтина 2%. Что какбэ намекает нам, что на платке SDR++ вообще помрёт.
vladisslav2011
Участник
Offline0.0
с фев 2022
СЗФО
Сообщений: 343

Дата: 15 Сен 2023 01:17:32 #  

Я не понял как без IFFT забирать результаты выкусывания в виде IQ.
Результаты FFT это вообще-то IQ. Просто берем первый (или какой требуется) бин из каждого FFT и получаем поток IQ, который можно дальше обрабатывать как обычно. Без перекрытия фильтрация недостаточная, с 2x перекрытием уже получается удовлетворительно, с 4x вполне устраивает даже меня.

компилятор много ругается на их код.
Там не C++, а C. Так что компилировать нужно gcc, а не g++, чтобы не было ругани.

разобрался с librtlsdr, только линкую её статически.
Вот это правильно.

Да на 250k 40% слабого древнего ARM-проца 2012 года архитектуры.
У меня есть старый ноут на древнем Atom N270, одноядерный, 1.6 GHz, который примерно соответствует по производительности этой платке. Он вполне тянет поток в 2.4Msps, даже WFM (stereo правда уже на пределе)+GUI+водопад. Мне кажется, этой платки должно хватить на нарезку 250k на 64 полосы по 15.625k, выбор полос с сигналами, демодуляцию, микширование/сохранение в файлы.

на платке не стоит X11 и она не видит никакие мониторы
Тогда можно попробовать rtl_fm для сравнения.
pavelkolodin
Участник
Offline1.3
с апр 2012
Санкт-Петербург
Сообщений: 71

Дата: 15 Сен 2023 17:32:04 #  

Результаты FFT это вообще-то IQ

Шта... Я думал, что результаты FFT - это оценка присутствия разных частот/фаз в разных бинах. Частотный домен. IQ - это сигнал во времени. Как я, "взяв бины", без обратного FFT получу IQ, пригодное для FM-демодуляции я чё-то не осознал.

Там не C++, а C. Так что компилировать нужно gcc, а не g++, чтобы не было ругани.
Ну вот он там какой-то отсталый что-ли. С кучей включенных ворнингов всякая нелепая ругань. Хочется переписать на современный С++ как-то. Больше автоматизации работы с типами, возможно даже чуть меньше кода.

У меня есть старый ноут на древнем Atom N270, одноядерный, 1.6 GHz, который примерно соответствует по производительности этой платке.
Я плохо понимаю детали архитектур, но мне всегда казалось, что Atom раза в 3 "быстрее" (незнаю какое слово подобрать) сравнимого по техпроцессу и "размеру" ARM-а. Intel-ы сильно более могучие при тех же TDP, за что их долго и любили и почему весь мир на ARM активно не переезжал. Наследие мощных инженерных школ в Intel даром не прошло, ARM-ы их долго догнать не могли.

Он вполне тянет поток в 2.4Msps, даже WFM (stereo правда уже на пределе)+GUI+водопад. Мне кажется, этой платки должно хватить на нарезку 250k на 64 полосы по 15.625k, выбор полос с сигналами, демодуляцию, микширование/сохранение в файлы.

Тянет-то тянет. У меня тоже "тянет". И я думаю мой A20 потянет выкусывание и демодуляцию бОльшего числа каналов, чем сейчас (один), потому что FFT на 4096 бина делается один раз и является главным подозреваемым по потреблению проца. Кажется, распихать результаты его результаты по нескольким демодуляторам вместо одного - уже не такая вычислительно тяжёлая работа, как сам FFT. Меня другое заинтересовало: когда вы сказали, что 40% моего ARM-а - это "сильно жирно". В этом месте я начал думать, что вы считаете, что можно делать 4096 FFT на Allwinner A20 ценой 5-10% проца, вместо 40%. Возможно стоит подумать о том, чтобы делать FFT на меньшее число бинов, чем 4096 для моей задачи. А то получается, что для выкусывания канала в 12500 я выкусываю штук 250 бинов. Не много ли это...
vladisslav2011
Участник
Offline0.0
с фев 2022
СЗФО
Сообщений: 343

Дата: 16 Сен 2023 00:34:59 #  

Как я, "взяв бины", без обратного FFT получу IQ, пригодное для FM-демодуляции я чё-то не осознал.
Результаты FFT это нарезка входного IQ на полосы тоже в IQ с одновременным уменьшением частоты дискретизации в {размер FFT}/{oversampling rate} раз.

Atom раза в 3 "быстрее"
Atom это унылое тормозное говно без out-of-order execution. Тем более это самый первый, самый тормозной атом. Вот Core Duo/Quad тех времен действительно были в разы быстрее ARM с таким же числом ядер на таких же частотах.

FFT на 4096 бина делается один раз и является главным подозреваемым по потреблению проца.
Именно так. В случае одного канала FIR будет быстрее...

Возможно стоит подумать о том, чтобы делать FFT на меньшее число бинов, чем 4096 для моей задачи.
Конечно можно. Например на 16 бинов с перекрытием 1/2 с обратным FFT размером в 1 бин (то есть без обработки) получаем 16 потоков IQ на частоте дискретизации 31.25 Hz с шагом 15.625Hz. А из этих узких полос можно уже выбрать полосы с сигналами, дофильтровать легким FIR, демодулировать, ресэмплировать и так далее.
Реклама
Google
 Страница:  ««  1  2  3  4  5  6  7  8  9 

Создавать сообщения могут только зарегистрированные участники форума.
Войти в форум :: » Логин » Пароль
Начало
Средства связи, рации. Купить радиостанции Motorola, Yaesu, Vertex, приемники, антенны.
Время загрузки страницы (сек.): 0.023; miniBB ®