Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Безуспешная генерация комплексного сигнала с векторным генератором сигналов
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
honeycomb0
Здравствуйте. Попробую описать свою проблему, над которой бьюсь неделю... Уверен, что решение лежит где-то на повернхости, и просто из-за моей нехватки опыта или фундаментального понимания процесса, оно (решение), продолжает ускользать. Надеюсь на помощь "зала" sm.gif

Итак, я пытаюсь сгенерировать комплесный сигнал (назовем его S1), который состоит из:
- Синусойда с частотой f1 (пусть будет 30Гц)
- "Под-несущая" с частотой f2 (пусть будет 10кГц), которая частотно модулированна (FM) частотой f1 (но с разнецой в фазе, psi). Для пущей сложности, амплитуда "под-несущей" f2 (10кГц), промодулированная АМ, частотой f3 (пусть будет 60Гц). И, наконец, боковые полосы частот FM "под-несущей" f2, поочередно подавляются с частотой f4 (пусть будет 1170Гц - четное f1).

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

Есть люди, которые уже решали конкретно эту задачу, и подробно (но не без опечаток) описали ее решение в патенте. Сюда приведу только конечные уравнения, которыми этот комплексный сигнал S1, был описан в патенте:

I(S1) = (1 + Mv*cos(2*pi*f1)) * cos(psi) + (1 + Mv*cos(2*pi*f1)) * Mr*sin(2*pi*f2 - Mc*sin(2*pi*f3))
Q(S1) = (1 + Mv*cos(2*pi*f1)) * sin(psi) + (1 + Mv*cos(2*pi*f1)) * Mr*cos(2*pi*f2 - Mc*sin(2*pi*f3)) * sign(cos(f4))

Где Mv, Mr и Mc - индексы модуляции.

Проблема вот в чем. Измеряю выход векторного генератора, и вижу следующий спектр (центральная частота - это упомянутая RF нусещая, диапозон частот - 100кГц).


Частота под-несущей - 10кГц (и ее видно на одно деление от центра). Но откуда взялся этот "аллиасинг", что на 30 и 40кГц от центра?
Первое что приходит на ум - это что-то с ФНЧ на выходе векторного генератора... Но! Если я перестану "поочередно подавлять" боковые полосы поднесущей т.е. S1 примет вид:

S1 = 1 + Mv*cos(2*pi*f1) + Mr*cos(2*pi*f2 - Mc*sin(2*pi*f1)) * (1 + Md*cos(2*pi*f3))

... то весь этот "антиаллиасинг" изчезает. Частота дискретизации 4 * f2, т.е. оверсамплинг самой большой частоты S1 (10кГц) в 4 раза. Что это может быть? Правильны ли уравнения?

P.s. дописал и понял, насколько непросто кому-нибудь слету все это переварить...
hsoft
Не стал разбираться в Ваших дебрях, извините, но просто подскажу, попробуйте воспроизвести ситуацию в Matlab, если там со спектром все в порядке, значит просто ошибка программирования.
honeycomb0
Вот спектр комплексного сигнала (описанного выше) в Матлабе. Никаких аллиасов на 30 и 40кГц не видно...


Кстати, частота реконструкционного фильтра векторного генератора 10МГц.
hsoft
Если в Matlab все в порядке, я предполагаю, что у Вас в железе нет ошибок, тогда можно сделать следующее.
Создаете в Simulink модель формулы включая все этапы, исходный сигнал, оцифровка, работа с целыми числами, формула,
преобразование и наконец вывод спектра. И затем создать контрольные точки вывода данных в железе и в Matlab.
Данные должны совпадать с высокой точностью. Так пройдясь по всему тракту преобразований найдете где ошибка.
Если у Вас FPGA то это очень простая и интересная задача.
И еще возможно векторный генератор "врет" из за неправильных настроек, попробуйте сделать независимый
аналоговый или цифровой фильтр и отловить несущие на Ваши 30..40КГц, и посмотрите уровень сигнала,
ну или синусоиду на выходе узкополосного фильтра.

И наконец если в Matlab Вы не добавляли в формулу шумы специально, то у Вас очень большой уровень фоновых
шумов, и похоже это ошибка вывода спектра в Matlab, я не помню точно, но там есть настройка которая убирает
это, у Вас максимум уровень шумов на частоте 40кГц должен быть -70dB от 0 уровня.
stealth-coder
Пару раз встречался с проблемой появления непонятных гармоник, оказывалось, что они порождаются соединением генератора и анализатора кабелем, стоило прямое соединение разорвать и сделать "передачу по эфиру", т.е. к выходу генератора подключить антенну и ко входу анализатора тоже подключить антенну, гармоники исчезали.
_4afc_
Цитата(stealth-coder @ Feb 24 2017, 23:24) *
Пару раз встречался с проблемой появления непонятных гармоник, оказывалось, что они порождаются соединением генератора и анализатора кабелем, стоило прямое соединение разорвать и сделать "передачу по эфиру", т.е. к выходу генератора подключить антенну и ко входу анализатора тоже подключить антенну, гармоники исчезали.


Может генератор и анализатор по 10МГц затактировать от одного источника?
andyp
Цитата(honeycomb0 @ Feb 24 2017, 18:10) *
P.s. дописал и понял, насколько непросто кому-нибудь слету все это переварить...


Такой "алиасинг" появляется от нечетной нелинейности в тракте. Вполне возможно, что то, что Вы суете в генератор, где-то ограничивается. Попробуйте уменьшить амплитуду сигнала.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.