Very Hot Topic (More than 50 Replies) Микроконтроллер - как перспектива примочкостроения (Прочитано 128688 раз)
burjak
Младший паяльщик
**
Вне Форума


фуз forever!

Сообщений: 186
Зарегистрирован: 31.12.2011
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #360 - 26.02.2012 :: 21:23:19
Post Tools
Ну не обязательно Матлаб. Если Вы уже написали программу, корректно вычисляющую линейную свертку, то этого достаточно.
Хотя загоните сюда данные и результаты(проги и контроллера), я сравню с матлабовскими
  

(Вложенный файл удалён)
Наверх
 
IP записан
 
Rus
Разбирающийся
****
Вне Форума



Сообщений: 1017
Местоположение: Ukraine, Odessa
Зарегистрирован: 22.02.2007
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #361 - 27.02.2012 :: 17:36:51
Post Tools
Кажется, догадываюсь, в чем дело. Пересматривал еще раз доки на эти функции и увидел кое-что, что сначала ускользнуло: оказывается, БПФ надо скармливать комплексный сигнал парами значений re1 im1, re2 im2, и т.д. А я подсовывал ей действительный массив Очень довольный. Это как раз  объясняет, почему прямое-обратное дает правильный исходный результат, а вместо перемножения образов перемножаем неизвестно что!
Пошел пробовать, как я раньше этого не доглядел!!!

Да, именно это и было причиной глюка. Спасибо, что откликнулись, burjak Улыбка
« Последняя редакция: 27.02.2012 :: 19:08:45 от Rus »  

(Вложенный файл удалён)
Наверх
IP записан
 
burjak
Младший паяльщик
**
Вне Форума


фуз forever!

Сообщений: 186
Зарегистрирован: 31.12.2011
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #362 - 27.02.2012 :: 20:23:22
Post Tools
Ну вот Подмигивание
Рад, что разобрались
Сам бывает долго и нудно какую-то несчастную фигулинку ищу Улыбка
  

(Вложенный файл удалён)
Наверх
 
IP записан
 
bunyaman
Младший паяльщик
**
Вне Форума


GtLab.Net forever!

Сообщений: 136
Зарегистрирован: 07.03.2011
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #363 - 07.03.2012 :: 08:11:29
Post Tools
Хочу собрать сей агрегат
http://www.diystompboxes.com/smfforum/index.php?topic=77471.0

МК нашел, купил. А вот с программатором дела обстоят похуже. Купить готовый не получается(где был- нету, а слишком навороченнный мне не нужен пока). Схем в инете валом, но выбрать мне сложноУлыбка Подскажите, пожалуйста, вариант попроще для МК  PIC 16F684.
  

(Вложенный файл удалён)
Наверх
ICQ  
IP записан
 
research
Участник


Re: Микроконтроллер - как перспектива примочкостроения
Ответ #364 - 07.03.2012 :: 08:28:19
Post Tools
PICkit3 очень даже.
Либо купи готовый контроллер прошитый (т.к. на этой прошивке многие тремоло делают), или прошей у соседа.
  

(Вложенный файл удалён)
Наверх
 
IP записан
 
Rus
Разбирающийся
****
Вне Форума



Сообщений: 1017
Местоположение: Ukraine, Odessa
Зарегистрирован: 22.02.2007
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #365 - 09.03.2012 :: 21:56:52
Post Tools
Домучил наконец свой проект в Keil'e...удалось получить длину импульса до 37.5 мс при частоте дискретизации 44.1.
Задумался вот теперь, как это воплотить в реальность. Микроконтроллеры в руках никогда не держал вообще. Пока положил глаз вот на эту борду http://www.rcscomponents.kiev.ua/product/EA-XPR-003.html. Подскажите, совместима ли она с Кейлом и надо ли что-то еще, чтоб прошить и запустить проц?
  

(Вложенный файл удалён)
Наверх
IP записан
 
