honeycomb0 0 24 февраля, 2017 Опубликовано 24 февраля, 2017 (изменено) · Жалоба Здравствуйте. Попробую описать свою проблему, над которой бьюсь неделю... Уверен, что решение лежит где-то на повернхости, и просто из-за моей нехватки опыта или фундаментального понимания процесса, оно (решение), продолжает ускользать. Надеюсь на помощь "зала" :) Итак, я пытаюсь сгенерировать комплесный сигнал (назовем его 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. дописал и понял, насколько непросто кому-нибудь слету все это переварить... Изменено 24 февраля, 2017 пользователем honeycomb0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hsoft 0 24 февраля, 2017 Опубликовано 24 февраля, 2017 (изменено) · Жалоба Не стал разбираться в Ваших дебрях, извините, но просто подскажу, попробуйте воспроизвести ситуацию в Matlab, если там со спектром все в порядке, значит просто ошибка программирования. Изменено 24 февраля, 2017 пользователем hsoft Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
honeycomb0 0 24 февраля, 2017 Опубликовано 24 февраля, 2017 (изменено) · Жалоба Вот спектр комплексного сигнала (описанного выше) в Матлабе. Никаких аллиасов на 30 и 40кГц не видно... Кстати, частота реконструкционного фильтра векторного генератора 10МГц. Изменено 24 февраля, 2017 пользователем honeycomb0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hsoft 0 24 февраля, 2017 Опубликовано 24 февраля, 2017 (изменено) · Жалоба Если в Matlab все в порядке, я предполагаю, что у Вас в железе нет ошибок, тогда можно сделать следующее. Создаете в Simulink модель формулы включая все этапы, исходный сигнал, оцифровка, работа с целыми числами, формула, преобразование и наконец вывод спектра. И затем создать контрольные точки вывода данных в железе и в Matlab. Данные должны совпадать с высокой точностью. Так пройдясь по всему тракту преобразований найдете где ошибка. Если у Вас FPGA то это очень простая и интересная задача. И еще возможно векторный генератор "врет" из за неправильных настроек, попробуйте сделать независимый аналоговый или цифровой фильтр и отловить несущие на Ваши 30..40КГц, и посмотрите уровень сигнала, ну или синусоиду на выходе узкополосного фильтра. И наконец если в Matlab Вы не добавляли в формулу шумы специально, то у Вас очень большой уровень фоновых шумов, и похоже это ошибка вывода спектра в Matlab, я не помню точно, но там есть настройка которая убирает это, у Вас максимум уровень шумов на частоте 40кГц должен быть -70dB от 0 уровня. Изменено 24 февраля, 2017 пользователем hsoft Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stealth-coder 2 24 февраля, 2017 Опубликовано 24 февраля, 2017 · Жалоба Пару раз встречался с проблемой появления непонятных гармоник, оказывалось, что они порождаются соединением генератора и анализатора кабелем, стоило прямое соединение разорвать и сделать "передачу по эфиру", т.е. к выходу генератора подключить антенну и ко входу анализатора тоже подключить антенну, гармоники исчезали. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 25 25 февраля, 2017 Опубликовано 25 февраля, 2017 · Жалоба Пару раз встречался с проблемой появления непонятных гармоник, оказывалось, что они порождаются соединением генератора и анализатора кабелем, стоило прямое соединение разорвать и сделать "передачу по эфиру", т.е. к выходу генератора подключить антенну и ко входу анализатора тоже подключить антенну, гармоники исчезали. Может генератор и анализатор по 10МГц затактировать от одного источника? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andyp 9 25 февраля, 2017 Опубликовано 25 февраля, 2017 · Жалоба P.s. дописал и понял, насколько непросто кому-нибудь слету все это переварить... Такой "алиасинг" появляется от нечетной нелинейности в тракте. Вполне возможно, что то, что Вы суете в генератор, где-то ограничивается. Попробуйте уменьшить амплитуду сигнала. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться