Нужно сделать переконфигурируемый во время работы блок FFT. Т.е. он должен уметь обсчитывать разное количество отсчетов (от 512 по степеням двойки до 8192).
Я предполагаю делать это следующим образом: использовать один блок FFT на 512 точек от Альтеры и при помощи алгоритма с прореживанием по частоте досчитывать недостающие "бабочки". Обсчет разного количества отсчетов будет достигаться входами в эти "бабочки" на разных этапах. Таким образом расчет минимального кол-ва точек (512) будет производиться исключительно ядром FFT, а, например, 1024 точек - будет предварительно считаться одна "бабочка" а потом последовательно (по 512) в два приема обсчитываться на ядре. Таким образом на выходе должна получиться последовательность из нужного количества отсчетов сигнала в частотной области.
Но у меня появилось два вопроса. Один частный, один глобальный.
Первый - судя по всему, перед тем, как отправить данные с бабочек на FFT ядро я должен эти данные переставить в соответствии с бит-реверсным порядком. Так ли это? И переставлять точки я должен в рамках пачек по 512 отсчетов или все, которые считаю в данный момент (этот вопрос не касается случая, когда нужно посчитать всего 512 точек )
Вопрос второй - меня несколько смущает то, что я вынужден из стандартного параллельного алгоритма БПФ делать последовательный вариант. Ведь для меня не критично - сколько тактов будет считаться это преобразование (в пределах разумного, конечно). Мне на вход приходят данные последовательно и выдаваться они должны также последовательно. Логично было бы организовать некий последовательный конвейер и все.
Хотелось бы знать мнение общественности имеется ли возможность считать преобразование Фурье более-менее последовательно без использования значительного количества ФИФО (применение которых, на мой взгляд, неизбежно если считать традиционные бабочки).
Из этих рассуждений возникает вопрос - а как работает Альтеровское ядро в режиме Stream. Если бы знать ее алгоритм, то можно было бы написать нечто похожее. Мануал по нему читал, но там все написано крайне поверхностно.
Заранее спасибо.