реклама на сайте
подробности

 
 
> FFT на асм для ARM7TDMI (AT91SAM7xx)
hd44780
сообщение Nov 15 2012, 08:05
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



На Си нашёл, вставил в программу - тормозит оно. Конечно, гораздо лучше, чем на AVR, но всё равно не айс.
Надо сделать аудио-анализатор. Сделать-сделал, осциллограммы рисует великолепно, рендер быстрый для дисплея написал, а с FFT проблемы.
А если ещё и стерео запустить - вообще ступор почти будет...

Нет ли у кого реализации на асме, типа как Чен для AVR-ов?
Сам я ейный ассемблер практически не знаю sad.gif .
Спасибо.


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
hd44780
сообщение Nov 30 2012, 10:56
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Это снова я biggrin.gif .

Окончательно переехал на целочисленный вариант, как писал выше.
Также гонял, проверял, смотрел цифры через DBGU - COM-порт - терминал. В итоге спектр теперь по размеру 256 байт - ровно половина от исходной выборки (раньше там было до хрена нулей - следы от неиспользуемых половинок выходных буферов). Также сделал целочисленный квадратный корень.
В итоге длительность работы - FFT+спектр - 18-19 мс на 512 выборке. Хорошо это или плохо - не знаю. Оконной функции пока нет.

С отрисовкой проблемы. Точнее не с отрисовкой, а с расчётом высоты полосок.

Вот лог отработки типичного блока (98 полосок):
Код
val=6179 --> Line: (0,48)-(0,0);
val=296 --> Line: (1,48)-(1,0);
val=426 --> Line: (2,48)-(2,0);
val=186 --> Line: (3,48)-(3,0);
val=101 --> Line: (4,48)-(4,0);
val=382 --> Line: (5,48)-(5,0);
val=86 --> Line: (6,48)-(6,0);
val=73 --> Line: (7,48)-(7,0);
val=45 --> Line: (8,48)-(8,5);
val=20 --> Line: (9,48)-(9,30);
val=9 --> Line: (10,48)-(10,41);
val=7 --> Line: (11,48)-(11,43);
val=29 --> Line: (12,48)-(12,21);
val=18 --> Line: (13,48)-(13,32);
val=18 --> Line: (14,48)-(14,32);
val=12 --> Line: (15,48)-(15,38);
val=18 --> Line: (16,48)-(16,32);
val=23 --> Line: (17,48)-(17,27);
val=8 --> Line: (18,48)-(18,42);
val=13 --> Line: (19,48)-(19,37);
val=19 --> Line: (20,48)-(20,31);
val=13 --> Line: (21,48)-(21,37);
val=13 --> Line: (22,48)-(22,37);
val=10 --> Line: (23,48)-(23,40);
val=11 --> Line: (24,48)-(24,39);
val=22 --> Line: (25,48)-(25,28);
val=11 --> Line: (26,48)-(26,39);
val=29 --> Line: (27,48)-(27,21);
val=2 --> Line: (28,48)-(28,48);
val=7 --> Line: (29,48)-(29,43);
val=9 --> Line: (30,48)-(30,41);
val=5 --> Line: (31,48)-(31,45);
val=2 --> Line: (32,48)-(32,48);
val=16 --> Line: (33,48)-(33,34);
val=8 --> Line: (34,48)-(34,42);
val=17 --> Line: (35,48)-(35,33);
val=15 --> Line: (36,48)-(36,35);
val=7 --> Line: (37,48)-(37,43);
val=7 --> Line: (38,48)-(38,43);
val=10 --> Line: (39,48)-(39,40);
val=9 --> Line: (40,48)-(40,41);
val=12 --> Line: (41,48)-(41,38);
val=4 --> Line: (42,48)-(42,46);
val=13 --> Line: (43,48)-(43,37);
val=8 --> Line: (44,48)-(44,42);
val=15 --> Line: (45,48)-(45,35);
val=16 --> Line: (46,48)-(46,34);
val=11 --> Line: (47,48)-(47,39);
val=13 --> Line: (48,48)-(48,37);
val=6141 --> Line: (49,48)-(49,0);
val=498 --> Line: (50,48)-(50,0);
val=528 --> Line: (51,48)-(51,0);
val=165 --> Line: (52,48)-(52,0);
val=192 --> Line: (53,48)-(53,0);
val=152 --> Line: (54,48)-(54,0);
val=60 --> Line: (55,48)-(55,0);
val=15 --> Line: (56,48)-(56,35);
val=32 --> Line: (57,48)-(57,18);
val=53 --> Line: (58,48)-(58,0);
val=10 --> Line: (59,48)-(59,40);
val=25 --> Line: (60,48)-(60,25);
val=17 --> Line: (61,48)-(61,33);
val=12 --> Line: (62,48)-(62,38);
val=20 --> Line: (63,48)-(63,30);
val=21 --> Line: (64,48)-(64,29);
val=17 --> Line: (65,48)-(65,33);
val=26 --> Line: (66,48)-(66,24);
val=13 --> Line: (67,48)-(67,37);
val=14 --> Line: (68,48)-(68,36);
val=10 --> Line: (69,48)-(69,40);
val=8 --> Line: (70,48)-(70,42);
val=7 --> Line: (71,48)-(71,43);
val=25 --> Line: (72,48)-(72,25);
val=14 --> Line: (73,48)-(73,36);
val=4 --> Line: (74,48)-(74,46);
val=20 --> Line: (75,48)-(75,30);
val=3 --> Line: (76,48)-(76,47);
val=6 --> Line: (77,48)-(77,44);
val=2 --> Line: (78,48)-(78,48);
val=9 --> Line: (79,48)-(79,41);
val=15 --> Line: (80,48)-(80,35);
val=8 --> Line: (81,48)-(81,42);
val=6 --> Line: (82,48)-(82,44);
val=8 --> Line: (83,48)-(83,42);
val=10 --> Line: (84,48)-(84,40);
val=15 --> Line: (85,48)-(85,35);
val=1 --> Line: (86,48)-(86,49);
val=12 --> Line: (87,48)-(87,38);
val=8 --> Line: (88,48)-(88,42);
val=5 --> Line: (89,48)-(89,45);
val=29 --> Line: (90,48)-(90,21);
val=18 --> Line: (91,48)-(91,32);
val=6 --> Line: (92,48)-(92,44);
val=5 --> Line: (93,48)-(93,45);
val=14 --> Line: (94,48)-(94,36);
val=9 --> Line: (95,48)-(95,41);
val=0 --> Line: (96,48)-(96,50);
val=9 --> Line: (97,48)-(97,41);
Draw in FFT buffer: duration 367 ms


