[an error occurred while processing this directive]
|
Сначала о чем речь. FFT с прореживанием по времени, по основанию 4, входные данные комплексные, 16-ти разрядные, в естественном порядке.
Выходные тоже в естественном порядке. Дигит-реверс встроен в последнюю ступень. Используется блочная плавающая запятая. И вычисление блочной экспоненты для след. ступени и нормализация данных встроены в бабочки. В TI-шной библиотеке я такого Фурье не нашел.
Сравнение затруднительно. Но у TI есть бенчмарки на битреверс, а в библиотеке есть функция bexp, вычисляющая бл. экспоненту, но не делающая нормализацию. И есть функция компл. FFT по основанию 4 с указанием числа циклов, за которые она выполняется.
В общем из 3-х этих функций можно скомбинировать аналог моей. Правда нормализации в комбинации не будет, но бог с ней.
По моей функции. Использовались 3 типа бабочек.
1. Без умножения, из бабочек этого типа целиком состоит первая ступень, т.е. N/4 бабочек, на второй ступени таких бабочек N/16, на третьей N/64 и т.д. 11 циклов бабочка выполняется.
2. Бабочки с умножением. Используются, начиная со второй ступени, в которой их 3*N/16, на третьей 15*N/64 и т.д. 15 циклов на бабочку.
3. Бабочки последней ступени. Отличаются от бабочек типа 2 встроенным дигит реверсом. Бабочки этого типа можно было бы еще на разбить - с умножением и без. Но т.к. безумножительная бабочка всего одна, то этого не делал. 18 циклов на бабочку.
Накладные расходы. На первой ступени их 9. На второй ступени-9*4, на третьей -9*16, на четвертой 9*64 и т.д. На последней 18.
Накладные расходы между ступенями по 6 циклов, это переходы, к-ды B, то есть, с delay-slot'ами.
Ну и прятание регистров на входе в функцию и их восстановление на выходе вместе с командой перехода на основную программу 48 циклов с сумме.
Пытался написать общую формулу, но она какая-то громоздкая получается. Поэтому просто напишу для фиксир. N=256. Тем более, что бенчмарки для этой же цифры приводятся.
Всего циклов:
48+ : прятание-восстановление регистров
+6+9+11*64+ :первая ступень
+6+4*9+11*16+15*48+ :вторая
+6+16*9+11*4+15*60+ :третья
+6+18+18*64 : последняя.
Итого 3975 цикла.
Еще раз - это с бл. ПЗ и диг. реверсом вместе.
По TI:
Компл. БПФ по основ. 4 размером N:
E-mail: info@telesys.ru