|
Целочисленные алгоритмы ЦОС, надо сформулировать правила |
|
|
|
 |
Ответов
|
Aug 22 2013, 14:14
|
Частый гость
 
Группа: Участник
Сообщений: 85
Регистрация: 20-05-13
Пользователь №: 76 911

|
Цитата(Ruslan1 @ Mar 18 2011, 20:48)  еще может интересно будет, насчет целочисленной реализации БПФ посмотрите вот этоВроде нареканий не было и чистый си, хоть куда лепится  И очень экономно подходит к используемой памяти, как RAM так и ROM. Используются 16-битные знаковые числа. Очень удобно напрямую данные с АЦП подсовывать, ну или после нормирования, чтобы максимально использовать все биты. Скажите, а можно этот код переделать на 4096 точек (там сейчас 1024) ? Ответьте, пожалуйста. Очень надо.
|
|
|
|
|
Aug 23 2013, 08:52
|
Частый гость
 
Группа: Участник
Сообщений: 85
Регистрация: 20-05-13
Пользователь №: 76 911

|
Цитата(Zelepuk @ Aug 23 2013, 11:55)  конечно можно! За отдельную плату готов предоставить готовую реализацию на 4096 точек  P.S. Протестировано на MSP430F47197 в проекте счётчика электроэнергии. Вопрос такой. Какова точность целочисленного 32-разрядного БПФ (вся арифметика не должна выходить за пределы 32 разрядов) ? Если у меня данные честные 16-битные и я хочу получить на выходе спектр с диапазоном тоже в 90 дБ, то целочисленных вычислений в 32 разрядов для этого не достаточно, не так ли ?
|
|
|
|
|
Aug 23 2013, 09:16
|
Частый гость
 
Группа: Участник
Сообщений: 85
Регистрация: 20-05-13
Пользователь №: 76 911

|
Цитата(Zelepuk @ Aug 23 2013, 13:02)  почему недостатачно? как вы считаете? у меня всё было достатачно точно, единственное что: нужно данные масштабировать в нужных местах. Вот над этим я сейчас и бьюсь. Вот здесь человек пишет: " Перед автором стояла задача написать преобразование Фурье на 2048 точек при разрядности исходных данных 16 бит. Из-за отсутствия арифметического сопроцессора пришлось делать целочисленное преобразование, что создало некоторые трудности. При разрядности исходных данных 16 бит разрядность коэффициентов должна быть не менее 16, чтобы не происходило потери точности. Их произведение содержит 32 разряда. 2048 точек дают еще 11 дополнительных разрядов, а это значит, что в 32-разрядное процессорное слово промежуточные данные не помещаются. Вычисление каждой “бабочки” ведется с точностью 64 разряда, а результат округляется до 32 разрядов. " И как же можно тогда все посчитать в 32 разрядах без потери точности ?
|
|
|
|
|
Aug 23 2013, 18:04
|

Профессионал
    
Группа: Участник
Сообщений: 1 072
Регистрация: 11-12-12
Пользователь №: 74 815

