На главную страницу сайта
· Наш магазин · Объявления · Рейтинг · Статьи · Частоты · Копилка · Аэродромы · Live!
· Файлы · Диапазоны · Сигналы · Музей · Mods · LPD-форум · Клуб · Радиостанции
На сайте: гостей - 54,
участников - 6 [ СЦБист, ветеран, Механик, slava68, pacak, nn3ar]
 · Начало · Опросы · События · Статистика · Поиск · Регистрация · Правила · FAQ · Галерея ·
 Форум —› Радиосигналы —› Демодуляция ЧМ 
Портативные любительские радиостанции Yaesu


Yaesu FT-60R
руб.

Yaesu VX-3R
руб.

Yaesu VX-6R
руб.

Yaesu VX-8DR
руб.

Yaesu FT-1D
руб.
Автор Сообщение
Neradio
Участник
Offline1.0
с июл 2019
Санкт-Петербург
Сообщений: 3

Дата: 02 Сен 2020 14:51:36 #  

Добрый день!
Пытаюсь демодулировать Частотно-модулированный сигнал в связи с чем появилось несколько вопросов. Но перед тем, как их задать сразу скажу, что речь идёт именно о ПРОГРАММНОЙ демодуляции. Для теста использовал сигнал переданный через рацию на частоте 433,125 кГц и принятый самодельным приёмником в полосе 20 кГц с частотой дискретизации 40 кГц. Все "железные" части относящиеся к моему вопросу прошу опустить т.к. интересуют алгоритмы. Также хочу отметить, что подобные темы уже встречал и за книгой Сергиенко можно не посылать.

Сам я сделал несколько демодуляторов: основанный на производной арктангенса, с помощью цепи обратной связи, с задержкой предыдущего отсчёта. Результаты не особо порадовали.

Итак вопросы:
1. При изменении уровня передаваемого сигнала (например говорю тише/громче) изменяется ширина спектра. Есть ли какой-то способ адаптироваться под полосу сигнала (фильтровать полезный сигнал, чтобы не набирать лишних шумов используя постоянно широкую полосу)?
2. В моём случае производная арктангенса показала лучший результат по сравнению с другими методами демодуляции, но тем не менее он не особо впечатляющий и качество демодулированного сигнала оставляет желать лучшего. Может быть кто-то делал или даже знает какие алгоритмы и методы демодуляции ФМ-сигналов используются в промышленных средствах?

Прилагаю файлы сигналов:
Сигналы двух уровней (_hi - высокий уровень сигнала, _low - низкий уровень сигнала).
*.fd - исходники сигналов (с приёмника и редактировнный (ishodnik_*) - сдвинутый в 0).
*.wav - демодулированные сигналы.
Файлы

Основная задача - улучшить результат, а именно качество получаемого звука. Если у кого-то есть свои демодуляторы не отказался бы послушать Ваши результаты демодуляции моих исходников.
Всем заранее спасибо!
killer258
Участник
Offline3.2
с янв 2010
Тула
Сообщений: 3357

Дата: 02 Сен 2020 15:53:15 · Поправил: killer258 (02 Сен 2020 15:57:26) #  

Чтобы при изменении уровня сигнала ПЧ не изменялась ширина спектра, я полагаю, надо сымитировать математическим путём ограничение отсчётов сигнала ПЧ по амплитуде, чтоб было примерно так, как это делается перед традиционным (аппаратным) чм детектором. А может, попробовать сымитировать заодно и дискриминационную характеристику частотного дискриминатора, сделав её идеальной (что недостижимо в аппаратном чм детекторе на взаимно расстроенных контурах), и получим улучшенный его программный аналог. (имхо.)
Реклама
Google
Sinus
Участник
Offline3.0
с авг 2010
Санкт-Петербург
Сообщений: 1055

Дата: 02 Сен 2020 15:56:50 · Поправил: Sinus (02 Сен 2020 15:57:38) #  

Neradio, поясните, пожалуйста, структуру Вашего формата файлов .fd (вот, например, я хотел бы попробовать демодулировать, но не понял, как с этим форматом работать). А ещё лучше - всегда выкладывать исходники сигналов в общепринятом формате wav с двухканальной записью квадратур IQ; такие записи читаются большинством программ обработки радиосигналов.
hitec
Участник
Offline1.0
с янв 2020
Ижевск
Сообщений: 3

Дата: 02 Сен 2020 16:50:02 #  

Если серьёзно, то лучше чем у Сергиенко нет. Можно еще Тяжева почитать. Если у вас не получилось, то скорее всего что-то не так делаете( в программе или аппаратно), косвенно на это указывают ваши изначальные условия. И многолетняя практика показала что нет уникальной алгоритмической вундервафли.
Sinus
Участник
Offline3.0
с авг 2010
Санкт-Петербург
Сообщений: 1055

