реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> FFT, работа с коркой FFT от ISE
NikSave
сообщение Jan 26 2014, 04:17
Сообщение #1


Частый гость
**

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



Вставил в проект корку FFT, принял данные (Im, Re). Построил спектр. Вроде все нормально, но спектр постоянно "прыгает". Что бы его угомонить приходиться очень сильно усреднять. Может есть какие тонкости в этом вопросе? Подскажите пожалуйста. И еще: как выявить гармонику символьной скорости и несущей частоты? Заранее спасибо за ответы.
Go to the top of the page
 
+Quote Post
NahaL
сообщение Jan 26 2014, 04:36
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 85
Регистрация: 5-07-06
Из: Барнаул
Пользователь №: 18 592



Цитата(NikSave @ Jan 26 2014, 11:17) *
Вставил в проект корку FFT, принял данные (Im, Re). Построил спектр. Вроде все нормально, но спектр постоянно "прыгает". Что бы его угомонить приходиться очень сильно усреднять. Может есть какие тонкости в этом вопросе? Подскажите пожалуйста.

под "прыгает" я так понимаю резкое увеличение уровня шума. Такое часто случается в проектах , когда сигнал в окне "рвётся" (исказили/потеряли отсчёт). Какие настройки IP ядра используете? С округлением или без?
Цитата
И еще: как выявить гармонику символьной скорости и несущей частоты? Заранее спасибо за ответы.

А что за сигнал то на входе?
Go to the top of the page
 
+Quote Post
NikSave
сообщение Jan 26 2014, 04:57
Сообщение #3


Частый гость
**

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



Цитата(NahaL @ Jan 26 2014, 07:36) *
под "прыгает" я так понимаю резкое увеличение уровня шума. Такое часто случается в проектах , когда сигнал в окне "рвётся" (исказили/потеряли отсчёт). Какие настройки IP ядра используете? С округлением или без?

А что за сигнал то на входе?


Про уровень шума примерно Вы правы. IP работает без округления (кажется, сейчас не помню), radix-4 на переменное число точек (мах 32767), сигнал полосовой с оцифровокой почти 200 МГц, перед БПФ смешается в ноль, и фильтруется. Отсчеты идут в БПФ непрерывно на 100 МГц (I, Q). Так что на входе теряться нечему. На выходе все отсчеты подбираю (неоднократно проверял). Может это такая особенность данной корки?
Go to the top of the page
 
+Quote Post
NahaL
сообщение Jan 26 2014, 05:14
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 85
Регистрация: 5-07-06
Из: Барнаул
Пользователь №: 18 592



radix-4 на сколько я помню не может работать непрерывно, ему надо время на обработку...
Попробуйте использовать Piplend. Может в этом проблема. А окно накладываете?
Go to the top of the page
 
+Quote Post
NikSave
сообщение Jan 26 2014, 06:09
Сообщение #5


Частый гость
**

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



Цитата(NahaL @ Jan 26 2014, 08:14) *
radix-4 на сколько я помню не может работать непрерывно, ему надо время на обработку...
Попробуйте использовать Piplend. Может в этом проблема. А окно накладываете?


Ну да непрерывно он работать не может. Но насколько я понимаю корка берет нужно число отсчетов и сама прекращает их принимать на время обработки. А данные на вход как подавались так и подаются. Или я неправ? И что значит накладываю окно. В смысле применяю оконную функцию? Тогда да. Но только к готовобу БПФ, уже в компютере перед выводом на экран спектра. Как это делается написано у Лайноса. И что насчет гармоник символьной и несущей - есть идеи?
Go to the top of the page
 
+Quote Post
NahaL
сообщение Jan 26 2014, 06:32
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 85
Регистрация: 5-07-06
Из: Барнаул
Пользователь №: 18 592



Цитата(NikSave @ Jan 26 2014, 13:09) *
Ну да непрерывно он работать не может. Но насколько я понимаю корка берет нужно число отсчетов и сама прекращает их принимать на время обработки. А данные на вход как подавались так и подаются. Или я неправ?

Я когда переходил с Piplend на Radix, то данные набирал, выдерживал сигналы старта преобразования, плюс там еще сигнал выгрузки выходных данных. Сейчас уже точно не вспомню. Но что блок данных набирал точно для окна - это факт.
Цитата
И что значит накладываю окно. В смысле применяю оконную функцию? Тогда да.

Окно накладывал Blackman-farris'а, на входные данные. Хотел сначала без него, но получилсь некрасиво.
Цитата
Но только к готовобу БПФ, уже в компьтере перед выводом на экран спектра. Как это делается написано у Лайноса.

Можно ссылку на литературу?
Цитата
И что насчет гармоник символьной и несущей - есть идеи?

Если у вас во входном сигнале присутствует узкополосный, то его несущую определить можно, но с некоторой точностью, в зависимости от размерности FFT.(Так иногда и делал) Так же можно оценить занимаемую полосу. Но это всё "как вижу" метод.
Определение символьной скорости - это уже анализ сигнала.

Могу исходный код поискать, но это только завтра.

Сообщение отредактировал NahaL - Jan 26 2014, 06:34
Go to the top of the page
 
+Quote Post
NikSave
сообщение Jan 26 2014, 07:19
Сообщение #7


Частый гость
**

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



Цитата(NahaL @ Jan 26 2014, 09:32) *
Я когда переходил с Piplend на Radix, то данные набирал, выдерживал сигналы старта преобразования, плюс там еще сигнал выгрузки выходных данных. Сейчас уже точно не вспомню. Но что блок данных набирал точно для окна - это факт.