klb128
Новичок канифольный
*
Вне Форума


GtLab.Net forever!

Сообщений: 34
Зарегистрирован: 28.02.2012
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #366 - 09.03.2012 :: 23:33:23
Post Tools
Keil поддерживает все ARM-ы, это какгбе родимый компилятор, только с другой оболочкой.
Чтобы нормально делать проекты на ARMах, надо иметь дебагер, j-link на пример.

С фурье в риалтайме ничего дельного не выйдет - будет задержка на длину импульса
А циклическая свертка "в лоб" - надо считать, хватит ли тактовой или нет, зависит от длины импульса.
Ну такие вещи лучше делать на DSP, там архитектура более заточена под такую математику, хотя в Cortex-M3 есть некоторые юзабельные инструкции, но все же спец.дсп будет быстрее.
  

(Вложенный файл удалён)
Наверх
 
IP записан
 
Rus
Разбирающийся
****
Вне Форума



Сообщений: 1017
Местоположение: Ukraine, Odessa
Зарегистрирован: 22.02.2007
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #367 - 10.03.2012 :: 09:35:48
Post Tools
Да я в курсе, что родной, но поддерживает ли он тот дебаггер, что я по ссылке привел?
Не спорю, что на специализированных дсп быстрее, но хочу пока что-то недорогое поиграться на первое время, обкатать алгоритмы, а дальше видно будет.
а с чего вы взяли про задержку в длину импульса? Не обязательно ведь делать входной буфер равным длине импульса. Можно и меньше Подмигивание У меня в текущей конфигурации задержка ровно в 2 входных блока, что получается около 18 мсек при импульсе 37.5 мсек.
В лоб считать не пробовал, но думаю, что будет затратнее.
« Последняя редакция: 10.03.2012 :: 09:53:10 от Rus »  

(Вложенный файл удалён)
Наверх
IP записан
 
klb128
Новичок канифольный
*
Вне Форума


GtLab.Net forever!

Сообщений: 34
Зарегистрирован: 28.02.2012
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #368 - 13.03.2012 :: 20:49:32
Post Tools
Цитата:
Да я в курсе, что родной, но поддерживает ли он тот дебаггер, что я по ссылке привел?

, сорри, не заметил,что то де баггер. Нет,конечно. No, there is no way connecting the LPC-Link to the Keil IDE.

Цитата:
а с чего вы взяли про задержку в длину импульса? Не обязательно ведь делать входной буфер равным длине импульса. Можно и меньше

Не, ну можно конечно делать ффт низкого разрешения, все зависит от импульса, требуемой детализации на нч тобышь...
Судя по задержке 18мс, разрешение где-то 44110/512.
По длине буффера - а как иначе? Интерполировать что ли?
  

(Вложенный файл удалён)
Наверх
 
IP записан
 
Rus
Разбирающийся
****
Вне Форума



Сообщений: 1017
Местоположение: Ukraine, Odessa
Зарегистрирован: 22.02.2007
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #369 - 13.03.2012 :: 21:38:21
Post Tools
Цитата:
Нет,конечно. No, there is no way connecting the LPC-Link to the Keil IDE.

Ну это ничего. Можно ведь отлаженнй проект из кейла перенести в родную IDE експрессы и через нее залить. Или через бутлоадер какой-нибудь. Пока не вникал в тонкости этого процесса.
Кстати... а на сколько симулятор кейла адекватен реальности? Боюсь, чтоб не получилось так, что в симе работает, а на железке не будет.
Ну смотрите... У меня длина буфера сигнала 400 точек  и 1648 длина импульса. Следовательно, длина свертки будет 2047 точек. Поэтому, делаю 2048-точечное ффт 400-сот точек буфера и всего импульса (один раз при старте). А разрешение ффт от длины буфера не зависит, он м.б. и меньше, но проц не будет успевать считать.
  

(Вложенный файл удалён)
Наверх
IP записан
 
Rst7
Гуру
*****
Вне Форума