Дата: 02 Сен 2020 19:13:25 #  

Добавлю, что демодулированные сигналы в wav-файлах (указанных выше в ссылке) несколько странные - там записано что-то вроде "аналитического IQ-сигнала" с ненулевой постоянной составляющей; два канала, максимальная частота там меньше +5 кГц, отрицательные частоты в спектре отсутствуют. На слух это как бы "псевдостерео", однако фактически (поскольку отрицательные частоты отсутствуют) вся информация там содержится уже в одном канале.

Имхо, там можно взять только один канал, отфильтровать постоянку и неслышимые НЧ, например ниже 20 Гц, и можно децимацией понизить частоту дискретизации до, например, 10 кГц, т.е. в 4 раза. Тогда размер выходного аудио-файла уменьшится в 8 раз фактически без потери имевшейся в нём числовой информации. (Я так попробовал сделать: получилось звучание с прежней разборчивостью, без "псевдостерео").

И вообще, имхо, разумнее было бы тестировать свой программный демодулятор отдельно от своего самодельного приёмника - на чьих-нибудь заведомо качественных ЧМ-записях (в IQ wav-файлах), с разной шириной полосы. И каким-нибудь анализатором спектра, а не только "на слух", проверять входные сигналы и результаты. А иначе будет непонятно, где что не так: в демодуляторе / фильтрах или в приемнике.
studentkra
Участник
Offline4.5
с мая 2017
Красноармейск М.О.
Сообщений: 1321

Дата: 02 Сен 2020 22:48:54 #  

Neradio, нулевую ПЧ просто так демодулировать в ЧМ не получится.
Сам я сделал несколько демодуляторов: основанный на производной арктангенса
Можно глянуть на Ваши алгоритмы? И особенно интересно, на производной арктангенса чего они основаны )))
Neradio
Участник
Offline1.0
с июл 2019
Санкт-Петербург
Сообщений: 3

Дата: 04 Сен 2020 16:57:59 · Поправил: Neradio (04 Сен 2020 16:58:51) #  

Извиняюсь за столь долгий ответ. Всем огромное спасибо за участие в теме!
надо сымитировать математическим путём ограничение отсчётов сигнала ПЧ по амплитуде
Если я правильно Вас понял, Вы предлагаете неким образом ограничить амплитуду сигнала перед ЧД?

поясните, пожалуйста, структуру Вашего формата файлов .fd
Я удалил все предыдущие файлы. Залил новую порцию файлов. Теперь:
*.raw - комплексные отсчёты float Re и Im уложенные парами.
*lv.wav - заголовок 56 байт, остальное - комплексные отсчёты short int уложенные парами.
*.my.wav - заголовок 44 байта, остальное - комплексные отсчёты short int уложенные парами.
В папке FD_demod лежат демодулированные мной сигналы с помощью моего ЧД.
demod_* - после ЧД стоит фильтр на 4кГц и аттенюатор на 40 дБ.
_without_filter - соответственно данные непосредственно после ЧД.

Если серьёзно, то лучше чем у Сергиенко нет. Можно еще Тяжева почитать.
Может и так.
косвенно на это указывают ваши изначальные условия
Не понял.
нет уникальной алгоритмической вундервафли
За некоторое время, что я озадачился этим вопросом обнаружил очень большое количество алгоритмов, которые используются для демодуляции ЧМ-сигналов. Часть из них я повторил, может быть точность действительно пострадала из-за отсутсвия каких-то знаний или неверного понимания статей т.к. большая часть из них, естественно, не на русском языке.

сигналы в wav-файлах (указанных выше в ссылке) несколько странные
Там был записан один канал. Сигналы также отфильтрованы фильтром на 4кГц.

разумнее было бы тестировать свой программный демодулятор на чьих-нибудь заведомо качественных ЧМ-записях
На качественных записях у меня проблем с демодуляцией нет. Они возникают при плохом (зашумлённом сигнале) либо если я пытаюсь демодулировать сигнал в широкой полосе (как мне кажется).
Я записал 2 сигнала, которые назвал "hi" и "low". "hi" соответственно высокий уровень сигнала, "low" - низкий. При демодуляции "hi"-сигнала качество приемлемое, "low" - печальное.

В самом начале я написал, что сигнал иногда занимает широкую, иногда узкую полосу в зависимости от громкости говорящего. Каким образом мне адаптироваться под полосу при её изменении я не придумал.
Также при низком уровне сигнала по отношению к шуму именно мои демодуляторы работают не очень хорошо (в отличие от моих раций, например). Если у кого-то есть свои или варианты, как можно улучшить качество этих сигналов (не с приёмника! а демодулированных), то с радостью это бы обсудил/послушал.

