|
FFT, работа с коркой FFT от ISE |
|
|
|
Jan 26 2014, 04:36
|
Частый гость
 
Группа: Свой
Сообщений: 85
Регистрация: 5-07-06
Из: Барнаул
Пользователь №: 18 592

|
Цитата(NikSave @ Jan 26 2014, 11:17)  Вставил в проект корку FFT, принял данные (Im, Re). Построил спектр. Вроде все нормально, но спектр постоянно "прыгает". Что бы его угомонить приходиться очень сильно усреднять. Может есть какие тонкости в этом вопросе? Подскажите пожалуйста. под "прыгает" я так понимаю резкое увеличение уровня шума. Такое часто случается в проектах , когда сигнал в окне "рвётся" (исказили/потеряли отсчёт). Какие настройки IP ядра используете? С округлением или без? Цитата И еще: как выявить гармонику символьной скорости и несущей частоты? Заранее спасибо за ответы. А что за сигнал то на входе?
|
|
|
|
|
Jan 26 2014, 04:57
|
Частый гость
 
Группа: Участник
Сообщений: 87
Регистрация: 26-05-09
Пользователь №: 49 592

|
Цитата(NahaL @ Jan 26 2014, 07:36)  под "прыгает" я так понимаю резкое увеличение уровня шума. Такое часто случается в проектах , когда сигнал в окне "рвётся" (исказили/потеряли отсчёт). Какие настройки IP ядра используете? С округлением или без?
А что за сигнал то на входе? Про уровень шума примерно Вы правы. IP работает без округления (кажется, сейчас не помню), radix-4 на переменное число точек (мах 32767), сигнал полосовой с оцифровокой почти 200 МГц, перед БПФ смешается в ноль, и фильтруется. Отсчеты идут в БПФ непрерывно на 100 МГц (I, Q). Так что на входе теряться нечему. На выходе все отсчеты подбираю (неоднократно проверял). Может это такая особенность данной корки?
|
|
|
|
|
Jan 26 2014, 06:09
|
Частый гость
 
Группа: Участник
Сообщений: 87
Регистрация: 26-05-09
Пользователь №: 49 592

|
Цитата(NahaL @ Jan 26 2014, 08:14)  radix-4 на сколько я помню не может работать непрерывно, ему надо время на обработку... Попробуйте использовать Piplend. Может в этом проблема. А окно накладываете? Ну да непрерывно он работать не может. Но насколько я понимаю корка берет нужно число отсчетов и сама прекращает их принимать на время обработки. А данные на вход как подавались так и подаются. Или я неправ? И что значит накладываю окно. В смысле применяю оконную функцию? Тогда да. Но только к готовобу БПФ, уже в компютере перед выводом на экран спектра. Как это делается написано у Лайноса. И что насчет гармоник символьной и несущей - есть идеи?
|
|
|
|
|
Jan 26 2014, 06:32
|
Частый гость
 
Группа: Свой
Сообщений: 85
Регистрация: 5-07-06
Из: Барнаул
Пользователь №: 18 592

|
Цитата(NikSave @ Jan 26 2014, 13:09)  Ну да непрерывно он работать не может. Но насколько я понимаю корка берет нужно число отсчетов и сама прекращает их принимать на время обработки. А данные на вход как подавались так и подаются. Или я неправ? Я когда переходил с Piplend на Radix, то данные набирал, выдерживал сигналы старта преобразования, плюс там еще сигнал выгрузки выходных данных. Сейчас уже точно не вспомню. Но что блок данных набирал точно для окна - это факт. Цитата И что значит накладываю окно. В смысле применяю оконную функцию? Тогда да. Окно накладывал Blackman-farris'а, на входные данные. Хотел сначала без него, но получилсь некрасиво. Цитата Но только к готовобу БПФ, уже в компьтере перед выводом на экран спектра. Как это делается написано у Лайноса. Можно ссылку на литературу? Цитата И что насчет гармоник символьной и несущей - есть идеи? Если у вас во входном сигнале присутствует узкополосный, то его несущую определить можно, но с некоторой точностью, в зависимости от размерности FFT.(Так иногда и делал) Так же можно оценить занимаемую полосу. Но это всё "как вижу" метод. Определение символьной скорости - это уже анализ сигнала. Могу исходный код поискать, но это только завтра.
Сообщение отредактировал NahaL - Jan 26 2014, 06:34
|
|
|
|
|
Jan 26 2014, 07:19
|
Частый гость
 