Мимо проходил...

Сообщений: 1619
Местоположение: Харків-city
Зарегистрирован: 22.03.2010
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #370 - 13.03.2012 :: 22:36:11
Post Tools
Цитата:
Ну смотрите... У меня длина буфера сигнала 400 точек  и 1648 длина импульса. Следовательно, длина свертки будет 2047 точек. Поэтому, делаю 2048-точечное ффт 400-сот точек буфера и всего импульса (один раз при старте). А разрешение ффт от длины буфера не зависит, он м.б. и меньше, но проц не будет успевать считать.


Ересь какая-то. Разрешение по частоте у Фурье - fдискретизации/N. Далее - тема склейки блоков не раскрыта совершенно. Далее - не охота тут разводить арифметику, но поверьте, для получения адекватной задержки с адекватной обрабатываемой длинной импульса есть только одна возможность - тупо считать свертку.

Дальше чистая арифметика (для Cortex-M3):

LDM в два регистра (текущий коэффициент и текущий семпл) - 3 такта
MLA (собственно операция MAC) - 2 такта

Примечание - буфер семплов и буфер коэффициентов - это одно и тоже, идет 32хбитный коэффициент (усеченный до 16 бит), потом 32хбитный семпл (усеченный до 16 бит) и так далее. Посему надо еще организовывать сдвиг семплов в буфере, но это выполняется при помощи DMA одновременно с собственно вычислением свертки самим процом.

Итого имеем 5 тактов на тап. При частоте дискретизации 48кГц и 100МГц тактовой имеем N=100МГц/(5*48кГц)=416 тапов. Что, конечно, маловато, ибо позволяет иметь нижнюю обрабатываемую частоту всего лишь 115Гц (=48кГц/416).

Ну можно соптимизировать до 4.25 такта на тап (с общей задержкой в 4 семпла), но это не сделает погоды. Можно еще скинуть семплрейт до 44.1кГц - в общем, можно достигнуть нижней обрабатываемой частоты в 82Гц.

Овчинка на CM3 не стоит выделки. Можно попробовать на Cortex-M4 - там есть двухствольный MAC, который за один такт обрабатывает 2 тапа. Плюс загрузка нужна будет только одна на два тапа - это будет 1+3 такта на два тапа, т.е. 2 такта на тап. При заявляемых частотах 150МГц и 48кГц будем иметь 1562 тапа за семпл, что, в общем, вполне адекватная цифра (30Гц нижняя обрабатываемая частота).

Как-то так.
  

(Вложенный файл удалён)

"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредствен
Наверх
WWW  
IP записан
 
Rus
Разбирающийся
****
Вне Форума



Сообщений: 1017
Местоположение: Ukraine, Odessa
Зарегистрирован: 22.02.2007
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #371 - 13.03.2012 :: 23:12:22
Post Tools
Цитата:
Разрешение по частоте у Фурье - fдискретизации/N

И где я этому противоречил? Скорее всего, вы не так что-то поняли.
Цитата:
Далее - тема склейки блоков не раскрыта совершенно.

С ней все в порядке.
Цитата:
Овчинка на CM3 не стоит выделки. Можно попробовать на Cortex-M4 - там есть двухствольный MAC, который за один такт обрабатывает 2 тапа. Плюс загрузка нужна будет только одна на два тапа - это будет 1+3 такта на два тапа, т.е. 2 такта на тап. При заявляемых частотах 150МГц и 48кГц будем иметь 1562 тапа за семпл, что, в общем, вполне адекватная цифра (30Гц нижняя обрабатываемая частота).

На данном этапе меня вполне устраивает 1648 точек на 120 МГц проце. Улыбка
Для особо неверующих:
http://www.onlinedisk.ru/image/842130/1.jpg
http://www.onlinedisk.ru/image/842131/2.jpg
« Последняя редакция: 14.03.2012 :: 00:12:15 от Rus »  

