Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: IP-core ifft
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
_Anatoliy
Всем доброго времени суток.
Вопрос по Альтеровской IP-core ifft,почему-то на выходе вижу постоянную составляющую.На вход подаю что-то типа дельта-функции(все данные в нуле, по индексу 500 - константа).На картинке результат FFT от захваченных данных с выхода IFFT,видно мой сигнал с уровнем 100дБ на правильной частоте и видно что есть большой уровень на нулевой частоте.Кто нибудь сталкивался?
almost
Цитата(_Anatoliy @ Oct 3 2011, 19:00) *
Всем доброго времени суток.
Вопрос по Альтеровской IP-core ifft,почему-то на выходе вижу постоянную составляющую.На вход подаю что-то типа дельта-функции(все данные в нуле, по индексу 500 - константа).На картинке результат FFT от захваченных данных с выхода IFFT,видно мой сигнал с уровнем 100дБ на правильной частоте и видно что есть большой уровень на нулевой частоте.Кто нибудь сталкивался?


А можно посмотреть осциллограмму входного сигнала? (а то что то тяжело понять что вы подаете на вход) Операция как я понимаю fft а потом ifft. Ну вообщем опишите поподробней что вы конкретно делаете.
_Anatoliy
Цитата(almost @ Oct 3 2011, 21:15) *
А можно посмотреть осциллограмму входного сигнала? (а то что то тяжело понять что вы подаете на вход) Операция как я понимаю fft а потом ifft. Ну вообщем опишите поподробней что вы конкретно делаете.

Речь идёт об Альтеровской IP-core fft в режиме обратного преобразования Фурье. На вход я подаю тест-вектор следующего вида:
tb(0) = 0;
tb(1) = 0;
tb(2) = 0;
...
tb(500) = 10000 + j10000;
...
tb(8190) = 0;
tb(8191) = 0;

Он имеет всего один отсчёт отличный от нуля. После выполнения ifft в IP-core, я захватываю результат вычисления и скармливаю его матлабу. В матлабе делаю прямое преобразование Фурье,его результат (начало частотной оси) на картинке.Откуда берётся постоянная составляющая?
almost
Цитата(_Anatoliy @ Oct 4 2011, 09:15) *
Речь идёт об Альтеровской IP-core fft в режиме обратного преобразования Фурье. На вход я подаю тест-вектор следующего вида:
tb(0) = 0;
tb(1) = 0;
tb(2) = 0;
...
tb(500) = 10000 + j10000;
...
tb(8190) = 0;
tb(8191) = 0;

Он имеет всего один отсчёт отличный от нуля. После выполнения ifft в IP-core, я захватываю результат вычисления и скармливаю его матлабу. В матлабе делаю прямое преобразование Фурье,его результат (начало частотной оси) на картинке.Откуда берётся постоянная составляющая?


По сути, после обратного преобразования фурье вы должны получить синус (отчеты в частотной области, т.е. ваша исходная дельта функция является спектром синуса, смещенного по фазе). Проверьте получается ли он и насколько он чистый (должен быть идеально чистый)?
P.S. По идее такого как у Вас не должно получится, надо смотреть результат выполнения каждого этапа, чтобы определить откуда идут ошибки.
_Anatoliy
Цитата(almost @ Oct 4 2011, 06:35) *
По сути, после обратного преобразования фурье вы должны получить синус (отчеты в частотной области, т.е. ваша исходная дельта функция является спектром синуса, смещенного по фазе). Проверьте получается ли он и насколько он чистый (должен быть идеально чистый)?
P.S. По идее такого как у Вас не должно получится, надо смотреть результат выполнения каждого этапа, чтобы определить откуда идут ошибки.

Спасибо,но всё это я прекрасно понимаю,отсюда и вопрос : откуда ноги растут?Не могу же я влезть внутрь IP для контроля каждого этапа.Думал может кто-то делал ifft c этой коркой и поделится впечатлениями.
А синус на выходе есть,в спектре его видно с уровнем 100дБ.
Lmx2315
..может как-то на это повлиять формат данных после ip ifft ? Может он знаковый а воспринимается как без знаковый или наоборот?
almost
Цитата(_Anatoliy @ Oct 4 2011, 09:49) *
Спасибо,но всё это я прекрасно понимаю,отсюда и вопрос : откуда ноги растут?Не могу же я влезть внутрь IP для контроля каждого этапа.Думал может кто-то делал ifft c этой коркой и поделится впечатлениями.
А синус на выходе есть,в спектре его видно с уровнем 100дБ.