Группа: Участник
Сообщений: 87
Регистрация: 26-05-09
Пользователь №: 49 592

|
Цитата(NahaL @ Jan 26 2014, 09:32)  Я когда переходил с Piplend на Radix, то данные набирал, выдерживал сигналы старта преобразования, плюс там еще сигнал выгрузки выходных данных. Сейчас уже точно не вспомню. Но что блок данных набирал точно для окна - это факт.
Окно накладывал Blackman-farris'а, на входные данные. Хотел сначала без него, но получилсь некрасиво.
Можно ссылку на литературу?
Если у вас во входном сигнале присутствует узкополосный, то его несущую определить можно, но с некоторой точностью, в зависимости от размерности FFT.(Так иногда и делал) Так же можно оценить занимаемую полосу. Но это всё "как вижу" метод. Определение символьной скорости - это уже анализ сигнала.
Могу исходный код поискать, но это только завтра. сигнал старта я повесил на еденицу (возможно зря и следует его все-таки формировать, попробую). Данные выгружал разумеется по соответсвующему сигналу. Литература "Цифровая обработка сигналов Р.Лайонс" - мне, кажется эту книжку все знают. :-)
|
|
|
|
|
Jan 26 2014, 08:13
|
Частый гость
 
Группа: Свой
Сообщений: 85
Регистрация: 5-07-06
Из: Барнаул
Пользователь №: 18 592

|
Цитата(NikSave @ Jan 26 2014, 14:19)  сигнал старта я повесил на еденицу (возможно зря и следует его все-таки формировать, попробую). Данные выгружал разумеется по соответсвующему сигналу. Литература "Цифровая обработка сигналов Р.Лайонс" - мне, кажется эту книжку все знают. :-) Интересно узнать про оконную функцию после БПФ, а не до...
|
|
|
|
|
Jan 26 2014, 13:20
|
Частый гость
 
Группа: Участник
Сообщений: 87
Регистрация: 26-05-09
Пользователь №: 49 592

|
Цитата(NahaL @ Jan 26 2014, 11:13)  Интересно узнать про оконную функцию после БПФ, а не до... стр. 479 указанной книги Цитата(Lmx2315 @ Jan 26 2014, 14:47)  ..если вы не применяете окно перед БПФ то применяется то что по умолчанию - прямоугольное окно. Оно выдаёт красивую картинку только если у вас в спектре одна большая гармоника и она при этом кратна частоте оцифровки, в моменты когда эта гармоника не кратна - её энергия размазывается по всему спектру что проявляется в визуальном подпрыгивании шумов. Чтобы шумы не скакали - применяйте окно перед обработкой БПФ http://www.dsplib.ru/content/win/win.html . Примерно так я и предпологал. Теперь придеться попробовать.
|
|
|
|
|
Jan 28 2014, 05:07
|

Частый гость
 
Группа: Свой
Сообщений: 116
Регистрация: 13-12-12
Пользователь №: 74 831

|
Цитата(NikSave @ Jan 26 2014, 13:09)  Ну да непрерывно он работать не может. Но насколько я понимаю корка берет нужно число отсчетов и сама прекращает их принимать на время обработки. А данные на вход как подавались так и подаются. Или я неправ? Я делаю так, сбрасываю сигнал в 0, фильтрую CIC фильтром с децимацией 180, накапливаю в ОЗУ (2048 отсчетов) и запускаю FFT. Пока копится следующая пачка 2048, FFT успевает сам считать накопленные данные, просчитать, выдать результат, я его обрабатываю и так до следующей пачки, то есть сигнал у меня обрабатывается непрерывно...
--------------------
|
|
|
|
|
Jan 28 2014, 14:29
|
Частый гость
 
