Автор |
Сообщение |
|
Дата: 23 Июн 2009 14:21:48
#
Прощу прощения если вопрос глупый, но где можно узнать как демодулировать FM сигнал, и наоборот промодулировать. Под FM сигналом понимаю обычное радио, например на частоте 102,2МГц. Сигнал записан в виде полосы 500кГц.
|
|
Дата: 23 Июн 2009 14:37:50
#
krosh Если ответ то ж глупый извините тынц. |
Реклама Google
|
|
|
Дата: 23 Июн 2009 16:26:27
#
Сигнал записан в виде полосы 500кГц.
С этого места поподробнее если можно:)
PS: krosh, Вас не Александром случайно зовут ?
|
|
Дата: 23 Июн 2009 17:57:25
#
PS: krosh, Вас не Александром случайно зовут ?
случайно нет
Сигнал записан в виде полосы 500кГц.
А чего тут говорить, вырезана полоса в 500кГц с центральной частотой 102,2 МГц
То что в матлабе есть такая функция это хорошо, но мне все равно придется реализовывать это на С, поэтому желательно узнать непосредственно сам алгоритм модуляции и демодуляции
Насколько я понял это регламентируется стандартом УКВ CCIR, но вот где его взять?
|
|
Дата: 23 Июн 2009 18:45:34
#
krosh Алгоритмы для разных мод описаны в книге Сергииенко А.Б. "Цифровая обработка сигналов". Так ж в других книгах. Вообще пока не будет записи чего вы там демодить собрались, это будет просто колебания воздуха. Потому что лично мне например А чего тут говорить, вырезана полоса в 500кгц с центральной частотой 102,2 МГц ни о чём не говорит. Это напоминает фразу "у меня есть чемодан в нём много денег", какой чемодан, каких денег, что такое много и тд и тп. Честно говоря только в четвёртом посте вы соизволили намекнуть что программно демодить чего-то там собрались, из первого это ну ни как не следует. Упрашивать вас чего-то положить, или чего-то уточнять честное слово уже как-то неинтересно, проходили всё это уже тут неоднократно. В конце концов это нужно вам больше чем кому бы то нибыло. Если вы считаете что сказали достаточно для вразумительного ответа, ну и ладно. Мне кажется вам то ж ответили достаточно, но это имхо всё конечно. У других может быть другое мнение. Ну так где-то.
|
|
Дата: 23 Июн 2009 19:17:22
#
Значит постараюсь пояснить:
Записаны отсчеты сигнала в pcm фале с частотой дискретизации 1МГц. Частота 250кГц соответствует частоте 102,2Мгц.
Задача заключается в получение последовательности отсчетов сигнала, подав который на звуковую плату можно было бы услышать звук(радио)
Если я что-то не ясно или неполно излагаю, прошу прощения, просто спросите чего не хватает для полной картины.
|
|
Дата: 23 Июн 2009 19:27:50
#
Например так.
Переводите с помощью преобразования Гильберта в комплексную форму, сносите несущую в ноль путем умножения на exp(-I*w*t), где w - частота несущей, t - номер отсчета, I - корень из -1, вычисляете мгновенную частоту путем вычисления arg(x[t] * x'[t-1]), где ' - операция комплексного сопряжения.
На каждом из этапов возможны вариации, но это - базовый алгоритм.
|
|
Дата: 23 Июн 2009 22:21:40
#
|
|
Дата: 04 Авг 2009 22:33:37
#
На вопрос прямо не отвечу, но "есть чего сказать" по теме.
1) Полоса 500 КГц, частота 102.2 МГц. Очень на радиовещание похоже - модуляция у исходного сигнала не WFM случано? Стандартная стерео WFM модуляция отличается от обычной FM, полоса шире, пилот тон есть (для стерео). Хотя для послушать аудио можно проигнорировать и декодировать как моно приём.
2) Если вдруг радиовещание WFM, то схема декодировки усложняется.
Вспомним схему радиовещания, например: берем стандартную песенку, частотка не ахти: 30 Гц - 15 КГц - это монофонический канал + поднесущая состоящая из разности левого и правого что примерно по частотке 80% от монофонической, т.е. примерно 500 КГц - 12 КГц х 2. Итого полоса почти 15 КГц + 11.5 +11.5 = 38 КГц. Далее защитная зона до пилот-тона 15-19 КГц потом пилот-тон 19 КГц, потом защитная зона между пилот-тоном и нижней границей поднесущей 19-23 КГц - это ещё 8 кГц, потом полоса от верхней границы поднесущей 53 КГц до канала RDS ещё 4 КГц, потом RDS, потом ещё защитная граница 4 КГц выше RDS, остально хреново отфильтрованые гармоники в полосе как минимум до 114 КГц. Итого аудиосигнал занимает полосу *2 - вот ширина полосы вещалки. Хотя назвать WFM можно просто всё, что шире NFM, например это ширина канала в 25 КГц, по уровню - 30 dB ширина около 30 КГц. WFM может быть и мегагерц полосой, и 100 КГц.
3) Или 500 КГц просто частота дискретизации, сигнал оцифрован с некой ПЧ (я так понял 250 КГц) без детектора, ПЧ есть несущая для начала нашей цифровой декодировки, сигнал был просто с FM модуляцией (без поднесущих, пилот-тона, стерео, RDS и прочего), осталось продетектировать программно?
4) Ув. krosh, дабы так не гадать, проще словами описать схему установки на которой записали сигнал, и что за сигнал был, чтобы стало точно понятно что оказалось в pcm файле. Я надеюсь что правильно понял, но не факт. Если изложить, тогда станет возможным предложить алгоритм декодировки.
====
Квадратурная (комплексная, векторная, I/Q) цифровая обработка сигнала рулит. Интересна, например, схема которую можно воспроизвести радиолюбительскими средствами, как для практических целей (спектр отобразить, цифровую передачу декодировать), так и для понимания теории.
Приёмник-> ПЧ 10.7 МГц (455 КГц) -> аналоговый блок обработки сигнала с ПЧ (делает аналоговым путём то что советовал asv, раскладывает радиосигнал с ПЧ на 2 составляющих - синусную и косинусную, опускает в 0 Гц, т.е. частота ПЧ=0 Гц, это нормально при двух каналах) -> 2х канальное АЦП (отлично подойдет звуковая карта) -> программа обработки сигнала на ЭВМ.
Если нужно - схему опишу подробнее.
После такого блока програмно все так:
пусть a , b[i] - 2 канала АЦП (левый и правый каналы звуковой карты)
Сигнал описывается a[i] +j*b[i], но, пока учённые не извлекли j= корень из -1:) будем пользоваться просто математикой комплексных чисел.
[i]Кстати учённые недавно изобрели ещё одно новое число, "во". Оно неплохо прибавляется к числу "Пи", если кто не знает.
Амплитуда сигнала (в общем-то амплитудный детектор без фильтра)
z[i]:=sqrt(sqr(a[i]+b[i]);
sqrt-корень квадратный;
sqr-квадрат;
z[i] выводим на график.
(сорри, синтаксис Delphi для С-шников режет ухо)
Фаза (не есть фазовый детектор, а просто фазо-временная характеристика)
ph[i]:=arctg((a[i]/b[i])); (в реализации учесть b[i]=0, разрыв графика; ph[i]=+-180 град)
ph[i] выводим на график, в силу специфики такой фазой функции реализовать рисование придётся самостоятельно.
Спектр
Делаем над массивом комплексных чисел преобразование БПФ (FFT). Есть отличные готовые библиотеки, мне понравилась шаровая от Массатчусетского Универа - готовые модули под все языки, как комплексный БПФ так и обычный, произвольная разрядность, БПФ любой (быстро считаются выборки кратные 2 естественно). И того добавляем в программу 2 dll-ки.
Полученный спектр радиосигнала конкретно отличается от "просто-спектра-аудиосигнала". Мы видим несущую частоту, отстройку от частоты настройки приёмника, по виду спектра понимаем вид модуляции.
Иллюстрации и ссылки
Для примера вот (графики с описанной схемы):
http://bars.mksat.net/signals_radiotel.htm
Остальные есть на
http://bars.mksat.net
Более серьёзно по радиомониторингу современных систем на форуме этого сайта:
http://www.alt.inf.ua |
|
Дата: 06 Авг 2009 17:33:03
#
На вопрос прямо не отвечу, но "есть чего сказать" по теме.
Никто FM арктангенсами не демодулирует. Читай Сергиенко Прокис и т.д. Конечно можно и через арктангенс, но потом придет делать раскрытие переодичности фазы а потом еще и производную этой фазы считать.
|
|
Дата: 06 Авг 2009 20:07:48
#
Никто FM арктангенсами не демодулирует.
потом придет делать раскрытие переодичности фазы а потом еще и производную этой фазы считать.
Только в случае цифровой обработки сигнала не производную, а разность - этого вполне достаточно.
Сначала вычисляется величина, однозначно связанная с разностью (путем умножения текущего отсчета на комплексно сопряженный отсчет с заданной задержкой), а потом и арктангенс вполне сработает - неоднозначность восстановления фазы уже мешать не будет.
Детали реализации и дополнительные этапы обработки, конечно, возможны и зависят от наличия дополнительной априорной информации о сигнале - например ширине занимаемой полосы частот, автокорреляционной функции и т.п.
При наличии такой информации существует возможность построения оптимального (по заданному критерию качества восстановления сигнала) демодулятора путем решения задачи нелинейной фильтрации. Практически это выливается в достаточно ресурсоемкие вычислительные алгоритмы, так что стоит хорошо подумать, действительно ли это так необходимо.
|
|
Дата: 07 Авг 2009 11:10:07
#
Оптимальный это круто, но для начала предлагаю попробовать простые (вплоть до тупизны) методы.
Простой ЧМ детектор
1) разложить на квадратуры (умножить на гетеродины сдвинутые на 90 град, отфильтровать)
2) посчитать фазу таки так, ph[i]:=arctg((a[i]/b[i]))
если арктангенс тормозит заменить его приблизительной табличкой
3) разность f[i]:=ph[i]-ph[k]
4) фильтр постотой усредением отсчётов, из 500 КГц делаем например 10 КГц
5) проиграть на звуковой карте
Что я услышу в наушниках?
Слушаем АМ-детектором
Ещё проще - в любом сигнле с ЧМ есть неслабая паразитная АМ (особенно если отстроиться, чтобы сигнал не полность попадал в полосу приёма). Поэтому для "хоть как то послушать по быстрому" можно просто АМ детектор - поусреднять отсчёты и на звуковую.
|
|
Дата: 07 Авг 2009 12:00:58
#
alt Вы бы по аккуратней с заявлениями типо в любом сигнле с ЧМ есть неслабая паразитная АМ , это сильно выдаёт желание решать относительно не простые вопросы методами вплоть до тупизны. Для хоть как то послушать по быстрому можно мыльницу китайскую купить и вообще ничего не делать.
|
|
Дата: 07 Авг 2009 12:27:21 · Поправил: alt (07 Авг 2009 12:42:14)
#
Так, диференцировать надо было до взятия аргумента (вычислить разность в комплесных числах до arctg ).
А сам арктангенс можно заменить формулой с делением разности квадратов на сумму квадратов.
На форуме http://www.pro-radio.ru/air/4741-21/ обсуждают то же, но делают в железе.
Итого "Формула ЧМ демодулятора" с "квадратурная обработка сигнала":
http://pro-radio.ru/user/uploads/198253.jpg
Цитаты:
"Написал ради спортивного интереса программку, реализующую ЧМ-детектор в цифровом виде на двух 12-битных АЦП и МК атмега88, 20 МГц клок. При использовании 24-битной арифметики удалось достичь 50Квыборок/с. Как и ожидалось, деление на квадрат модуля занимает львиную часть 20-мкс цикла."
"Вот открыли умную книжку, почитали, смоделировали в матлабе, подали с СДРа квадратурные сигналы, продифференциировали, взяли аргумент, на выходе получили исходный сигнал, которым модулировали ВЧ. " |
|
Дата: 07 Авг 2009 13:46:55
#
Mesh, действительно есть желание пробовать чего же могут дать в относительно не простых вопросах простые решения. Вот сейчас настроился айкомом на вещательную FM радиостанцию, включил детектор AM, отстроился - речь и музыка разборчива, паразитная АМ вышла на приёме из-за отстройки.
То есть если на винчестере лежат pcm-файлы с записью сигнала с ПЧ, а послушать совершенно нечем - то пишем программку которая выдаёт сигнал "как нибудь" в динамик, авось чет услышится. А уж потом пробуем создать ЧМ детектор правильный. Надо ж как-то чайникам начинать учиться :))
krosh - считаю что ответ дал, или расписать подробнее? предлагаю выложить образец файлика в инет, тогда с меня программа и исходники с комментариями. для комплексной математики библиотеки есть разные, но вполне реально написать самому (сложить, вычесть, перемножить, поделить).
В итоге должа выйти функция типа FM_demod(input_file,output_file,if_frequency_KHz,bw_kHz), то есть параметры - частота ПЧ и полоса фильтра.
Обратная задача, промодулировать програмно и выдать pcm-файл с сигналом как бы ПЧ? А потом его на ЦАП и на ПЧ передатчика? Орыгинально :)) Впрочем в такой схеме появляется свобода модуляции, можно реализовать аналоговые и цифровые типы модуляции. Например QPSK, ODFM ... гы, а так чтоб к Wi-Fi сетке в итоге подключилось? Или позвонило по GSM? Риалтайм жесть, не под виндой.
|
|
Дата: 07 Авг 2009 13:51:48
#
в любом сигнле с ЧМ есть неслабая паразитная АМ в кагото есть в когото нет, это дело хозяйское.
|
|
Дата: 07 Авг 2009 15:14:45 · Поправил: Mesh (07 Авг 2009 15:23:26)
#
Error
|
|
Дата: 08 Авг 2009 03:08:24
#
Гы. Раз эта фраза вызвала аж парочку возражений: "в любом сигнале с ЧМ есть неслабая паразитная АМ", значит фраза плохо сформулирована, и должна лечь тяжёлым грузом на совесть автора. Переведу помягчее: "при приёме в эфире сигнала ЧМ достаточно сложно обеспечить отсутствие паразитной АМ, особенно если приёмная техника прихрамывает и маде ин чайна; однако поступив от противного - послушав ЧМ на АМ детекторе возможно призадуматься какого чёрта таки слышно, и за счет каких процессов, и ввиду этого при демодуляции сигнала X не стесняться заюзать демодулятор Y, из соображений что процесс таки творческий, а ОПТИМАЛЬНЫЙ детекор ещё надо сообазть.
|
|
Дата: 08 Авг 2009 13:14:28 · Поправил: Mesh (08 Авг 2009 13:15:00)
#
[alt Ваши утверждения что в в любом сигнле с ЧМ есть неслабая паразитная АМ будут вызываьт у любого человека в теме мягко говоря недоумение. Ваши пламенные речи про при приёме в эфире сигнала ЧМ достаточно сложно обеспечить отсутствие паразитной АМ, особенно если приёмная техника прихрамывае ещй больше показывают, что вопроосом вы владеете очень слабо, в связи с чем действительно вам надо i]послушав ЧМ на АМ детекторе возможно призадуматься какого чёрта таки слышно[/i] :) Призадумайтесь реально, о то вы предлагаете это сделать, а сами что-то не очнеь напрягаетесьюю, а вообще умеете? :) Успехов.
|
|
Дата: 08 Авг 2009 18:36:10 · Поправил: alt (08 Авг 2009 23:09:23)
#
Mesh, мои утверждения мягко говоря могут быть ошибочны, и замечаниям я рад.
Я не специалист по DSP и радиприёму, просто игрался с звуковой картой и радиоприёмниками.
Заданная тема: ".. где можно узнать как демодулировать FM сигнал, и наоборот промодулировать. Записаны отсчеты сигнала в pcm фале с частотой дискретизации 1МГц. Частота 250кГц соответствует частоте 102,2Мгц. Задача заключается в получение последовательности отсчетов сигнала, подав который на звуковую плату можно было бы услышать звук(радио)".
Считаю что ответ на вопрос я дал, более подробное объяснение возможно изложить, но оно сводится уже к тексту программы, которую готов написать и предъявить при наличии образца сигнала (нет, не жалко времени).
По вопросу "а вообще умеете?" могу предъявить только 2 своих проекта:
1) http://bars.mksat.net
сводится к аналоговому блоку обработки сигнала с ПЧ 455 КГц + софт, считаю хорошим примером применения квадратурной обработки сигнала, скажем так "лабораторная работа". По сравнению с цифровой раскладкой "на квадратуры" (гилберт икает:) даёт выигрыш по полосе в 2 раза. Впрочем чтобы принять и декодировать таким способом вещательную FM радиостанцию придётся банальную звуковую карту подменить на студийную 192 КГц *2 = хватит полосы; либо мудрить АЦП 2 канала на USB 2.0 из расчёта "вкачать риалтайм 300 КГц 16 бит в компьютер". В изложенном варианте такой комплекс FM демодулирует.
2) [ реклама ]
расписано пока хуже, задача - радиомониторинг существующих систем, GSM-CDMA-WiFi ... сайт, форум и разрабатываемый комплекс ещё сыроваты.
Прошу забить на мои "утверждения" (в инете сижу с пивом в обнимку и бывает чё-то ляпну:)
Ожидаю ответа на sabj топика - алгоритм демодулирования FM по шагам, я свою версию изложил, кто бы подправил. Веселее было бы реализовать и опубликовать софт, но для этого надо чтобы автор вопроса выложил кусочек записи (у меня на сегодня нет возможности оцифровать ПЧ так как предложено).
В целом - да забили на личности, алгоритм предлагаем. Такой по которому реально автор темы сможет реализовать программу.[imgs-l]null[/imgs-l] |
|
Дата: 09 Авг 2009 20:49:44 · Поправил: podalirius (09 Авг 2009 20:50:33)
#
При FM управление частотой а не фазой осуществляется. Частота есть производная от фазы. Фаза есть арктангенс(Q/I) берем производную:
atan'(Q/I) = 1/(1+(Q/I)^2)*(Q'*I+I'*Q)/I^2 = (Q'*I+I'*Q)/(I^2+Q^2).
Q' и I' - производные квадратурного и синфазного каналов после квадратурного преобразователя.
Производные I и Q можно считать конечными разностями. В знаменателе деление на квадрат модуля огибающей позволит устранить паразитную АМ и выделить ТОЛЬКО изменение частоты! При этом не требуется раскрывать переодичность артнгенса по y при помощи unwrap функций. Да и самого арктангенса не надо считать.
|
|
Дата: 10 Авг 2009 19:37:06
#
podalirius
Да, Вы правы, без арктангенса можно обойтись.
Говоря о производных и конечных разностях, однако, хотелось бы отметить, что дифференцирование - операция численно неустойчивая, то есть способная значительно усиливать шумы. Так что на этом участке можно встретить некоторые подводные камни, способные нанести удар по помехоустойчивости.
|
|
Дата: 13 Сен 2009 14:45:33
#
krosh
вот просто интересно, помогло ли такое обсуждение сделать софтовый ФМ демодулятор?
если да - кусок исходника плз в студию, если нет - участникам жаркого спора выражаю сочувствие ... хорошими делами прославится нельзя
|
|
Дата: 13 Окт 2009 14:10:38
#
Добрый день!
если стоит задача не просто демодулировать ФМ сигнал, а получить стерео сигнал + RDS, то при демодуляции необходимо будет подстраивать гетеродин три раза - под суммарный канал, под поднесщую разностного сигнала и под поднесущую RDS?
|
|
Дата: 18 Окт 2009 15:56:50
#
Alkalin
ну, железный приёмник WFM делает всё перечисленное одновременно, от программного демодулятора "WFM-стерео + RDS" ожидается то же.
|
|
Дата: 07 Дек 2009 14:03:44
#
А чего тут говорить, вырезана полоса в 500кГц с центральной частотой 102,2 МГц
Ага, чего тут говорить? Взял человек спектр в 500кГц с центром в 102 200кГц, надо так понимать, вырезал его и записал. А вот чем вырезал, и как записал, сказать нам забыл.
Ну я сразу же и подумал, что записать такой сигнал ему прямо так в лоб вроде бы и нечем, нет у человека таких девайсов и быть не может.
Нет чтобы сказать, дескать перенес я спектр таким-то и таким-то способом туда-то и туда-то и записал так-то и так-то. А то может и не переносил никуда? Тут что, все догадаться обязаны?
Или вопрос настолько тривиален?
Тогда я просто скажу - пользуйся классическими методами, и не морочь голову, на кой тебе вообще цифровая обработка, если не знаешь как?
|
|
Дата: 07 Дек 2009 17:14:35
#
Mesh
Алгоритмы для разных мод описаны в книге Сергииенко А.Б. "Цифровая обработка сигналов". Так ж в других книгах.
не вводите человека в заблуждение. У Сергиенко скорее учебник по Матлабу, чем по ЦОС. Про такие алгоритмы там только упоминается, а далее ссылка на функцию матлаба.
если решать задачу в лоб - то уже подсказано выше : квадратура, а далее арктангенс, причем можно для его вычисления пользоваться как табличными формами, так и CORDIC это быстрее.
|
|
Дата: 07 Дек 2009 20:54:27
#
можно для его вычисления пользоваться как табличными формами, так и CORDIC это быстрее
это смотря на какой вычислительной платформе.
|
|
Дата: 07 Дек 2009 21:25:54 · Поправил: Mesh (07 Дек 2009 21:50:06)
#
CO2040 Гм, да не вопрос. На всякий случай - Глава 8 Модуляция и демодуляция. стр 426.
Сказать что там ничего нет по теме, это не правда. Мало, и полохо изложено? Ну это другой вопрос. Математика по крайней мере описана. Да ладно, в заблуждение я б вводил предложив почитать Гюго. :)
|
|
Дата: 05 Окт 2011 04:20:03
#
Какие программные средства могут де модулировать широкополосный сигнал с девиацией 200 кГц? Сигнал в квадратурах в виде wav файлов. Я знаю что самая крутая программа это SA+, но просьба ее не предлагать.
|
Реклама Google |
|