|
Симуляция ЧМ сигнала содержащего музыку, Вопрос спецам |
|
|
|
Feb 10 2009, 15:29
|
Участник

Группа: Новичок
Сообщений: 25
Регистрация: 9-12-08
Пользователь №: 42 321

|
Всем привет!
Есть DAQ плата для приёма ЧМ радио сигналов, но она еще не готова. Поэтому работаю над алгоритмами демодуляции ЧМ сигналов. И чтобы проверить их работу пытаюсь симулировать ЧМ сигнал. Работаю в среде LabView. Мне нужно симулировать ЧМ сигнал который содержит
информацию подобно музыке.
Прочитал множество статей на тему ЧМ модуляция, но везде описан самый простейший
пример ЧМ модуляции с использованием только одной синусоидальной гармоники.
Основное математическое выражение:
FM = A*Cos(2*pi*Fc*t + M*Sin(2*pi*Fm*t))
где: A - амплитуда, Fc - несущая частота, M - индекс модуляции, Fm - модулирующий
сигнал (сигнал несущий информацию)
A = 1, Fc = 60, M = 5, Fm = 5.
Пытался добавить еще одну гармонику путем сложения как: FM = A*Cos(2*pi*Fc*t +
M*(Sin(2*pi*Fm*t)+Sin(2*pi*3*Fm*t)) - добавил еще одну синусоиду с частотой в 3
раза больше чем у первой.
Но, кажется, это неверный подход к решению этой задачи, потому что я могу
восстановиться модулирующий сигнал если он только с одной гармоникой. А когда
добавляю еще одну - после демодуляции получаю неверный сигнал. Значит где-то я
ошибаюсь в самой модуляции ЧМ, т.е. это сложнее чем просто прибавить синус.
Когда мы слушаем музыку - мы слышим звуки на разных частотах одновременно начиная
с басов 60Гц и заканчивая высокочастотными звуками до 15КГц.
Может кто-нибудь объяснить как отличается ЧМ модуляция с одной гармоникой и
модуляция с несколькими гармониками? Или хотя-бы указать на соответствующую литературу.
Заранее благодарен.
|
|
|
|
|
 |
Ответов
|
Mar 12 2009, 14:35
|
Участник

Группа: Новичок
Сообщений: 25
Регистрация: 9-12-08
Пользователь №: 42 321

|
С детектированием нулей получилось так. Если наложить шум, тогда алгоритм детектирует лишние нули и демодулированный сигнал уже искажен. Есть задумка брать из этих нескольких нулей среднее значение.
Эскизы прикрепленных изображений
|
|
|
|
|
Mar 12 2009, 18:02
|
Участник

Группа: Участник
Сообщений: 41
Регистрация: 20-09-08
Пользователь №: 40 352

|
Цитата(ACiDUser @ Mar 12 2009, 17:35)  С детектированием нулей получилось так. Если наложить шум, тогда алгоритм детектирует лишние нули и демодулированный сигнал уже искажен. Есть задумка брать из этих нескольких нулей среднее значение. Имхо, метод с детектированием нулей не очень подходит для приема радиосигнала, по-моему помехоустойчивость у него будет хуже чем у других уже обсуждавшихся схем. Но если очень хочется именно его попробовать, тогда может быть пропустить сигнал через схему с гистерезисом Результат будет примерно такой:
Здесь желтый сигнал - ваш с шумами, а красный - на выходе этого устройства с гистерезисом. голубые линии - пороги На языке Матлаба вот такой код это делает: %нач условия if(Sinp(1)>0) state=1 else state=-1 end amp=max(abs(Sinp)) %- размах входного сигнала thp=amp/3 %задаем пороги thn=-thp for k=2:length(Sinp) if(state==1)% если сигнал в положительной фазе if(Sinp(k)<thn)% если сигнал пересек отрицательный порог, то уходим в отрицательную фазу Sc(k)=-amp; state=-1% обозначаем что состояние теперь - сигнал в отрицательной фазе else Sc(k)=amp; end else% ну а здесь все точно наоборот! if(Sinp(k)>thp) Sc(k)=amp; state=1 else Sc(k)=-amp; end end end Если с матлабом работаете могу целиком скрипт кинуть. Цитата(_Anatoliy @ Mar 12 2009, 08:48)  Спасибо! Цитата(ACiDUser) А если этот алгоритм проводить не электронной схемой а программным кодом? Не совсем понял вопрос. Если точно его смоделировать программно, то результат я думаю будет очень похож на схемную реализацию. Насколько я знаю, наибольшей помехоустойчивостью обладают методы с обратной связью: на ФАПЧ и с отрицательной обратной связью. Рассматриваются в книге Communication systems. S.Haykin http://electronix.ru/forum/index.php?s=&am...st&p=557474 глава 2.13-2.14
Сообщение отредактировал leksa - Mar 12 2009, 18:44
--------------------
A designer knows he has achieved perfection not when there is nothing left to add, but when there is nothing left to take away (Antoine de Saint-Exupery)
|
|
|
|
|
Mar 13 2009, 00:44
|
Участник

Группа: Новичок
Сообщений: 25
Регистрация: 9-12-08
Пользователь №: 42 321

|
Цитата(leksa) Имхо, метод с детектированием нулей не очень подходит для приема радиосигнала, по-моему помехоустойчивость у него будет хуже чем у других уже обсуждавшихся схем. Насчет помехоустойчивости согласен. А про гистерезис коллеги посоветовали сегодня, всеравно спасибо! Я читал что этот метод очень хвалят из-за его быстрой работы. А также не требуется знать несущюю частоту. При грамотной обработке шумов метод может быть весьма хорош. Можно попробовать проводить усреднение сигнала на коротких промежутках, что может существенно убрать шумы. Ну и, конечно, срезать амплитуду. Алгоритм умеет определять нули положительного полупериода и отрицательного - т.е. сигнал после пересечения идет вверх или вниз. Это может пригодится для демодуляции цифрового ЧМ. Пока не понял зачем используется генератор импульсов (см. прикрепленную картинку) Цитата(leksa) Если с матлабом работаете могу целиком скрипт кинуть. Работаю в LabView, но Матлаб тоже имеется и буду благодарен за пример скрипта. Как доведу алгоритмы до стабильной работы попробую с реальным сигналом от генератора, поэтому пока и балуюсь с шумами. с ФАПЧ я нашел готовый пример, но пока не могу его настроить под мой проект. Еще не разобрался как сам фильтр работает. Буду делать по мануалу. Спасибо за конструктивные ответы
Эскизы прикрепленных изображений
|
|
|
|
|
Mar 13 2009, 06:51
|
Участник

Группа: Участник
Сообщений: 41
Регистрация: 20-09-08
Пользователь №: 40 352

|
Цитата(ACiDUser @ Mar 13 2009, 03:44)  Пока не понял зачем используется генератор импульсов (см. прикрепленную картинку) Насколько я понял из картинки, генератор импульсов генерирует импульс постоянной ширины по каждому входному короткому импульсу. Где короткие импульсы чаще - там и на выходе генератора импульсы чаще. Потом сигнал поступает на ФНЧ, который сглаживает эту последовательность импульсов. Где импульсы на входе чаще, там сигнал на выходе ФНЧ будет чаще. Потом сравнение с порогом, и получается регенерированный двухпозиционный сигнал. Насколько я понял, конкретно этот вариант схемы подойдет только для 2 позиционной частотной манипуляции. Вот интересно, а что будет на выходе генератора импульсов, если сигналы на входе пойдут с интервалом меньше, чем ширина выходного импульса генератора? И еще, может быть в программном виде генератор импульсов и ФНЧ можно заменить просто ФНЧ, с простой ИХ, близкой по форме и длительности к импульсам генератора. Тогда реакцией ФНЧ на входной дельта-импульс будет его ИХ, то есть как раз импульсы, как на выходе генератора. Но это сейчас в голову пришло и требует проверки.
--------------------
A designer knows he has achieved perfection not when there is nothing left to add, but when there is nothing left to take away (Antoine de Saint-Exupery)
|
|
|
|
|
Mar 24 2009, 16:07
|
Участник

Группа: Новичок
Сообщений: 25
Регистрация: 9-12-08
Пользователь №: 42 321

|
Цитата(leksa @ Mar 13 2009, 10:51)  Насколько я понял из картинки, генератор импульсов генерирует импульс постоянной ширины по каждому входному короткому импульсу. Где короткие импульсы чаще - там и на выходе генератора импульсы чаще. Потом сигнал поступает на ФНЧ, который сглаживает эту последовательность импульсов. Где импульсы на входе чаще, там сигнал на выходе ФНЧ будет чаще. Потом сравнение с порогом, и получается регенерированный двухпозиционный сигнал. Насколько я понял, конкретно этот вариант схемы подойдет только для 2 позиционной частотной манипуляции.
Вот интересно, а что будет на выходе генератора импульсов, если сигналы на входе пойдут с интервалом меньше, чем ширина выходного импульса генератора?
И еще, может быть в программном виде генератор импульсов и ФНЧ можно заменить просто ФНЧ, с простой ИХ, близкой по форме и длительности к импульсам генератора. Тогда реакцией ФНЧ на входной дельта-импульс будет его ИХ, то есть как раз импульсы, как на выходе генератора. Но это сейчас в голову пришло и требует проверки. Окей, с этим понятно. А вот пункты "Zero Crossing Detection" и "Fully rectified signal" какой смысл в этом? Если можно взять все найденные нули и в этих местах импульсы пустить. У меня один пункт там только - Zero crossing detection. А там неправильно описал метод детектирования нулей, поэтому прикрепляю новое изображение. leksa спасибо за скрипт, заценил. Попробую реализовать свой метод со средним значением, чтобы потом можно было сравнить.
Сообщение отредактировал ACiDUser - Mar 24 2009, 15:43
Эскизы прикрепленных изображений
|
|
|
|
|
Mar 24 2009, 19:26
|
Участник

Группа: Участник
Сообщений: 41
Регистрация: 20-09-08
Пользователь №: 40 352

|
Цитата(ACiDUser @ Mar 24 2009, 19:07)  leksa спасибо за скрипт, заценил. Попробую реализовать свой метод со средним значением, чтобы потом можно было сравнить. Пожалуйста. Цитата(ACiDUser @ Mar 24 2009, 19:07)  Окей, с этим понятно. А вот пункты "Zero Crossing Detection" и "Fully rectified signal" какой смысл в этом? Если можно взять все найденные нули и в этих местах импульсы пустить. У меня один пункт там только - Zero crossing detection.
А там неправильно описал метод детектирования нулей, поэтому прикрепляю новое изображение. Я так понимаю, что тот, кто эту схему рисовал, предполагал, что она будет реализована аппаратно, отсюда все эти блоки. Если программно определяете переходы через ноль, то вам эти блоки и не нужны. Програмно вообще достаточно сформировать массив значений моментов времени переходов через ноль, а из них и определить частоту, как я понимаю из вашего рисунка.
Сообщение отредактировал leksa - Mar 24 2009, 19:33
--------------------
A designer knows he has achieved perfection not when there is nothing left to add, but when there is nothing left to take away (Antoine de Saint-Exupery)
|
|
|
|
Сообщений в этой теме
ACiDUser Симуляция ЧМ сигнала содержащего музыку Feb 10 2009, 15:29 INT1 Не уверен, что в реалтайме симулятор сможет смодел... Feb 10 2009, 19:06 TSerg Цитата(ACiDUser @ Feb 10 2009, 18:29)
Д... Feb 11 2009, 09:45 _Anatoliy Цитата(ACiDUser @ Feb 10 2009, 16:29) Осн... Feb 11 2009, 10:38 ACiDUser Спасибо за ответы!
Долго мучался откуда эти ... Feb 12 2009, 01:05 _Anatoliy Цитата(ACiDUser @ Feb 12 2009, 03:05) Спа... Feb 12 2009, 05:36  ACiDUser Цитата(_Anatoliy @ Feb 12 2009, 09:36) Не... Feb 12 2009, 18:08   _Anatoliy Цитата(ACiDUser @ Feb 12 2009, 20:08)
L... Feb 12 2009, 18:40 ACiDUser Мы тоже работаем с FPGA но вся обработка только на... Feb 12 2009, 19:00 ACiDUser Цитата(_Anatoliy @ Feb 12 2009, 22:40) Ес... Feb 13 2009, 01:14 _Anatoliy Цитата(ACiDUser @ Feb 13 2009, 02:14) А к... Feb 13 2009, 07:06  ACiDUser Цитата(_Anatoliy @ Feb 13 2009, 11:06) А ... Feb 13 2009, 16:20   _Anatoliy Цитата(ACiDUser @ Feb 13 2009, 18:20) Хмм... Feb 13 2009, 16:38   DRUID3 Цитата(ACiDUser @ Feb 13 2009, 18:20) Хмм... Feb 26 2009, 00:06    ACiDUser Цитата(DRUID3 @ Feb 26 2009, 04:06) ... Mar 4 2009, 09:39     DRUID3 Цитата(ACiDUser @ Mar 4 2009, 11:39) Имее... Mar 4 2009, 15:50      ACiDUser Цитата(DRUID3 @ Mar 4 2009, 19:50) непоня... Mar 11 2009, 11:11       petrov Самое главное не заниматься изобретением плохого в... Mar 11 2009, 12:25   leksa Цитата(ACiDUser @ Feb 13 2009, 19:20) ...... Mar 4 2009, 18:07    _Anatoliy Цитата(leksa @ Mar 4 2009, 20:07) Подскаж... Mar 12 2009, 05:48 ACiDUser Не Не, только цифровой. Просто этот элемент эквива... Feb 13 2009, 17:13 ACiDUser Еще делал с детектированием Нулей. Zero-Crossing D... Feb 13 2009, 18:19 ACiDUser Идея Software Radio в том чтобы было минимум желез... Mar 11 2009, 12:53 petrov Цитата(ACiDUser @ Mar 11 2009, 15:53) Иде... Mar 11 2009, 13:11 ACiDUser Изобретать в плане схемы не надо - согласен. Но во... Mar 11 2009, 13:22 petrov Цитата(ACiDUser @ Mar 11 2009, 16:22) PCI... Mar 11 2009, 13:28  ACiDUser Цитата(petrov @ Mar 11 2009, 17:28) Не хв... Mar 11 2009, 13:31   petrov Цитата(ACiDUser @ Mar 11 2009, 16:31) А м... Mar 11 2009, 13:38   Serg76 Цитата(ACiDUser @ Mar 11 2009, 16:31) А м... Mar 13 2009, 16:44 ACiDUser Вы не учли одно НО, у нас дискретизация сигнала пр... Mar 11 2009, 14:20 petrov Цитата(ACiDUser @ Mar 11 2009, 17:09) Вы ... Mar 11 2009, 14:24  ACiDUser Цитата(petrov @ Mar 11 2009, 18:24) Что э... Mar 11 2009, 14:40   petrov Цитата(ACiDUser @ Mar 11 2009, 17:40) Это... Mar 11 2009, 15:00 ACiDUser Ну почитай почему многие институты сейчас уделяют ... Mar 11 2009, 15:12 petrov Цитата(ACiDUser @ Mar 11 2009, 18:12) Ну ... Mar 11 2009, 15:27 ACiDUser Ну вот пусть болит голова об этом у тех кто этим з... Mar 11 2009, 15:39 Pathfinder ACiDUser,
Как вы себе представляете SDR? Антенна+... Mar 11 2009, 17:58 ACiDUser Цитата(Pathfinder @ Mar 11 2009, 21:58) A... Mar 12 2009, 12:58  _Anatoliy Цитата(ACiDUser @ Mar 12 2009, 14:58) Спа... Mar 12 2009, 13:40    leksa Цитата(leksa @ Mar 13 2009, 09:51) Где им... Mar 13 2009, 15:34 leksa Скрипт с "гистерезисом".
Расширение над... Mar 13 2009, 18:28 ACiDUser После детектирования ЧМ при помощи детектора нулей... May 25 2009, 14:39 _Anatoliy Цитата(ACiDUser @ May 25 2009, 15:39)
По... May 26 2009, 06:11 ACiDUser Спасибо, заценим.
А по поводу модуляции уже разоб... May 26 2009, 09:41
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|