(Вложенный файл удалён)
Наверх
IP записан
 
klb128
Новичок канифольный
*
Вне Форума


GtLab.Net forever!

Сообщений: 34
Зарегистрирован: 28.02.2012
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #372 - 14.03.2012 :: 09:20:37
Post Tools
Цитата:
Ересь какая-то. Разрешение по частоте у Фурье - fдискретизации/N. Далее - тема склейки блоков не раскрыта совершенно. Далее - не охота тут разводить арифметику, но поверьте, для получения адекватной задержки с адекватной обрабатываемой длинной импульса есть только одна возможность - тупо считать свертку.

+1, природу не обманешь

А так да, я тож на кортексе м3 начинал обработку делать, но потом забросил это дело, перешел на дсп и фпга. так что Rus, Вы на правильном пути. Тему раскисите и будете двигатся дальше Подмигивание
По поводу 18мс - не знаю для чего Ваш девайс, но для звука это много, на слух 10мс уже слышно, при 20 я уже играть на гитаре не могу Улыбка
« Последняя редакция: 14.03.2012 :: 09:24:02 от klb128 »  

(Вложенный файл удалён)
Наверх
 
IP записан
 
Rst7
Гуру
*****
Вне Форума


Мимо проходил...

Сообщений: 1619
Местоположение: Харків-city
Зарегистрирован: 22.03.2010
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #373 - 14.03.2012 :: 12:12:42
Post Tools
Цитата:
перешел на дсп и фпга


К сожалению, FPGA с приличными ресурсами - слишком дорого. Из подходящих DSP могу предложить VS1053 - там вполне 50MMAC в секунду получается, что для 44100 дает длину импульса чуть больше килобайта, уже можно жить. Заодно в одном флаконе аудио-кодек.

Цитата:


Да таких картинок можно валом сделать. Дайте на вход пилот длинной 100мс (заведомо больше Вашего окна) и частотой 1кГц и покажите выход, вот тогда посмеемся.
  

(Вложенный файл удалён)

"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредствен
Наверх
WWW  
IP записан
 
research
Участник


Re: Микроконтроллер - как перспектива примочкостроения
Ответ #374 - 14.03.2012 :: 12:34:55
Post Tools
Еще несколько ведер и получится Line6 M9 Подмигивание ARM есть, еще к нему шарк, рамы и кодек, и все.


Если серьезно. Засоветуйте, каким инструментарием шить SPI ROM. Интересует бюджетный программатор (инструмент предпочитаю покупать, чем делать самому абы как) и ненаколеночный софт.
Уже много где спрашивал, но натыкаюсь или на проекты под LPT или варез под вин98.
  

(Вложенный файл удалён)
Наверх
 
IP записан
 
Rus
Разбирающийся
****
Вне Форума



Сообщений: 1017
Местоположение: Ukraine, Odessa
Зарегистрирован: 22.02.2007
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #375 - 14.03.2012 :: 14:41:47
Post Tools
Цитата:
Дайте на вход пилот длинной 100мс (заведомо больше Вашего окна) и частотой 1кГц и покажите выход, вот тогда посмеемся.

Не понял, что такое "пилот" - дал синус.

http://www.onlinedisk.ru/image/842508/1.jpg
Лень делать референсный тест в акустик миррор. Думаю, вы и сами знаете, как оно должно выглядеть. Всплеск в конце - следствие небольшой ступеньки в конце входного синуса. Т.к. он не закончился на 0, я его принудительно опустил. Но это не принципиально.
А теперь, Rst7, говорите, где смеяться. Очень довольный

Про 18 мс - да, согласен, для практического применения многовато (хотя лично для меня играбельно), но это не окончательный вариант.
« Последняя редакция: 14.03.2012 :: 14:47:19 от Rus »  

(Вложенный файл удалён)
Наверх
IP записан
 
Rst7
Гуру
*****
Вне Форума


Мимо проходил...

