Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как работает FFT корка от Альтеры?
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
_Dima_
Нужно сделать переконфигурируемый во время работы блок FFT. Т.е. он должен уметь обсчитывать разное количество отсчетов (от 512 по степеням двойки до 8192).
Я предполагаю делать это следующим образом: использовать один блок FFT на 512 точек от Альтеры и при помощи алгоритма с прореживанием по частоте досчитывать недостающие "бабочки". Обсчет разного количества отсчетов будет достигаться входами в эти "бабочки" на разных этапах. Таким образом расчет минимального кол-ва точек (512) будет производиться исключительно ядром FFT, а, например, 1024 точек - будет предварительно считаться одна "бабочка" а потом последовательно (по 512) в два приема обсчитываться на ядре. Таким образом на выходе должна получиться последовательность из нужного количества отсчетов сигнала в частотной области.

Но у меня появилось два вопроса. Один частный, один глобальный.
Первый - судя по всему, перед тем, как отправить данные с бабочек на FFT ядро я должен эти данные переставить в соответствии с бит-реверсным порядком. Так ли это? И переставлять точки я должен в рамках пачек по 512 отсчетов или все, которые считаю в данный момент (этот вопрос не касается случая, когда нужно посчитать всего 512 точек )

Вопрос второй - меня несколько смущает то, что я вынужден из стандартного параллельного алгоритма БПФ делать последовательный вариант. Ведь для меня не критично - сколько тактов будет считаться это преобразование (в пределах разумного, конечно). Мне на вход приходят данные последовательно и выдаваться они должны также последовательно. Логично было бы организовать некий последовательный конвейер и все.
Хотелось бы знать мнение общественности имеется ли возможность считать преобразование Фурье более-менее последовательно без использования значительного количества ФИФО (применение которых, на мой взгляд, неизбежно если считать традиционные бабочки).
Из этих рассуждений возникает вопрос - а как работает Альтеровское ядро в режиме Stream. Если бы знать ее алгоритм, то можно было бы написать нечто похожее. Мануал по нему читал, но там все написано крайне поверхностно.

Заранее спасибо.
Doka
Цитата(_Dima_ @ Jul 27 2006, 15:58) *
Нужно сделать переконфигурируемый во время работы блок FFT. Т.е. он должен уметь обсчитывать разное количество отсчетов (от 512 по степеням двойки до 8192).
...................................
Из этих рассуждений возникает вопрос - а как работает Альтеровское ядро в режиме Stream. Если бы знать ее алгоритм, то можно было бы написать нечто похожее. Мануал по нему читал, но там все написано крайне поверхностно.


может вам как-то поможет описание к IP FFT от XILINX Нажмите для просмотра прикрепленного файла
у них там при использовании в качестве базовой операции radix4 - на лету перенастраиваемая размерность БПФ - от 64 до 8192. (к сожалению, только описание - поскольку саму IP-корку можно использовать только с продукцией данного вендора)
но тем не менее: расписана теория и приведены пакетные и поточные структуры построения блоков.
RobFPGA
Приветствую!

Если хотите обрабатывать данные в FFT последовательно и с возможностью переключения размерности FFT то следует реализовывать pipeline streamig структуру FFT radix-2^2.
Плюсы : простая регулярная структура, время обработки равно длине FFT в тактах,(обработка данных конвеером ) , легкость перереключения длинны обработки, минимальный объем RAM для буферов (при полной разрядности на выходе).
Минусы - много умножителей = log4(N)-1 комплексных умножителя, битреверсный выход.

В для примера исходники этого FFT (не совсем оптимальные но для основы сгодится) можно выдернуть из Synplify DSP.

Удачи! Rob.
_Dima_
Всем спасибо за ответы.

Пищи для размышлений прибавилось.

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