Группа: Участник
Сообщений: 87
Регистрация: 26-05-09
Пользователь №: 49 592

|
Цитата(gibson1980 @ Jan 28 2014, 08:07)  Я делаю так, сбрасываю сигнал в 0, фильтрую CIC фильтром с децимацией 180, накапливаю в ОЗУ (2048 отсчетов) и запускаю FFT. Пока копится следующая пачка 2048, FFT успевает сам считать накопленные данные, просчитать, выдать результат, я его обрабатываю и так до следующей пачки, то есть сигнал у меня обрабатывается непрерывно... А зачем на входе ставить память? если после накопления нужного числа отсчетов он сам прекращает их принимать и начинает обработку. Если внимательно посмотреть описание FFT, то там есть возможность start повесить на еденицу и данные качать на вход непрерывно без буферной памяти. А вот память стоит повесить на выход что бы в нее записать на скорости обработки (высокой), а вот считать их уже на низкой (на скорости интерфейса. например PCI). Ну у меня так все реализовано.
|
|
|
|
|
Jan 28 2014, 15:07
|

Частый гость
 
Группа: Свой
Сообщений: 116
Регистрация: 13-12-12
Пользователь №: 74 831

|
Интересно, надо поразбираться. Но у меня накапливается не ровно 2048, а то больше то меньше (это сделано для подстройки по тактам, ДАПФ, БПФ надо стартовать с границы информации, за 1 такт инфы накапливается 4 БПФа), а вот на выходе да, инфа накапливается в ОЗУ для дальнейшего усреднения и обработки, всего 200 БПФов. п.с. Кстати, во время работы БПФа, в твоем случае, может пропасть несколько следующих тактов, может это и отразится на спектре, тоже надо проверять, отчасти для этого я и ставил вх. буферное ОЗУ. У меня после конвертора данные идут на тактовой 73 МГц, после СИСа с децимацией соответственно тактовая уже в 180 раз меньше, а пока БПФ будет их обрабатывать да еще на выход отправлять, пройдет уже не мало информации до старта следующего БПФа, может в этом у тебя и косяк, у меня это не заметно так как у меня инфа в виде ЧТ манипуляции, это обычные синусоидальные сигналы разнесенные на 20кГц, у меня просто вылазит маленькая палка, отстоящая на 20 кГц, но она мне и не мешает...
Сообщение отредактировал gibson1980 - Jan 28 2014, 15:18
--------------------

|
|
|
|
|
Jan 29 2014, 15:20
|
Частый гость
 
Группа: Участник
Сообщений: 87
Регистрация: 26-05-09
Пользователь №: 49 592

|
Цитата(gibson1980 @ Jan 28 2014, 18:07)  Интересно, надо поразбираться. Но у меня накапливается не ровно 2048, а то больше то меньше (это сделано для подстройки по тактам, ДАПФ, БПФ надо стартовать с границы информации, за 1 такт инфы накапливается 4 БПФа), а вот на выходе да, инфа накапливается в ОЗУ для дальнейшего усреднения и обработки, всего 200 БПФов. п.с. Кстати, во время работы БПФа, в твоем случае, может пропасть несколько следующих тактов, может это и отразится на спектре, тоже надо проверять, отчасти для этого я и ставил вх. буферное ОЗУ. У меня после конвертора данные идут на тактовой 73 МГц, после СИСа с децимацией соответственно тактовая уже в 180 раз меньше, а пока БПФ будет их обрабатывать да еще на выход отправлять, пройдет уже не мало информации до старта следующего БПФа, может в этом у тебя и косяк, у меня это не заметно так как у меня инфа в виде ЧТ манипуляции, это обычные синусоидальные сигналы разнесенные на 20кГц, у меня просто вылазит маленькая палка, отстоящая на 20 кГц, но она мне и не мешает... Так что Вы усредняете БПФ по 200 выборкам БПФов? Если так то неслабо. Я усредняю примерно по 10-15 и при этом на экране спектр не очень живой. Правда я усреднение делаю уже программно на компьютере перед выводом на экран.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|