|
|
  |
Симуляция ЧМ сигнала содержащего музыку, Вопрос спецам |
|
|
|
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КГц.
Может кто-нибудь объяснить как отличается ЧМ модуляция с одной гармоникой и
модуляция с несколькими гармониками? Или хотя-бы указать на соответствующую литературу.
Заранее благодарен.
|
|
|
|
|
Feb 10 2009, 19:06
|
deleted
   
Группа: Свой
Сообщений: 555
Регистрация: 28-08-05
Пользователь №: 8 024

|
Не уверен, что в реалтайме симулятор сможет смоделировать спектр WFM (посчитать ф-ции Бесселя): "...нельзя рассматривать воздействие каждой гармоники этого сигнала по отдельности, для нахождения спектра следует вести расчеты для каждой формы сигнала, которая нас интересует. Такие расчеты зачастую оказываются очень громоздкими, и вообще не всегда возможны...." http://www.physdep.isu.ru/method/rtcs/Theory/spectrumfm.htmЗЫ, немного порылся в сети, здесь немного про железо и про математику: http://www.williamspublishing.com/PDF/5-8459-0715-2/part.pdf
|
|
|
|
Guest_TSerg_*
|
Feb 11 2009, 09:45
|
Guests

|
Цитата(ACiDUser @ Feb 10 2009, 18:29)  Для ФМ Sf(t) = Ao * Cos( Wo + Ph(t) ); Ph(t) = k * Sm(t); Sm(t) - модулирующий сигнал произвольного вида. т.е. любой композитный сигнал от постоянного уровня до шумового сигнала. Одна, две, три,.. синусоиды, экспонента и прочее тоже не возбраняется Для ЧМ W(t) = Wo + k * Sm(t); мгновенная частота И сам сигнал Sf(t) = Ao * Cos (W(t))
|
|
|
|
|
Feb 12 2009, 01:05
|
Участник

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

|
Спасибо за ответы!
Долго мучался откуда эти " k " - берутся. Вроде как для радио целая таблица этих констант есть.
А можно (M/Fm) заменить на D девиацию и упростить как FM = A*Cos(2*pi*Fc*t + D*sin(2*pi*Fm*t)); ??
Просто с этим индексом модуляции постоянно путаюсь, проще в понимании вводить девиацию а индекс уже высчитывать.
|
|
|
|
|
Feb 12 2009, 18:08
|
Участник

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

|
Цитата(_Anatoliy @ Feb 12 2009, 09:36)  Нет,нельзя. Девиация Fd = M*Fm,если плясать от девиации тогда уж
FM = A*Cos(2*pi*Fc*t + (Fd / Fm^2)*sin(2*pi*Fm*t)) Так не получается. Если я так делаю то - ничего не происходит. Прикрепляю виртуальный иснтрумент который я сделал, работает с другой формулой. Я сначала беру информационный сигнал Sm(t)=sin(2*pi*Fm*t)+0.8*sin(2*pi*Fm*3*t); состоящий из 2-х гармоник, интегрирую его, затем уже работает следующая формула FM(t) = A*sin(2*pi*Fc*t+D*Sm(t))); Если я этот D делю на Fm^2, то изменения очень малы и практически не заметны. Не может несущая частотата так сильно отклоняться (если она установлена на 60Гц) то, мне кажется отклонение в 100 раза большее - это чтото нереальное. Может я еще чего-то не учел, что должно было компенсировать это. http://en.wikipedia.org/wiki/Frequency_modulationКак показано на прикрепленной формуле: ... + 2*Pi*Fd * Интеграл от Sm(t) Fd - девиация. Тоесть можно записать ... Wd * Интеграл от Sm(t) Wd - угловая девиация
Сообщение отредактировал ACiDUser - Feb 12 2009, 18:09
Прикрепленные изображения
|
|
|
|
|
Feb 12 2009, 19:00
|
Участник

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

|
Мы тоже работаем с FPGA но вся обработка только на компьютере производится. Я кажется понял в чем тут дело. Когда мы интегрируем синус или косинус, то констанка та что перед "t" идет в знаменатель, функция меняется на противоположную. Тоесть в данном случае в знаменатель идут 2*pi*Fm а в числителе 2*Pi*Fd (Fd - девиация) отсюда после сокращения имеем - Fd / Fm = M (индекс модуляции). А чтобы открыть программу нужен LabView Run-Time Engine можно скачать отсюда ftp://ftp.ni.com/support/labview/windows/...VRunTimeEng.exe (32.7 MB)
Сообщение отредактировал ACiDUser - Feb 12 2009, 19:01
|
|
|
|
|
Feb 13 2009, 01:14
|
Участник

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

|
Цитата(_Anatoliy @ Feb 12 2009, 22:40)  Если нужно могу завтра скинуть матлабовский скрипт ЧМ модулятора-демодулятора по которому я делал реальный проект демодулятора ЧМ на FPGA. А какой метод демодуляции использовал? Я как-бы уже реализовал два метода остался 3-й - PLL.
|
|
|
|
|
Feb 13 2009, 16:20
|
Участник

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

|
Цитата(_Anatoliy @ Feb 13 2009, 11:06)  А такой пробовал? Хмм что-то знакомое. А как он по научному называется? Дело в том что я ни в одном своем методе не использовал I,Q данные. Вот один способ, называется Детектор Кривизны или Детектор Огибающей
Эскизы прикрепленных изображений
|
|
|
|
|
Feb 13 2009, 17:13
|
Участник

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

|
Не Не, только цифровой. Просто этот элемент эквивалентен Диоду. Только положительную волну пропускает.
|
|
|
|
|
Feb 13 2009, 18:19
|
Участник

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

|
Еще делал с детектированием Нулей. Zero-Crossing Detector
|
|
|
|
|
  |
6 чел. читают эту тему (гостей: 6, скрытых пользователей: 0)
Пользователей: 0
|
|
|