Сообщений: 1619
Местоположение: Харків-city
Зарегистрирован: 22.03.2010
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #376 - 14.03.2012 :: 15:22:16
Post Tools
Цитата:
Думаю, вы и сами знаете, как оно должно выглядеть.


Выглядит похоже. Как Вы склеиваете вместе окна? Просто встык?
  

(Вложенный файл удалён)

"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредствен
Наверх
WWW  
IP записан
 
klb128
Новичок канифольный
*
Вне Форума


GtLab.Net forever!

Сообщений: 34
Зарегистрирован: 28.02.2012
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #377 - 14.03.2012 :: 15:27:34
Post Tools
@ Rst7
FPGA для более сложных вещей, где ресурсов даже 400мгц блекфина далеко не хватает. А так конечно дорого, а разработка еще дороже в разы Улыбка Ну там своя кухня, можно и последовательно делать некот. вычисления, тем самым экономить вентили...
То все от задачи зависит, в одном проекте даже была пара простеньких фильтров на CPLD EPM1270 затактированный на 60мгц Смех просто нужно было считать довольно толстый поток, решение на процессоре стоило бы гороздо дороже в итоге

@ Rus, да картинки ни о чем не говорят, псевдокод выложите и всем знающим и так станет ясно
Да и на fft можно добится малой задержки, если в overlap-add напихать много нулей и мало сигнала, только по ресурсам это врядли дешевле будет, чем тупая свертка
« Последняя редакция: 14.03.2012 :: 15:29:35 от klb128 »  

(Вложенный файл удалён)
Наверх
 
IP записан
 
Rus
Разбирающийся
****
Вне Форума



Сообщений: 1017
Местоположение: Ukraine, Odessa
Зарегистрирован: 22.02.2007
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #378 - 14.03.2012 :: 15:47:23
Post Tools
@ Rst7
Завел выходной буфер, равный длине блока (А)+импульса. Свертки блоков суммирую с буфером, для каждой следующей итерации прибавляя к начальному индексу длину буфера. При этом последние А точек, к-рые ложатся на уже считанные данные, не суммирую, а перезаписываю.

@ klb128
Да, вроде-бы это так называется. Выигрышнее или нет, тут зависит от конкретной длины блока, длины ффт и длины импульса. Для короткого импульса может и будет выигрышнее в лоб считать.
« Последняя редакция: 14.03.2012 :: 15:50:09 от Rus »  

(Вложенный файл удалён)
Наверх
IP записан
 
Rst7
Гуру
*****
Вне Форума


Мимо проходил...

Сообщений: 1619
Местоположение: Харків-city
Зарегистрирован: 22.03.2010
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #379 - 14.03.2012 :: 20:07:03
Post Tools
Цитата:
Завел выходной буфер, равный длине блока (А)+импульса. Свертки блоков суммирую с буфером, для каждой следующей итерации прибавляя к начальному индексу длину буфера. При этом последние А точек, к-рые ложатся на уже считанные данные, не суммирую, а перезаписываю.


Я не о том. Смотрите, Вы бьете отсчеты входного сигнала на кадры (назовем их так). Каждый кадр размером, как я понимаю, 400 отсчетов (семплов). Дальше над каждым блоком Вы выполняете линейную свертку с импульсом. И результат записываете на выход? Так?

Так вот, если Вы делаете именно так, то это неверно для сигнала длительностью более фрейма. В вычислении свертки каждого следующего фрейма отсутствует предыстория предыдущего фрейма. Например, если мы подадим на вход сигнал в виде перехода 0->1, совпадающего с 50тым семплом фрейма и другой сигнал, но с точкой перехода на 350м семпле, то на выходе получим разный результат, чего, естественно, не должно происходить при обычной лобовой линейной свертке, ибо она инвариантна от времени.
  

(Вложенный файл удалён)

"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредствен
Наверх
WWW  
IP записан
 
 
  « Главная ‹ Раздел Наверх этой страницы