Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Симуляция ЧМ сигнала содержащего музыку
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Математика и Физика
ACiDUser
Всем привет!

Есть 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КГц.

Может кто-нибудь объяснить как отличается ЧМ модуляция с одной гармоникой и

модуляция с несколькими гармониками?
Или хотя-бы указать на соответствующую литературу.

Заранее благодарен.
INT1
Не уверен, что в реалтайме симулятор сможет смоделировать спектр WFM (посчитать ф-ции Бесселя):
"...нельзя рассматривать воздействие каждой гармоники этого сигнала по отдельности, для нахождения спектра следует вести расчеты для каждой формы сигнала, которая нас интересует. Такие расчеты зачастую оказываются очень громоздкими, и вообще не всегда возможны...."
http://www.physdep.isu.ru/method/rtcs/Theory/spectrumfm.htm
ЗЫ, немного порылся в сети, здесь немного про железо и про математику:
http://www.williamspublishing.com/PDF/5-8459-0715-2/part.pdf
TSerg
Цитата(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))
_Anatoliy
Цитата(ACiDUser @ Feb 10 2009, 16:29) *
Основное математическое выражение:

FM = A*Cos(2*pi*Fc*t + M*Sin(2*pi*Fm*t))

где: A - амплитуда, Fc - несущая частота, M - индекс модуляции, Fm - модулирующий


А формула-то неверна.
Нужно так:

FM = A*Cos(2*pi*Fc*t + (M/Fm)*sin(2*pi*Fm*t));
ACiDUser
Спасибо за ответы!

Долго мучался откуда эти " k " - берутся. Вроде как для радио целая таблица этих констант есть.

А можно (M/Fm) заменить на D девиацию и упростить как FM = A*Cos(2*pi*Fc*t + D*sin(2*pi*Fm*t)); ??

Просто с этим индексом модуляции постоянно путаюсь, проще в понимании вводить девиацию а индекс уже высчитывать.
_Anatoliy
Цитата(ACiDUser @ Feb 12 2009, 03:05) *
Спасибо за ответы!

Долго мучался откуда эти " k " - берутся. Вроде как для радио целая таблица этих констант есть.

А можно (M/Fm) заменить на D девиацию и упростить как FM = A*Cos(2*pi*Fc*t + D*sin(2*pi*Fm*t)); ??

Просто с этим индексом модуляции постоянно путаюсь, проще в понимании вводить девиацию а индекс уже высчитывать.


Нет,нельзя. Девиация Fd = M*Fm,если плясать от девиации тогда уж