Можно глянуть на Ваши алгоритмы? И особенно интересно, на производной арктангенса чего они основаны )))
Мои алгоритмы глянуть можно, только в каком виде Вы их хотите увидеть? Могу скинуть нарезку из статей, если интересно.
Сюда я выложил только один из вариантов (повторюсь), основанный на производной арктангенса, который предлагает всеми любимый Сергиенко.

Увеличить

Рассмотрение других систем, как видно, выходит за рамки...
studentkra
Участник
Offline4.5
с мая 2017
Красноармейск М.О.
Сообщений: 1321

Дата: 05 Сен 2020 12:58:30 #  

Neradio у вас на входе алгоритмов сигнал на нулевой ПЧ? Если да, то попробуйте околонулевую ПЧ (сдвиньте сигнал выше по спектру на 10~20 кГц). Одно время тоже мучался с программной демодуляцией NFM. AM отлично, а NFM с искажениями, пока не сдвинул сигнал. Правда квадратуры I/Q формировались "железно", а не математическим умножением на синус и косинус.
petr0v
Участник
Offline2.3
с мая 2010
Balakhna
Сообщений: 412

Дата: 06 Сен 2020 16:00:07 #  

Neradio

Частотный детектор из книжки Сергиенко идеальный по математической формуле, если всё правильно сделали, улучшать там нечего. Значит фильтры плохие до и после этого частотного детектора.

Бывает ещё предыскажающий ФВЧ ставят перед частотным модулятором и соответственно обратный ФНЧ на выходе частотного детектора, например см. ГОСТ Р 51741-2001.

4.10 Значение постоянной времени цепи предыскажения звукового сигнала
(корректирующая RC-цепь) - (50±1) мкс.
hitec
Участник
Offline1.0
с янв 2020
Ижевск
Сообщений: 3

Дата: 06 Сен 2020 16:39:20 #  


Частотный детектор из книжки Сергиенко идеальный по математической формуле, если всё правильно сделали, улучшать там нечего. Значит фильтры плохие до и после этого частотного детектора.

Полностью соглашусь, детектор у Сергиенко идеальный, если бы внимательно вчитались в текст книги то увидели что приведенная формула есть Производная ARCTG(X/Y) , те один из ваших способов демодулятора.
Второе предложение вам прямо указывает путь решения.
Если я правильно Вас понял, Вы предлагаете неким образом ограничить амплитуду сигнала перед ЧД?
Это резко ухудшит демодулированный сигнал, правильнее будет нормализовать R*R=I*I+Q*Q
косвенно на это указывают ваши изначальные условия
Не понял.

Ну вы сами написали ,,,самодельным приёмником в полосе 20 кГц с частотой дискретизации 40 кГц. Все "железные" части относящиеся к моему вопросу прошу опустить,,, Спрашивается зачем в полосе 20кгц и почему дискретизация 40кгц, мне к примеру для звука нравится 8кгц.
Sinus
Участник
Offline3.0
с авг 2010
Санкт-Петербург
Сообщений: 1055

Дата: 06 Сен 2020 20:43:45 · Поправил: Sinus (06 Сен 2020 20:46:52) #  

Neradio
На качественных записях у меня проблем с демодуляцией нет. Они возникают при плохом (зашумлённом сигнале)

Значит в нём и проблема - в плохом входном сигнале. Ведь когда входной сигнал является суммой неизвестных слагаемых - полезного сигнала и хаотического шума, - то уже никакой чудо-демодулятор не разложит эту сумму на исходные слагаемые, чтобы отделить от шума полезный сигнал в его чистом исходном виде.

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

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

Neradio, "плохой чм-сигнал" 433200.000000_20_40_1024_low______my_.wav я тоже попробовал демодулировать. При нулевой ПЧ, выборе частоты среза ФНЧ демодулятора 3.5 кГц и децимации к частоте дискретизации Fdiscr = 8 кГц результат здесь, выходной аудио-сигнал там отфильтрован ФНЧ 3 кГц. На мой слух, по разборчивости речи это мало отличается от Вашего demod_low.wav (который у Вас всё-таки почему-то 2-канальный, "псевдостерео" :-) (если мне не верите, то посмотрите 22-й и 23- байты в заголовке своего wav-файла: 00 02, это есть количество каналов. Заодно отмечу, что аудио-данные в Ваших файлах "с демодом without_filter" содержат только байты 00, т.е. нет там сигналов, есть только "тишина". Сами понимаете, такие странности могут дать повод сомневаться в безошибочности Ваших программ).