Тогда не понятно как Вы получили подобную картинку =) Сами же говорите что в спектре его видно с уровнем 100 дБ (на картинке 100 дБ не видно), вы ведь его и вычисляете. БПФ и ОБПФ эта корка вычисляет без ошибок, это точно.
_Anatoliy
Цитата(Lmx2315 @ Oct 4 2011, 07:11) *
..может как-то на это повлиять формат данных после ip ifft ? Может он знаковый а воспринимается как без знаковый или наоборот?

Вот данные с выхода ifft.
Разрядность входа и выхода корки - 16 бит.

Цитата(almost @ Oct 4 2011, 07:15) *
Тогда не понятно как Вы получили подобную картинку =) Сами же говорите что в спектре его видно с уровнем 100 дБ (на картинке 100 дБ не видно), вы ведь его и вычисляете. БПФ и ОБПФ эта корка вычисляет без ошибок, это точно.

Палка по оси Х между 0,5 и 0,6 на картинке какой уровень имеет?100дБ, это и есть наш синус.
almost
Синус получается достаточно корявый, странно как то.
Вечером попробую то же самое проделать в dsp билдере.
Нажмите для просмотра прикрепленного файла

Цитата(_Anatoliy @ Oct 4 2011, 10:30) *
Палка по оси Х между 0,5 и 0,6 на картинке какой уровень имеет?100дБ, это и есть наш синус.


А, сорри. Там просто не было указано, что шкала в дБ.
_Anatoliy
Цитата(almost @ Oct 4 2011, 07:50) *
Вечером попробую то же самое проделать в dsp билдере.

Спасибо.

А как Вы строили синус?У меня получается не очень корявый(это real):
almost
Цитата(_Anatoliy @ Oct 4 2011, 11:04) *
Спасибо.

А как Вы строили синус?У меня получается не очень корявый(это real):


Модуль взял. А как же фазы? )
_Anatoliy
Цитата(almost @ Oct 4 2011, 08:33) *
Модуль взял. А как же фазы? )

А,ну да,если модуль то вид такой же.
Странно это всё...

Взял другую корку,поновее - всё прекрасно.Вопрос пока закрываю,всем спасибо.
almost
Цитата(_Anatoliy @ Oct 4 2011, 12:46) *
А,ну да,если модуль то вид такой же.
Странно это всё...

Взял другую корку,поновее - всё прекрасно.Вопрос пока закрываю,всем спасибо.


Так, а что за корка была и какую взяли? (ну в смысле версия 11.0/9.0/..)
_Anatoliy
Цитата(almost @ Oct 4 2011, 10:15) *
Так, а что за корка была и какую взяли? (ну в смысле версия 11.0/9.0/..)

Взял 9.0 а была 6.0,когда-то давно сами ломали,может не доломали чего laughing.gif
Реанимирую древний проект.
Чиповод
Использовал корку FFT в Quartus 9.0, давно дело было. Долго не мог запустить в режиме FFT->IFFT. При подаче на вход только real сигнала на выходе FFT имел не симметричный спектр. Половинки были очень похожи, но не идентичны, видимо какие-то фокусы округления. В результате на выходе получал кривой синус (на входе был тоже синус), вроде похожее на картинку выше. У меня сложилось впечатление что эта корка предназначена для работы с комплексным сигналом.
almost
Цитата(Чиповод @ Oct 5 2011, 12:00) *
Использовал корку FFT в Quartus 9.0, давно дело было. Долго не мог запустить в режиме FFT->IFFT. При подаче на вход только real сигнала на выходе FFT имел не симметричный спектр. Половинки были очень похожи, но не идентичны, видимо какие-то фокусы округления. В результате на выходе получал кривой синус (на входе был тоже синус), вроде похожее на картинку выше. У меня сложилось впечатление что эта корка предназначена для работы с комплексным сигналом.


Хммм. А можете предоставить схему подключения? Какие параметры были заданы? Может вы взяли данные 8 разрядов, а точность поворачивающего множителя у вас к примеру 6 (twidle). БПФ это априори работа с комплексным сигналом =)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.