...сначала проверил просто голый FFT2048. Нужно не менее 61 блока в сек (поток 125кГц). Гонит 118 блоков в сек. Ну раз есть запас начал накручивать. Добавил еще расчет магнитуды, скорость упала до 51 блока. Тормозит sqrtf(). Вспомнил про
Fast SQRT - поставил, разогнался. Пошел еще дальше, в итоге собрал: домножение на оконую функцию входных данных -> FFT2048 -> расчет магнитуды -> усреднение по 4 блокам -> Reorder index. Получилось 89 блоков в сек! Есть "место" для демодулятора, но если AM/SSB еще нормально будет, то для FM нужен быстрый atan2(). Вспомнил про CORDIC, мало того что он умеет atan2() так еще и быстро считает магнитуду вектора. Нашел его реализацию и рядом с ним лежал FFT в fixed point - проверил на ПК его в связке с cordic. Работает - буду гонять на MicroBlaze. Если "взлетит" - можно выкинуть FPU из MicroBlaze и еще освободится место на FPGA.