Цитата(prig @ Aug 23 2013, 13:25)

Знаете, сильно лень. И так мого букв, и так много времени потрачено.
Пишите много, но не емко...
и того.
Цитата(prig @ Aug 23 2013, 13:25)

- ADI я упомянул сознательно, и именно потому, что у них всё это хозяйство с фикс. точкой описано достаточно хорошо и подробно.
Полистайте их доки на сигнальники, статьи и книжки по DSP. У TI всё то же самое, но описано несколько хуже.
А в длинных и умных книжках могут так запутать простые вещи, что без пол-банки...
ADI означает фирму, и надо обращаться к их программным кодам
Цитата(prig @ Aug 23 2013, 13:25)

Если вкратце и грубо:
1.31 - запись вещественных чисел со знаком (фактически - целое число). Диапазон типа +-0.9999... Умножение в этом формате (фактически, это целочисленное со знаком 32*32 с дополнительным сдвигом влево на один бит и округлением результата до 32-битного числа) даёт результат в этом же формате. Т.е., если умножается 0.0999.. на 0.9999.., должно получаться 0.0999... С точностью до младшего бита, есстественно.
1.31 означает 1 бит знака, 31 бит - значащие
Цитата(prig @ Aug 23 2013, 13:25)

- Коммент с заполнением полей при переводе формата и нормировке для БПФ - не самый удачный.
Корректней описать так:
16 бит целое со знаком (или же 1.15, что в общем-то одно и то же) копируется в старшие 16 бит формата 1.31, а младшие 16 бит заполняются нулями. После чего делается арифметический сдвиг вправо всего 32-бит числа для выделения "запасных" битов).
наверное все таки влево, иначе вы просто обнулите число или я чего то не понимаю? Да и вообще сдвигая 32 бита на 32 бита вы получите либо 0 либо 64 бита, тут хотелось бы определенности. Потому что если 0, то это глупо, а если 64, то откуда у нас 32 битная арифметика?
Цитата(prig @ Aug 23 2013, 13:25)

- Результат вычисления бабочки радикс-2 может вырасти на один бит (в два раза) по сравнению с исходными значениями. Если использовать 1.31 без постадийного нормирования, то для 4К приходится оставлять 12 "запасных" бит, а для 64К - 16. Т.о. получается, что в первом случае округление будет вестись по фактическим 20-ти разрядам, а во втором - по 16-ти.
Почему опять у вас 4К БПФ стало 20 разрядным, а 64К - 16 разрядным? Или вы считаете число отбрасываемых разрядов?
Цитата(prig @ Aug 23 2013, 13:25)

П.С. Поймите меня правильно. Я не пытаюсь устроить здесь ликбез или что-то кому-то показать. Время это занимает много, толку для меня самого почти никакого.
Так что, ещё раз повторюсь, считайте это только подсказками для желающих изучить вопрос. Не более.
Ну вас трудно понять, потому и времени занимает много. Были бы ближе к народу, было бы быстрее, может в этом для вас был бы толк? Много раз убеждался объясняя самые простые вещи всегда и для себя что-то новое понимаешь...
П.С. кстати все время упускаются процы с арифм модулем которые флоты за 1 такт перемножают, а таких не мало...
Цитата(MSP430F @ Aug 23 2013, 12:24)

А я о чем говорю? Если коэффиценты у Вас 32 бита (очень хорошие, кстати, коэффициенты), то как Вы собираетесь реализовывать арифметику в 32 разрядах ? Я же не спорю о том, что целочисленные вычисления - это круто. Я только говорю, что если у меня данные честные 16-битные и я хочу получить на выходе спектр с диапазоном тоже в 90 дБ, то целочисленных вычислений в 32 разрядов для этого не достаточно. Для этого-то человек
ЗДЕСЬ и использует вычисления с точностью 64 разряда.
естественно если у вас 32 битные операнды, то все их виды без потерь перемножить можно только в 64 битном числе
Но если у вас коэффициенты 32 битные, но со значениями от -2^15 .. +2^15, то у вас они фактически 16 битные, и их можно перемножить в 32 битах без потерь. Игра идет на том что реальный сигнал и реальные коэффициенты никогда не занимают весь диапазон иначе бы не помогли ни флоты ни даблы.
если у вас 32 бита то вы можете иметь 2^32 разных чисел, и не важно какой формат, во флоте их тоже 2^32, потому что просто комбинаций их 32 бит больше нет, потому считать что во флоте, что в целых 32 битных точность на выходе одинаковая, просто для флота она получится сама, а для 32 целых надо принять некоторый набор телодвижений.
И самое интересное в том что дольше считать флоты, или делать эти телодвижения... думаю на проце что флоты за 1 такт перемножает, флоты победят, а сколько тактов есть на перемножение флотов в проце без арифм модуля не знам... я имею ввиду сколько тактов занимают телодвижения на нормировки и прочии фигни. Но по ощущениям сильно меньше чем флоты вращать...