Окно накладывал Blackman-farris'а, на входные данные. Хотел сначала без него, но получилсь некрасиво.

Можно ссылку на литературу?

Если у вас во входном сигнале присутствует узкополосный, то его несущую определить можно, но с некоторой точностью, в зависимости от размерности FFT.(Так иногда и делал) Так же можно оценить занимаемую полосу. Но это всё "как вижу" метод.
Определение символьной скорости - это уже анализ сигнала.

Могу исходный код поискать, но это только завтра.

сигнал старта я повесил на еденицу (возможно зря и следует его все-таки формировать, попробую). Данные выгружал разумеется по соответсвующему сигналу.
Литература "Цифровая обработка сигналов Р.Лайонс" - мне, кажется эту книжку все знают. :-)
Go to the top of the page
 
+Quote Post
NahaL
сообщение Jan 26 2014, 08:13
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 85
Регистрация: 5-07-06
Из: Барнаул
Пользователь №: 18 592



Цитата(NikSave @ Jan 26 2014, 14:19) *
сигнал старта я повесил на еденицу (возможно зря и следует его все-таки формировать, попробую). Данные выгружал разумеется по соответсвующему сигналу.
Литература "Цифровая обработка сигналов Р.Лайонс" - мне, кажется эту книжку все знают. :-)

Интересно узнать про оконную функцию после БПФ, а не до...
Go to the top of the page
 
+Quote Post
Serg76
сообщение Jan 26 2014, 08:43
Сообщение #9


Профессионал
*****

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Цитата(NikSave @ Jan 26 2014, 10:09) *
И что насчет гармоник символьной и несущей - есть идеи?

для цифровых АФМ сигналов самый простой способ определить символьную скорость - это пропустить его через амплитудный детектор, на выходе будет присутствовать гармоника символьной скорости, берете FFT сигнала с выхода АД и получаете искомую скорость. Для определения отстройки по несущей необходимо снять модуляцию с сигнала путем соответствующего возведения в нужную степень - в квадрат для BPSK, в четвертую для QPSK и различных "квадратных" КАМ, в восьмую для 8PSK. кстати, при этом можно также определить и символьную скорость по разнице гармоник. если в сигнале содержаться какие-нибудь известные последовательности достаточной длины в виде синхровставок или пилотов, то манипуляцию можно снять путем перемножения сигнала с комплексно-сопряженной известной последовательностью.

P.S. поищите по форуме, было уже неоднократно
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Jan 26 2014, 11:47
Сообщение #10


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



QUOTE (NikSave @ Jan 26 2014, 10:09) *
Или я неправ? И что значит накладываю окно. В смысле применяю оконную функцию? Тогда да. Но только к готовобу БПФ, уже в компютере перед выводом на экран спектра.

..если вы не применяете окно перед БПФ то применяется то что по умолчанию - прямоугольное окно. Оно выдаёт красивую картинку только если у вас в спектре одна большая гармоника и она при этом кратна частоте оцифровки, в моменты когда эта гармоника не кратна - её энергия размазывается по всему спектру что проявляется в визуальном подпрыгивании шумов. Чтобы шумы не скакали - применяйте окно перед обработкой БПФ http://www.dsplib.ru/content/win/win.html .


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
NikSave
сообщение Jan 26 2014, 13:20
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 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 .


Примерно так я и предпологал. Теперь придеться попробовать.
Go to the top of the page
 
+Quote Post
gibson1980
сообщение Jan 28 2014, 05:07
Сообщение #12


Частый гость
**

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



Цитата(NikSave @ Jan 26 2014, 13:09) *
Ну да непрерывно он работать не может. Но насколько я понимаю корка берет нужно число отсчетов и сама прекращает их принимать на время обработки. А данные на вход как подавались так и подаются. Или я неправ?

Я делаю так, сбрасываю сигнал в 0, фильтрую CIC фильтром с децимацией 180, накапливаю в ОЗУ (2048 отсчетов) и запускаю FFT. Пока копится следующая пачка 2048, FFT успевает сам считать накопленные данные, просчитать, выдать результат, я его обрабатываю и так до следующей пачки, то есть сигнал у меня обрабатывается непрерывно...


--------------------
Go to the top of the page
 
+Quote Post
NikSave
сообщение Jan 28 2014, 14:29
Сообщение #13


Частый гость
**

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



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


А зачем на входе ставить память? если после накопления нужного числа отсчетов он сам прекращает их принимать и начинает обработку. Если внимательно посмотреть описание FFT, то там есть возможность start повесить на еденицу и данные качать на вход непрерывно без буферной памяти. А вот память стоит повесить на выход что бы в нее записать на скорости обработки (высокой), а вот считать их уже на низкой (на скорости интерфейса. например PCI). Ну у меня так все реализовано.
Go to the top of the page
 
+Quote Post
gibson1980
сообщение Jan 28 2014, 15:07
Сообщение #14


Частый гость
**

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



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

Сообщение отредактировал gibson1980 - Jan 28 2014, 15:18


--------------------
Go to the top of the page
 
+Quote Post
NikSave
сообщение Jan 29 2014, 15:20
Сообщение #15


Частый гость
**

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



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

Так что Вы усредняете БПФ по 200 выборкам БПФов? Если так то неслабо. Я усредняю примерно по 10-15 и при этом на экране спектр не очень живой. Правда я усреднение делаю уже программно на компьютере перед выводом на экран.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th June 2025 - 14:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01485 секунд с 7
ELECTRONIX ©2004-2016