|
Цитата(MSP430F @ Aug 23 2013, 13:16)  Вот над этим я сейчас и бьюсь. Вот здесь человек пишет: " Перед автором стояла задача написать преобразование Фурье на 2048 точек при разрядности исходных данных 16 бит. Из-за отсутствия арифметического сопроцессора пришлось делать целочисленное преобразование, что создало некоторые трудности. При разрядности исходных данных 16 бит разрядность коэффициентов должна быть не менее 16, чтобы не происходило потери точности. Их произведение содержит 32 разряда. 2048 точек дают еще 11 дополнительных разрядов, а это значит, что в 32-разрядное процессорное слово промежуточные данные не помещаются. Вычисление каждой “бабочки” ведется с точностью 64 разряда, а результат округляется до 32 разрядов. " И как же можно тогда все посчитать в 32 разрядах без потери точности ? С учетом Cortex-M3 можно использовать 32 битное умножение со знаком и 64 бит накопление - SMLAL инструкция. Для signed long long компилер сам подставит. Вот если нет 64 бит аккумулятора, то можно использовать отдельно знаковое умножение с арифметическим сдвигом на 32 (взятие старшей части от умножения), тогда коэффициенты придется обрезать по модулю (считать за 1), чтобы они не превышали ((64 - Х)/2) бит, где Х - log N по основанию 2, а N - число точек (максимум 16384 точки). Это лишь вопрос к правильной табличке синусов. Уровень шума не вырастет больше чем на 1 дБ. При этом использовать максимальное отрицательное число для выбранного размера нельзя. Например, для 24 бит синус должен лежать в диапазоне от -8388607 до +8388607. Обрезать результат сильнее нельзя, так как если, к примеру, использовать 16 бит знаковые данные и 16 бит знаковый синус, то динамический диапазон уже ни при каком числе точек не превысит 87 дБ (3 дБ "съедает" формат синусов), даже если результат накапливать в 64 битном аккумуляторе без потерь.
|
|
|
|
Сообщений в этой теме
Zelepuk Целочисленные алгоритмы ЦОС Mar 6 2011, 07:22 _Anatoliy Цитата(Zelepuk @ Mar 6 2011, 09:22)
Это... Mar 6 2011, 08:35 Zelepuk Познавательное видео.
Но хотелось бы писать всё с... Mar 7 2011, 06:30 alexPec Цитата(Zelepuk @ Mar 7 2011, 09:30) Позна... Mar 7 2011, 10:07  Zelepuk Цитата(alexPec @ Mar 7 2011, 13:07) Переп... Mar 7 2011, 13:38   alexPec Цитата(Zelepuk @ Mar 7 2011, 16:38) когда... Mar 7 2011, 14:47 diwil Цитата(Zelepuk @ Mar 7 2011, 09:30) Иными... Mar 7 2011, 11:58  Zelepuk Цитата(diwil @ Mar 7 2011, 14:58) 1. floa... Mar 7 2011, 21:12   diwil Цитата(Zelepuk @ Mar 8 2011, 00:12) Никак... Mar 9 2011, 08:05 PetrovichKR ЦитатаХлчется вкуритсь "трюки" на С чтоб... Mar 8 2011, 04:31 Zelepuk Цитата(Ruslan1 @ Mar 18 2011, 19:48) еще ... Mar 18 2011, 17:36      Maverick Цитата(MSP430F @ Aug 23 2013, 12:16)
по... Aug 23 2013, 09:35       MSP430F Цитата(Corner @ Aug 23 2013, 22:04) С уче... Aug 26 2013, 12:44        Corner Цитата(MSP430F @ Aug 26 2013, 16:44) Как ... Aug 29 2013, 15:02      alex_os Цитата(MSP430F @ Aug 23 2013, 13:16) Вот ... Sep 18 2013, 19:26       Corner Цитата(alex_os @ Sep 18 2013, 23:26) можн... Sep 19 2013, 15:02       DASM Цитата(alex_os @ Sep 18 2013, 23:26) Ужас... Sep 19 2013, 15:21        Corner Цитата(DASM @ Sep 19 2013, 19:21) UMULL 3... Sep 19 2013, 15:28 Corner На ПЛИС БПФ 8192 точки 18 бит знаковое сносно дает... Aug 22 2013, 14:35 Zelepuk Вообще проще взять и проверить. Код есть. За полча... Aug 23 2013, 09:17 DASM Странно, дока говорит иное.Вы уверены, что это не ... Sep 19 2013, 15:34 Corner Цитата(DASM @ Sep 19 2013, 19:34) Странно... Sep 19 2013, 15:36  AndrewN QUOTE (Corner @ Sep 19 2013, 18:36) Тольк... Sep 19 2013, 17:41   Corner Цитата(AndrewN @ Sep 19 2013, 21:41) Для ... Sep 24 2013, 16:30    AndrewN QUOTE (Corner @ Sep 24 2013, 19:30) 16+16... Sep 24 2013, 20:57     Corner Цитата(AndrewN @ Sep 25 2013, 00:57) А та... Sep 29 2013, 09:15 DASM Посмотрю завтра, с телефона неудобно. И что, в экс... Sep 19 2013, 15:44
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|