FM = A*Cos(2*pi*Fc*t + (Fd / Fm^2)*sin(2*pi*Fm*t))
ACiDUser
Цитата(_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 - угловая девиация
_Anatoliy
Цитата(ACiDUser @ Feb 12 2009, 20:08) *


LabView у меня нет,файл не раскрыл.Почитайте похожую тему:
http://www.telesys.ru/wwwboards/dsp/299/me...es/108893.shtml

Если нужно могу завтра скинуть матлабовский скрипт ЧМ модулятора-демодулятора по которому я делал реальный проект демодулятора ЧМ на FPGA.
ACiDUser
Мы тоже работаем с 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
Цитата(_Anatoliy @ Feb 12 2009, 22:40) *
Если нужно могу завтра скинуть матлабовский скрипт ЧМ модулятора-демодулятора по которому я делал реальный проект демодулятора ЧМ на FPGA.



А какой метод демодуляции использовал?

Я как-бы уже реализовал два метода остался 3-й - PLL.
_Anatoliy
Цитата(ACiDUser @ Feb 13 2009, 02:14) *
А какой метод демодуляции использовал?

Я как-бы уже реализовал два метода остался 3-й - PLL.


А такой пробовал?
ACiDUser
Цитата(_Anatoliy @ Feb 13 2009, 11:06) *
А такой пробовал?


Хмм что-то знакомое. А как он по научному называется?

Дело в том что я ни в одном своем методе не использовал I,Q данные.

Вот один способ, называется Детектор Кривизны или Детектор Огибающей
_Anatoliy
Цитата(ACiDUser @ Feb 13 2009, 18:20) *
Хмм что-то знакомое. А как он по научному называется?

Дело в том что я ни в одном своем методе не использовал I,Q данные.

Вот один способ, называется Детектор Кривизны или Детектор Огибающей


Хм,диод...Так ты аналоговый детектор делал?
ACiDUser
Не Не, только цифровой. Просто этот элемент эквивалентен Диоду. Только положительную волну пропускает.
ACiDUser
Еще делал с детектированием Нулей. Zero-Crossing Detector
DRUID3
Цитата(ACiDUser @ Feb 13 2009, 18:20) *
Хмм что-то знакомое. А как он по научному называется?

Дело в том что я ни в одном своем методе не использовал I,Q данные.

Вот один способ, называется Детектор Кривизны или Детектор Огибающей

blink.gif wacko.gif blink.gif Толи лыжи не едут, толи я чего-то недопонял...
ACiDUser
Цитата(DRUID3 @ Feb 26 2009, 04:06) *
blink.gif wacko.gif blink.gif Толи лыжи не едут, толи я чего-то недопонял...


Имеется плата с антенной и FPGA, которая принимает FM сигнал. Далее на компьютер через PCI-express идет огромный массив данных - дискретные отсчеты FM сигнала. Здесь нету никаких I и Q данных. Моя задача уже обрабатывать этот массив данных и проводить демодуляцию FM программными алгоритмами.

Что еще непонятно?
DRUID3
Цитата(ACiDUser @ Mar 4 2009, 11:39) *
Имеется плата с антенной и FPGA, которая принимает FM сигнал. Далее на компьютер через PCI-express идет огромный массив данных - дискретные отсчеты FM сигнала. Здесь нету никаких I и Q данных. Моя задача уже обрабатывать этот массив данных и проводить демодуляцию FM программными алгоритмами.

Что еще непонятно?

непонятно зачем Вы упомянули АМ детектор при детектировании ЧМ. Далее непонятно почему не имея соответствующей подготовки Вы взялись за такую задачу - так много платят?
Далее об IQ-каналах. Так их нигде нет. Это выдумка, козни математиков отбирающих хлеб у истинных радиотехников... Историю с Ли де Форестом помните? biggrin.gif Но вот статейКО где Вам покажут как можно получить из действительного сигнала комплексный. А модулятор есть книжке Лайонса(и еще многих других) - это универсальный FM демодулятор для любых значений девиации...
leksa
Цитата(ACiDUser @ Feb 13 2009, 19:20) *
...
Вот один способ, называется Детектор Кривизны или Детектор Огибающей


Похоже, что сигнал вы оцифровываете на поднесущей(ПЧ и т.п.), то есть Digital Down Converter не используете.
Тогда приведенная схема вполне работоспособна как вариант.
Дифференцирующий элемент - это фильтр с линейно возрастающей (с увеличением частоты) АЧХ. При прохождении через такой фильтр ЧМ сигнала в нем появляется паразитная амплитудная модуляция прямо пропорциональная частотной модуляции.
Вот эта паразитная АМ затем и детектируется детектором огибающей (диод + фнч).
Минусом такой схемы можно назвать прямую зависимость уровня выходного сигнала от уровня мощности принимаемого сигнала.
И помехоустойчивость хуже чем у ФАПЧ, раньше проявляется пороговый эффект, когда при падении до определенного уровня отношения сигнал/шум демодулятор "ломается", то есть резко ухудшается качество сигнала на выходе вплоть до полной неразборчивости.

Цитата(_Anatoliy @ Feb 13 2009, 10:06) *
А такой пробовал?

Подскажите пожалуйста, из какой книги рисунок?
ACiDUser
Цитата(DRUID3 @ Mar 4 2009, 19:50) *
непонятно зачем Вы упомянули АМ детектор при детектировании ЧМ.
Далее непонятно почему не имея соответствующей подготовки Вы взялись за такую задачу - так много платят?


По первому вопросу товарищ leksa всё очень грамотно объяснил.

А по второму - это исследование для бакалаврской работы а так же часть проекта Software Radio с нерегулярной дискретизацией, над которой я работаю. И у нас просто нет таких специалистов которые сразу знают что делать и задания дают, которые требуют исследований тк. в институте работаю. Могут дать любое задание - а дальше сиди в гугле и разбирайся smile.gif

Нужно реализовать несколько методов демодуляции ЧМ а потом их сравнить. Сигнал представляет собой огромный массив данных полученный с DAQ платы.

Еще делал такую схему с Детектированием нулей (Zero-Crossing Detector).

Сначала нашел все нули где сигнал ось X пересекает. Имея два нуля можно посчитать мгновенную частоту. А т.к. мгновенная частота ЧМ пропорциональна мгновенному значению модулирущего сигнала - можно восстановить модулирующий сигнал. Сигнал получается идентичным оригинальному и совпадает с ним по фазе. Проблема в том что если я наложу искусственный шум, то уже не получается так красиво. Алгоритм воспринимает шум - как пересечения с осью Х и добавляет в массив лишние нули. Подскажите как можно можно с этим бороться?


Цитата(leksa @ Mar 4 2009, 22:07) *
Похоже, что сигнал вы оцифровываете на поднесущей(ПЧ и т.п.), то есть Digital Down Converter не используете.


Дело в том что пытаемся захватить весь спектр радио-частот сразу. Затем фильтруем нужную полосу и работаем с тем что отфильтровали.

Цитата(leksa @ Mar 4 2009, 22:07) *
Минусом такой схемы можно назвать прямую зависимость уровня выходного сигнала от уровня мощности принимаемого сигнала.
И помехоустойчивость хуже чем у ФАПЧ, раньше проявляется пороговый эффект, когда при падении до определенного уровня отношения сигнал/шум демодулятор "ломается", то есть резко ухудшается качество сигнала на выходе вплоть до полной неразборчивости.


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

Самые чувствительные приёмники делались без всякой цифровой обработки, смысл в том что амплитуда модулирующего сигнала не меняется мгновенно и соответственно можно отслеживая сигнал на выходе частотного детектора по обратной связи управлять центральной частотой полосового фильтра стоящего перед детектором гораздо более узкополосного чем ширина спектра ЧМ сигнала.
ACiDUser
Идея Software Radio в том чтобы было минимум железа - максимум софта. То-есть использовать универсальный дизайн, который работает и не нужно менять компоненты. Если обработка сигналов происходит программно - то можно все улучшить или заменить алгоритм на другой. Можно дополнить новыми функциями не делая новую плату. Разработка такого проекта обходится значительно дешевле, чем каждый раз заказывать в Тайване плату. Берешь универсальный дизайн пихаешь в мощный компьютер, который производит всё дальнейшую обработку. Используя мощный компьютер открывается гораздо больше возможностей. - ВОТ почему нужно изобретать велосипед - делать программно то, с чем справляются пара электронных элементов, тут можно контролировать каждый шаг и здесь нет побочных эффектов от нелинейности диффиренцирующего элемента.
petrov
Цитата(ACiDUser @ Mar 11 2009, 15:53) *
Идея Software Radio в том чтобы было минимум железа - максимум софта. То-есть использовать универсальный дизайн, который работает и не нужно менять компоненты. Если обработка сигналов происходит программно - то можно все улучшить или заменить алгоритм на другой. Можно дополнить новыми функциями не делая новую плату. Разработка такого проекта обходится значительно дешевле, чем каждый раз заказывать в Тайване плату. Берешь универсальный дизайн пихаешь в мощный компьютер, который производит всё дальнейшую обработку. Используя мощный компьютер открывается гораздо больше возможностей. - ВОТ почему нужно изобретать велосипед - делать программно то, с чем справляются пара электронных элементов, тут можно контролировать каждый шаг и здесь нет побочных эффектов от нелинейности диффиренцирующего элемента.


Ну изобретать уж точно не надо как ЧМ демодулировать. И ещё это самое мощное железо дорогое не справится с широкополосными сигналами которые щас кругом используются.
ACiDUser
Изобретать в плане схемы не надо - согласен. Но вот как написать программу, которая будет делать тоже самое + разработать алгоритмы для подавления шумов - требует времени. PCI-Express шины должно хватить даже для очень широкой полосы.
petrov
Цитата(ACiDUser @ Mar 11 2009, 16:22) *
PCI-Express шины должно хватить даже для очень широкой полосы.


Не хватит вычислительных ресурсов универсального центрального процессора чтобы в реальном времени демодулировать.
ACiDUser
Цитата(petrov @ Mar 11 2009, 17:28) *
Не хватит вычислительных ресурсов универсального центрального процессора чтобы в реальном времени демодулировать.


А можно узнать откуда такие данные?
petrov
Цитата(ACiDUser @ Mar 11 2009, 16:31) *
А можно узнать откуда такие данные?


А вы сами подумайте почему широкоплосная связь делается не на сигнальных процессорах(которые ещё фору дадут универсальным) а на специализированных микросхемах или FPGA. Прикиньте сколько вычислений надо чтобы скажем цифровое телевидение DVB-T демодулировать в реальном времени.
ACiDUser
Вы не учли одно НО, у нас дискретизация сигнала проводится нелинейно smile.gif и делается это с помощью АЦП и FPGA, далее массив данных принимается компьютером через PCI-Express где уже производится вся обработка.

DAQ плата дискретизацией занимается, хотим сделать именно демодуляцию в реальном времени.

Конечно, сначала нужно отфильтровать нужную полосу.
petrov
Цитата(ACiDUser @ Mar 11 2009, 17:09) *
Вы не учли одно НО, у нас дискретизация сигнала проводится нелинейно smile.gif


Что это означает?

Цитата(ACiDUser @ Mar 11 2009, 17:09) *
и делается это с помощью АЦП и FPGA, далее массив данных принимается компьютером через PCI-Express где уже производится вся обработка.

DAQ плата дискретизацией занимается, хотим сделать именно демодуляцию в реальном времени.


Так как успеет процессор в реальном времени демодулировать то широкополосные сигналы? Ведь на один отсчёт входного сигнала требуются сотни если не тысячи команд, нету ещё процессоров с такой тактовой частотой.

Вообще не ясна мотивация, что вы хотите получить то? Приёмник FM-радиостанций ценой в несколько тысяч долларов? Или исследовать модуляции, тогда наверное есть что-то более актуальное чем устаревшая ЧМ и зачем тогда все эти писиай экспрессы, достаточно головы и матлаба?
ACiDUser
Цитата(petrov @ Mar 11 2009, 18:24) *
Что это означает?


Это означает что можно обойти критерий Найквиста о двух обязательных считываний на период - для возможности восстановить сигнал.
А значит можно использовать более дешевый АЦП с тем же результатом.

Цитата(petrov @ Mar 11 2009, 18:24) *
Так как успеет процессор в реальном времени демодулировать то широкополосные сигналы? Ведь на один отсчёт входного сигнала требуются сотни если не тысячи команд, нету ещё процессоров с такой тактовой частотой.


Широкополосные не потянет. Но ЧМ демодулировать реально.

Получить многофункциональный девайс, в идеале для приёма видео и аудио информации.


Сначала сделаем - а потом посмотрим где можно применить.

Никто не создавал, например, компьютеры изначально для массового потребления.
petrov
Цитата(ACiDUser @ Mar 11 2009, 17:40) *
Это означает что можно обойти критерий Найквиста о двух обязательных считываний на период - для возможности восстановить сигнал.

Широкополосные не потянет. Но ЧМ демодулировать реально.

Получить многофункциональный девайс, в идеале для приёма видео и аудио информации.


Сначала сделаем - а потом посмотрим где можно применить.

Никто не создавал, например, компьютеры изначально для массового потребления.


Может я чего-то не понимаю, но не видно реализма какого-то. Вот берёшь буржуйские диссеры и многие можно в реальной разработке тех же модемов использовать. А у нас что-то не видно такого, да вообще зачастую бред какой-то.
ACiDUser
Ну почитай почему многие институты сейчас уделяют внимание Software Radio, а в армии это уже давно используется. А процессоры будут выходить еще мощнее что будет открывать новые возможности. Я думаю когда компьютеры первые были, тоже были такие люди, которые говорили, что это бред и никому не нужно smile.gif
petrov
Цитата(ACiDUser @ Mar 11 2009, 18:12) *
Ну почитай почему многие институты сейчас уделяют внимание Software Radio, а в армии это уже давно используется. А процессоры будут выходить еще мощнее что будет открывать новые возможности. Я думаю когда компьютеры первые были, тоже были такие люди, которые говорили, что это бред и никому не нужно smile.gif


Так не в этом бред, кто же против Software Radio, цифровая обработка сигналов и есть Software Radio. ИМХО усилия надо направлять на разработку новых модуляций, кодирования и т. п.
ACiDUser
Ну вот пусть болит голова об этом у тех кто этим занимается - кодированием и разработкой модуляций. Пока всё радиовещание перейдет на цифровой стандарт пройдет еще много времени. А иметь устройство для которого демодуляция - это просто написанная программа очень удобно, можно принимать разные сигналы и демодулировать их, и для этого не нужно переделывать железо.
Pathfinder
ACiDUser,
Как вы себе представляете SDR? Антенна+АЦП+компьютер? Дак это утопия. Как минимум потому что невозможно сделать абсолютно универсальный преселектор. За универсальность всегда приходится платить очень дорого - и ценой и характеристиками.

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

+1
_Anatoliy
Цитата(leksa @ Mar 4 2009, 20:07) *
Подскажите пожалуйста, из какой книги рисунок?


http://rapidshare.com/files/189408753/cifr...lov-lajjons.rar
ACiDUser
Цитата(Pathfinder @ Mar 11 2009, 21:58) *
ACiDUser,
Как вы себе представляете SDR? Антенна+АЦП+компьютер? Дак это утопия. Как минимум потому что невозможно сделать абсолютно универсальный преселектор. За универсальность всегда приходится платить очень дорого - и ценой и характеристиками.


+1


Создайте отдельную тему с названием "SDR реально или нет?"

Можно уже по теме отвечать?

Цитата(_Anatoliy @ Mar 12 2009, 09:48) *


Спасибо, книжка что надо! А про метод с детектированием нулей что-нибудь есть?
_Anatoliy
Цитата(ACiDUser @ Mar 12 2009, 14:58) *
Спасибо, книжка что надо! А про метод с детектированием нулей что-нибудь есть?


У меня нет.
ACiDUser
С детектированием нулей получилось так.
Если наложить шум, тогда алгоритм детектирует лишние нули и демодулированный сигнал уже искажен.
Есть задумка брать из этих нескольких нулей среднее значение.
leksa
Цитата(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
ACiDUser
Цитата(leksa)
Имхо, метод с детектированием нулей не очень подходит для приема радиосигнала, по-моему помехоустойчивость у него будет хуже чем у других уже обсуждавшихся схем.

Насчет помехоустойчивости согласен. А про гистерезис коллеги посоветовали сегодня, всеравно спасибо!

Я читал что этот метод очень хвалят из-за его быстрой работы. А также не требуется знать несущюю частоту.
При грамотной обработке шумов метод может быть весьма хорош.

Можно попробовать проводить усреднение сигнала на коротких промежутках, что может существенно убрать шумы.
Ну и, конечно, срезать амплитуду. Алгоритм умеет определять нули положительного полупериода и отрицательного - т.е. сигнал после пересечения идет вверх или вниз. Это может пригодится для демодуляции цифрового ЧМ.

Пока не понял зачем используется генератор импульсов (см. прикрепленную картинку)

Цитата(leksa)
Если с матлабом работаете могу целиком скрипт кинуть.


Работаю в LabView, но Матлаб тоже имеется и буду благодарен за пример скрипта.

Как доведу алгоритмы до стабильной работы попробую с реальным сигналом от генератора, поэтому пока и балуюсь с шумами.

с ФАПЧ я нашел готовый пример, но пока не могу его настроить под мой проект. Еще не разобрался как сам фильтр работает. Буду делать по мануалу.

Спасибо за конструктивные ответы
leksa
Цитата(ACiDUser @ Mar 13 2009, 03:44) *
Пока не понял зачем используется генератор импульсов (см. прикрепленную картинку)


Насколько я понял из картинки, генератор импульсов генерирует импульс постоянной ширины по каждому входному короткому импульсу. Где короткие импульсы чаще - там и на выходе генератора импульсы чаще. Потом сигнал поступает на ФНЧ, который сглаживает эту последовательность импульсов. Где импульсы на входе чаще, там сигнал на выходе ФНЧ будет чаще. Потом сравнение с порогом, и получается регенерированный двухпозиционный сигнал.
Насколько я понял, конкретно этот вариант схемы подойдет только для 2 позиционной частотной манипуляции.

Вот интересно, а что будет на выходе генератора импульсов, если сигналы на входе пойдут с интервалом меньше, чем ширина выходного импульса генератора?

И еще, может быть в программном виде генератор импульсов и ФНЧ можно заменить просто ФНЧ, с простой ИХ, близкой по форме и длительности к импульсам генератора. Тогда реакцией ФНЧ на входной дельта-импульс будет его ИХ, то есть как раз импульсы, как на выходе генератора. Но это сейчас в голову пришло и требует проверки.
leksa
Цитата(leksa @ Mar 13 2009, 09:51) *
Где импульсы на входе чаще, там сигнал на выходе ФНЧ будет чаще.

Бррр, не то написал, должно быть " Где импульсы на входе чаще, там сигнал на выходе ФНЧ будет больше. "
Serg76
Цитата(ACiDUser @ Mar 11 2009, 16:31) *
А можно узнать откуда такие данные?

Я занимаюсь разработкой софтовых демов. Приемный тракт строится по аналогичной схеме Антенна->ВЧ часть->модуль АЦП->модуль ввода оцифрованного потока в ПК (через USB2.0). Демодулятор выполнен программно. Максимум что я смог получить это 1,5 Мсим/сек на QPSK сигнале при использовании одного ядра Core2Duo 2,4 GHz в реалтайме. Думаю что можно дотянуть до 2 Мсим/сек если взять проц по-мощнее. Похоже что это предел. На таких скоростях даже простейшие тривиальные операции становятся существенным тормозом. На TMS и FPGA можно получить гораздо большие скорости. Но зато программные демы более гибкие. Так что выбор конфигурации приемного тракта должен зависеть от конкретной сложившейся ситуации.
leksa
Скрипт с "гистерезисом".
Нажмите для просмотра прикрепленного файла
Расширение надо поменять на m.
ACiDUser
Цитата(leksa @ Mar 13 2009, 10:51) *
Насколько я понял из картинки, генератор импульсов генерирует импульс постоянной ширины по каждому входному короткому импульсу. Где короткие импульсы чаще - там и на выходе генератора импульсы чаще. Потом сигнал поступает на ФНЧ, который сглаживает эту последовательность импульсов. Где импульсы на входе чаще, там сигнал на выходе ФНЧ будет чаще. Потом сравнение с порогом, и получается регенерированный двухпозиционный сигнал.
Насколько я понял, конкретно этот вариант схемы подойдет только для 2 позиционной частотной манипуляции.

Вот интересно, а что будет на выходе генератора импульсов, если сигналы на входе пойдут с интервалом меньше, чем ширина выходного импульса генератора?

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


Окей, с этим понятно. А вот пункты "Zero Crossing Detection" и "Fully rectified signal" какой смысл в этом? Если можно взять все найденные нули и в этих местах импульсы пустить. У меня один пункт там только - Zero crossing detection.

А там неправильно описал метод детектирования нулей, поэтому прикрепляю новое изображение.

leksa спасибо за скрипт, заценил. Попробую реализовать свой метод со средним значением, чтобы потом можно было сравнить.
leksa
Цитата(ACiDUser @ Mar 24 2009, 19:07) *
leksa спасибо за скрипт, заценил. Попробую реализовать свой метод со средним значением, чтобы потом можно было сравнить.

Пожалуйста.
Цитата(ACiDUser @ Mar 24 2009, 19:07) *
Окей, с этим понятно. А вот пункты "Zero Crossing Detection" и "Fully rectified signal" какой смысл в этом? Если можно взять все найденные нули и в этих местах импульсы пустить. У меня один пункт там только - Zero crossing detection.

А там неправильно описал метод детектирования нулей, поэтому прикрепляю новое изображение.

Я так понимаю, что тот, кто эту схему рисовал, предполагал, что она будет реализована аппаратно, отсюда все эти блоки. Если программно определяете переходы через ноль, то вам эти блоки и не нужны.
Програмно вообще достаточно сформировать массив значений моментов времени переходов через ноль, а из них и определить частоту, как я понимаю из вашего рисунка.
ACiDUser
После детектирования ЧМ при помощи детектора нулей, получил сигнал с гораздо меньшим количеством отсчетов, чем исходный модулирующий сигнал. Для того чтобы можно было вравнить эффективность метода демодуляции ЧМ, нужно сравнить эти два сигнала и рассчитать погрешность.

Но тк у сигналов разное количество отсчетов, просто отнять один от другого нельзя.
Для этого нужно выровнять количество отсчетов, чтобы оно стало равным для обоих сигналов.

Решено было выровнять детектированный сигнал при помощи линейной интерполяции.

Выкладываю программу-виртуальный инструмент сделанную в сруде LabView 7.1 - "Upsampling VI.rar" - содержит .exe программу

Для того чтобы запустить, нужно скачать и установить LabView Run-Time Engine 7.1 (~31MB)

скачать можно по следующей ссылке:

http://joule.ni.com/nidu/cds/view/p/id/703/lang/en

На прикрепленном рисунке отсчеты сигналов на графиках показаны кружками. Signal 2 имеет меньшее количество
отсчетов чем Signal 1. Interpolated Signal 2 - это Signal 2 с увеличенным шагом дискретизации при помощи интерполяции.
Deviation Signal - разность двух сигналов.

Прикрепляю так же готовую функцию "Upsampling.vi", для тех у кого установлена среда LabView. (этот файл можно открыть только в LabView)
_Anatoliy
Цитата(ACiDUser @ May 25 2009, 15:39) *

Почитайте хорошую книгу,многое станет яснее
ACiDUser
Спасибо, заценим.

А по поводу модуляции уже разобрался. У меня была ошибка в формуле.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.