Алгоритм ЧМ-демодуляции в указанном примере - простейшая дискретная версия цитированной выше формулы из книги Сергиенко, получающаяся заменой dy на y[n+1]-y[n] (и 1/dt на Fdiscr). (Если массивы I и Q обозначить как A[n] и B[n], то формула приводится к такому вот виду. Это ссылка из давнишних бесед на этом форуме, с моей стороны дилетантских; я и теперь не являюсь специалистом по ЦОС. Не знаю, может быть, возможна более удачная оценка производной dy/dt, чем просто разностью y[n+1]-y[n] соседних отсчётов; например, с каким-нибудь сглаживанием; хотя, наверное, для должным образом фильтрованных в ФНЧ массивов y[n] сглаживать уже ничего и не надо.)
petr0v
Участник
Offline2.3
с мая 2010
Balakhna
Сообщений: 412

Дата: 06 Сен 2020 21:56:47 #  

Sinus

Не знаю, может быть, возможна более удачная оценка производной dy/dt, чем просто разностью y[n+1]-y[n] соседних отсчётов;

Возможна дифференцирующим фильтром, стандартный фильтр, есть в учебниках и программах расчёта фильтров. Следует компенсировать задержку вносимую таким фильтром в других ветках схемы. Простая разность хорошо работает при большой передискретизации.
Sinus
Участник
Offline3.0
с авг 2010
Санкт-Петербург
Сообщений: 1055

Дата: 07 Сен 2020 00:17:25 #  

petr0v
Спасибо! Посмотрю в учебниках.
Neradio
Участник
Offline1.0
с июл 2019
Санкт-Петербург
Сообщений: 3

Дата: 16 Сен 2020 18:33:41 · Поправил: Neradio (16 Сен 2020 18:36:47) #  

Ещё раз благодарю всех за ответы и участие в теме! Раньше использовал сторонние программы, пришлось потратить некоторое время, зато теперь полный цикл обработки произвожу в собственных. Итак.
попробуйте околонулевую ПЧ (сдвиньте сигнал выше по спектру на 10~20 кГц).
Может неправильно Вас понял. Сдвинул сигнал на 5/10/15/2кГц. Скажем так, не помогло.
Значит фильтры плохие до и после этого частотного детектора
Испробовал разные фильтры. Результат менялся, но не сильно.
если бы внимательно вчитались в текст книги то увидели что приведенная формула есть Производная ARCTG(X/Y)
Внимательно вчитался и написал это вначале. Использую ЧД, основанный на этой формуле.
правильнее будет нормализовать R*R=I*I+Q*Q
Нормализация не помогает при расширении спектра или мы про разное?
Спрашивается зачем в полосе 20кгц и почему дискретизация 40кгц
В спецификации к моей рации написано, что ширина её канала даже больше: 25 кГц. Про проблему фильтрации я уже писал. (с увеличением громкости звука происходит расширение спектра, как подобрать фильтр я не знаю).
Значит в нём и проблема - в плохом входном сигнале.
Возможно и так. Поэтому я и попросил тех, у кого есть возможность прогнать через свои демодуляторы мои сигналы. Спасибо Вам за то, что попробовали!
Сами понимаете, такие странности могут дать повод сомневаться в безошибочности Ваших программ
Да, действительно. Я использовал разные программы для работы с сигналами и не заметил, что выложил кривой файл. За это прошу прощения. Теперь у меня есть возможность записать любую последовательность с более понятным результатом, что я и сделал.
Возможна дифференцирующим фильтром
Не исключаю, что я и пользуюсь этой схемой. Как раз-таки при большой частоте дискретизации эта схема даёт результат не сильно хуже обычной, так сказать, схемы ЧД Сергиенко.

Теперь я полностью повторил схему Сергиенко и произвёл разную обработку сигналов.
По старой ссылке в папке New вы сможете найти новые wav файлы. Это одноканальный вещественный сигнал, полученный разными методами. Использовал "стандартную" схему Сергиенко и свою. Испробовал предварительную фильтрацию с децимацией, децимацию после ЧД, а также схему без децимации и предварительной фильтрации. На выходе каждого ЧД стоит полосовой фильтр Бесселя до 3кГц. Насколько это удачное или не очень решение судить сложновато, но результат не сильно отличается от того, что получил форумчанин Sinus. Также там есть изображение спектрограмм этих файлов (если что картинка на самом деле большая 2672*1872 пикселя) из программы Audacity. Даже без прослушивания файлов по нему я могу сказать, что в записях с предварительной фильтрацией голос лучше различим, без фильтрации и передискретизации голос тоже слышен, но уже хуже. "Классическая" схема Сергиенко не справляется с поставленной задачей в этих условиях. Результат работы схем товарища Sinus моей схемы и Сергиенко почти полностью идентичны при предварительной фильтрации и децимации до 8кГц.

В общем и целом могу сказать, что вопросы остались прежними: можно ли это сделать лучше и как подстраивать фильтр под меняющийся в полосе сигнал?
 

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