val - значение из спектра.
Я рисую добро в окне 100x50, значит мне надо смасштабировать/отсечение всё под высоту окна 50 точек.
Но лезут эти дурацкие "иголки" типа val=6179, которые портят всё. Я понимаю, что м.б. дело в отсутствии оконной функции, но всё равно как-то странно.

В чём м.б. дело?

PS. До дельта-импульсов пока не добрался.

Спасибо.


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- hd44780   FFT на асм для ARM7TDMI (AT91SAM7xx)   Nov 15 2012, 08:05
- - _Pasha   Цитата(hd44780 @ Nov 15 2012, 11:05) На С...   Nov 15 2012, 08:20
- - hd44780   Нет, не на плавучке Выдрал у Геннадия - http://...   Nov 15 2012, 10:52
|- - Xenia   Цитата(hd44780 @ Nov 15 2012, 14:52) Выдр...   Nov 15 2012, 10:59
|- - _Pasha   Цитата(hd44780 @ Nov 15 2012, 13:52) Нет,...   Nov 15 2012, 12:07
- - hd44780   В конце есть архив исходниками разными - TC1-Oct-3...   Nov 15 2012, 11:12
- - hd44780   Спасибо, почитаю. Размер окна сейчас - 256 байт. Х...   Nov 15 2012, 12:13
- - Genadi Zawidowski   Я затащил к себе в проект (на будущее использовани...   Nov 15 2012, 12:26
- - _Pasha   А заинлайнить BitShift() и Butterfly() слабо?   Nov 15 2012, 12:28
|- - ReAl   Цитата(_Pasha @ Nov 15 2012, 14:28) А заи...   Nov 15 2012, 19:55
- - hd44780   Genadi Zawidowski, я так и подумал, т.к. оно у Вас...   Nov 15 2012, 12:39
- - hd44780   Разъём припаял, inline вставил. Закрутился чуть бы...   Nov 15 2012, 18:11
|- - _Pasha   Цитата(hd44780 @ Nov 15 2012, 21:11) Наве...   Nov 15 2012, 18:41
- - ViKo   A. N. Sloss ... ARM System Developer's Guide -...   Nov 15 2012, 18:23
- - hd44780   Viko, нашёл, скачал... _Pasha, видимо придётся......   Nov 15 2012, 19:13
|- - Genadi Zawidowski   Цитата(hd44780 @ Nov 15 2012, 23:13) прог...   Nov 15 2012, 19:44
- - _Pasha   Вроде ж давно есть fixed... Да, пока не забыл - б...   Nov 15 2012, 20:41
- - hd44780   По-моему, BitShift это мелочи , я сейчас пытаюсь ...   Nov 16 2012, 16:56
|- - _Pasha   Цитата(hd44780 @ Nov 16 2012, 20:56) Butt...   Nov 16 2012, 17:30
- - hd44780   inline сделал, слегка видоизменил структуру вызово...   Nov 18 2012, 09:09
|- - _Pasha   Цитата(hd44780 @ Nov 18 2012, 12:09) _Pas...   Nov 18 2012, 10:57
|- - hd44780   Цитата(_Pasha @ Nov 18 2012, 12:57) Вы пр...   Nov 18 2012, 11:26
|- - DRUID3   Цитата(hd44780 @ Nov 21 2012, 13:41) Поня...   Nov 21 2012, 12:23
|- - hd44780   Цитата(DRUID3 @ Nov 21 2012, 14:23) А как...   Nov 21 2012, 12:48
- - hd44780   _Pasha, спасибо. Со скоростью вроде управился, ра...   Nov 18 2012, 16:14
- - Genadi Zawidowski   Там очень проблемно с переполнением - я у себя пер...   Nov 18 2012, 20:23
- - hd44780   Спасибо. Вечерком проверю вариант с заменой int на...   Nov 19 2012, 08:03
- - hd44780   Проверил. Особых тормозов от long int не заметил. ...   Nov 19 2012, 17:18
|- - adnega   Цитата(hd44780 @ Nov 19 2012, 20:18) Поло...   Nov 19 2012, 17:43
|- - hd44780   Цитата(adnega @ Nov 19 2012, 19:43) Может...   Nov 20 2012, 07:49
|- - DRUID3   Цитата(hd44780 @ Nov 20 2012, 09:49) DRUI...   Nov 21 2012, 04:56
- - esaulenka   А какой должна быть разница от замены int на long ...   Nov 19 2012, 17:25
- - hd44780   Медленнее. То же самое как на 8-битном проце склад...   Nov 19 2012, 17:39
|- - esaulenka   Цитата(hd44780 @ Nov 19 2012, 21:39) Медл...   Nov 20 2012, 09:19
- - DRUID3   Цитата(hd44780 @ Nov 15 2012, 10:05) На С...   Nov 19 2012, 18:15
- - hd44780   Компилятор - IAR int - 32 (вроде бы). Для 64 напис...   Nov 20 2012, 11:16
|- - _Артём_   Цитата(hd44780 @ Nov 20 2012, 13:16) Вооб...   Nov 20 2012, 11:48
|- - hd44780   Цитата(_Артём_ @ Nov 20 2012, 13:48) Смот...   Nov 20 2012, 11:54
|- - esaulenka   Цитата(hd44780 @ Nov 20 2012, 15:54) Расс...   Nov 20 2012, 14:30
- - hd44780   long long поставил. Объём кода подскочил где-то с ...   Nov 20 2012, 16:50
- - hd44780   DRUID3, спасибо, буду смотреть. Попытаюсь к иару п...   Nov 21 2012, 07:26
|- - DRUID3   Цитата(hd44780 @ Nov 21 2012, 09:26) DRUI...   Nov 21 2012, 08:54
- - hd44780   Точек сейчас - 512. Про логарифм магнетуды, извини...   Nov 21 2012, 10:21
|- - DRUID3   Цитата(hd44780 @ Nov 21 2012, 12:21) Про ...   Nov 21 2012, 11:07
|- - hd44780   Цитата(DRUID3 @ Nov 21 2012, 13:07) такой...   Nov 21 2012, 11:41
- - hd44780   DRUID3, а чем отличаются fn_aT_ditNbrRadix2FFT_int...   Nov 21 2012, 15:01
|- - DRUID3   Цитата(hd44780 @ Nov 21 2012, 17:01) DRUI...   Nov 21 2012, 15:52
|- - hd44780   Цитата(DRUID3 @ Nov 21 2012, 17:52) ну у ...   Nov 21 2012, 17:59
- - hd44780   Вот сейчас посмотрел Чана - http://elm-chan.org/wo...   Nov 21 2012, 19:13
- - DRUID3   У Чана логарифмов нету. У него чистое FFT. Корень ...   Nov 22 2012, 03:32
- - hd44780   DRUID3 Я взял пока функцию, работающую с плавающе...   Nov 22 2012, 09:52
|- - DRUID3   Цитата(hd44780 @ Nov 22 2012, 11:52) DRUI...   Nov 22 2012, 10:39
|- - hd44780   Цитата(DRUID3 @ Nov 22 2012, 12:39) Невер...   Nov 22 2012, 11:39
|- - DRUID3   Цитата(hd44780 @ Nov 22 2012, 13:39) Т.е....   Nov 22 2012, 11:53
- - hd44780   Понял. Тут ещё один вопрос.... Для входного окна ...   Nov 22 2012, 12:35
- - DRUID3   Кодui_N = cuic_RN>>1; ...пусть cuic_RN = ...   Nov 22 2012, 13:29
- - hd44780   Вроде понятно. В итоге получил такое: Код float ...   Nov 22 2012, 14:45
- - hd44780   Исправил косяк Код // 3. Расчёт спектра for ...   Nov 22 2012, 19:29
- - DRUID3   Цитата(hd44780 @ Nov 22 2012, 21:29) ...Р...   Nov 23 2012, 05:19
|- - hd44780   Цитата(DRUID3 @ Nov 23 2012, 07:19) лучше...   Nov 23 2012, 06:58
|- - DRUID3   Цитата(hd44780 @ Nov 23 2012, 08:58) Я не...   Nov 23 2012, 08:27
- - hd44780   Отписаться вечером не смог .. Вчера проверил - на...   Nov 24 2012, 07:58
- - DRUID3   ...забейте... посмотрите как в том примере с int с...   Nov 24 2012, 14:22
- - hd44780   DRUID3, чёт я не понял . Написал так: Кодint iDa...   Nov 24 2012, 16:24
- - DRUID3   Цитата(hd44780 @ Nov 24 2012, 18:24) Хотя...   Nov 24 2012, 17:24
|- - hd44780   Цитата(DRUID3 @ Nov 24 2012, 19:24) У Вас...   Nov 25 2012, 11:35
|- - DRUID3   Цитата(hd44780 @ Nov 25 2012, 13:35) Заму...   Nov 25 2012, 11:59
- - hd44780   Да рано мне до дельты ... Нашёл в интернете алгори...   Nov 25 2012, 17:12
- - hd44780   Да рано мне до дельты ... Нашёл в интернете алгори...   Nov 25 2012, 17:12
- - hd44780   Дубль поста получился ..   Nov 25 2012, 17:12
- - hd44780   Посмотрел на своё изделие под музыку. Реакция хоро...   Nov 30 2012, 17:07
|- - DRUID3   Цитата(hd44780 @ Nov 30 2012, 19:07) Посм...   Nov 30 2012, 21:07
|- - hd44780   Цитата(DRUID3 @ Nov 30 2012, 23:07) Ну по...   Dec 2 2012, 18:42
- - hd44780   Почистил мусор всякий - расчёт FFT вместе со спект...   Dec 6 2012, 07:11
- - blackfin   Цитата(hd44780 @ Dec 6 2012, 11:11) Почис...   Dec 6 2012, 07:26
|- - hd44780   Цитата(blackfin @ Dec 6 2012, 09:26) Всё ...   Dec 6 2012, 08:32
- - DRUID3   Цитата(hd44780 @ Dec 6 2012, 09:11) Почис...   Dec 10 2012, 11:19


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 16:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.0145 секунд с 7
ELECTRONIX ©2004-2016