Модераторы: Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сигнальные процессоры и с чем их едят, сигнальные процессоры 
:(
    Опции темы
Курсант
Дата 14.5.2011, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 338
Регистрация: 21.2.2009
Где: Балашиха или Воро неж

Репутация: нет
Всего: 4



Всем здравствуйте smile

Пытаюсь срочно изготовить для дипломного проекта железяку. Идеология железяки - считывание входного сигнала и генерация выходного. Алгоритм обработки входного сигнала есть, схему на микроконтроллере в общем то сделаю, программу адаптирую. И вроде никаких трудностей, но есть подозрение, что лучше реализовать все на сигнальном процессоре... Но я ничего про них не знаю. Ни как их втыкать в схему, ни вообще что это такое, какие у них бывают входы и выходы. Разбираться по мануалам времени совсем нет - осталось только 1.5 месяца до сдачи, на работе график напряженный, дома приходится работать иногда.
В связи с этим вопрос - сигнальные процессоры с точки зрения применения в схеме - это то же самое что микроконтроллеры? Им нужно только питание и аналоговый вход/выход? У них есть встроенные АЦП и ЦАП? Тактовые генераторы?

Или это тоже самое что процессоры, и им нужен чипсет там и прочая фигня, и устройство по сложности рискует превратиться в материнскую плату...

Намного ли сложнее программировать под сигнальный процессор по сравнению с программированием под микроконтроллер?

Наверное, эти ответы и станут определяющими в выборе железа для реализации.

Пока что собираюсь поставить Attiny 2313, в качестве входа юзать встроенный АЦП, на выходе поставить ЦАП, после ЦАП поставить усилитель. Но это мне кажется примитивным.
PM ICQ Skype   Вверх
xvr
Дата 15.5.2011, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 1
Всего: 223



Цитата(Курсант @  14.5.2011,  10:45 Найти цитируемый пост)
В связи с этим вопрос - сигнальные процессоры с точки зрения применения в схеме - это то же самое что микроконтроллеры? Им нужно только питание и аналоговый вход/выход? У них есть встроенные АЦП и ЦАП? Тактовые генераторы?

Грубо говоря - да.

Цитата(Курсант @  14.5.2011,  10:45 Найти цитируемый пост)
Намного ли сложнее программировать под сигнальный процессор по сравнению с программированием под микроконтроллер?

У них разные сферы применения. Сигнальные процессоры (или как их называют родители - DSP) оптимизированы под цифровую обработку сигналов (ЦОС как к нас говорят), т.е. под математические алгоритмы, в основном циклические. Так что у них в системе команд присутствуют специальные команды для организации циклов, а так же есть специальные команды (и аппаратура)  для всяких специфичных вычислений, например умножение с накоплением (MAC) - перемножаются 2 числа и прибавляются к аккумулятору расширенной разрядности.


Цитата(Курсант @  14.5.2011,  10:45 Найти цитируемый пост)
Алгоритм обработки входного сигнала есть, 

Огласите алгоритм, можно будет сказать более подробно - нужен вам DSP или будет достаточно обычного контролера. Например, если вам нужно считать FFT в реальном времени, то DSP однозначно нужно. Если же нужно сделать примитивное скользящее усреднение, то DSP не нужен.

Подсказка - многие м/сх разных кодеков (например все аппаратные MP3 декодеры), это специализированные DSP с масочными прошивками


PM MAIL   Вверх
Mazzi
Дата 15.5.2011, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Правильный
**


Профиль
Группа: Комодератор
Сообщений: 825
Регистрация: 3.4.2003

Репутация: нет
Всего: 21



Цитата(Курсант @ 14.5.2011,  10:45)
Пока что собираюсь поставить Attiny 2313, в качестве входа юзать встроенный АЦП...

В этом микроконтроллере нет АЦП.

Это сообщение отредактировал(а) Mazzi - 15.5.2011, 17:30


--------------------
Мне нужны помощники.
PM MAIL WWW   Вверх
Курсант
Дата 16.5.2011, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 338
Регистрация: 21.2.2009
Где: Балашиха или Воро неж

Репутация: нет
Всего: 4



Цитата(Mazzi @  15.5.2011,  17:29 Найти цитируемый пост)
В этом микроконтроллере нет АЦП.


Да, действительно, в нем нет АЦП, а мне в одном месте сказали что есть... Спасибо большое.

Цитата(xvr @  15.5.2011,  15:45 Найти цитируемый пост)
Огласите алгоритм, можно будет сказать более подробно - нужен вам DSP или будет достаточно обычного контролера.


Алгоритм сейчас не могу расписывать - достаточно нудное дело... Он циклический, на каждом шаге высчитываются коэффициенты, один по формуле e^f(t), второй по формуле sin(wt+fi)... Потом эти коэффициенты участвуют в формуле типа ax+by... и так далее, в общем умножение и сложение...
Про сигнальный процессор подумалось потому, что есть подозрение, что на нем за фиксированное время можно посчитать экспоненту или синус... Раз уж вычисления циклические, и на каждом шаге надо считать экспоненту и синус, и чем выше частота тем выше точность прибора...

PM ICQ Skype   Вверх
Курсант
Дата 16.5.2011, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 338
Регистрация: 21.2.2009
Где: Балашиха или Воро неж

Репутация: нет
Всего: 4



впрочем, попозже сяду и распишу... сейчас не могу... smile
PM ICQ Skype   Вверх
Курсант
Дата 21.5.2011, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 338
Регистрация: 21.2.2009
Где: Балашиха или Воро неж

Репутация: нет
Всего: 4



Собственно расписываю... 
Код

include <avr/io.h>
#include <math.h>

float x11 = 0;
float x21 = 0;

void main (void) {

 float T=0.1;
 float K=10;
 float ksi=0.2;
 float dt = 0.00001;
 float u = -ksi/T;
 float v = sqrt (1-ksi*ksi)/T;
 float A11 = exp(u*dt)*(v*cos(v*dt)-u*sin(v*dt))/v;
 float A12 = exp(u*dt)*sin(v*dt)/v;
 float A21 = -exp(u*dt)*sin(v*dt)*(u*u+v*v)/v;
 float A22 = exp(u*dt)*(u*sin(v*dt)+v*cos(v*dt))/v;
 float B11 = -exp(u*dt)*K*cos(v*dt)+K+exp(u*dt)*K*u*sin(v*dt)/v;
 float B21 = exp(u*dt)*K*u*sin(v*dt)*u/v+exp(u*dt)*K*v*sin(v*dt);
 float C11 = 1;
 float C12 = 0;
 float g = 1;
 x11 = A11*x11+A12*x21+B11*g;
 x21 = A21*x11+A22*x21+B21*g;
 float y = C11*x11+C12*x21;

}


Примерно такой код.
Это код обработки входного сигнала.
При эмуляции в AVR Studio для контроллера Atmega 16 получилось 80 000 тактов. То есть частота дискретизации и обработки - порядка 200 действий в секунду. Маловато будет... Можно конечно вынести за скобки экспоненту и синусы с косинусами. Но в общем то мало верится в результат. Еще ближе мне идея работать через ассемблер, но это получится нетехнологично - под си у меня даже моделирование сделано...

Применение сигнального процессора принесет больший эффект?

Это сообщение отредактировал(а) Курсант - 21.5.2011, 22:07
PM ICQ Skype   Вверх
xvr
Дата 21.5.2011, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 1
Всего: 223



Непонятно, что из этого всего переменные, а что константы. Пока складывается впечатление, что все константы. Если так, то процессор вообще не нужен  smile 
В противном случае AVR явно не потянет, тут надо что то типа ARM'а (как минимум). sin и exp считать табличным методом.
DSP в данном случае IMHO перебор.

PM MAIL   Вверх
Курсант
Дата 21.5.2011, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 338
Регистрация: 21.2.2009
Где: Балашиха или Воро неж

Репутация: нет
Всего: 4



Да, точно smile Получилось что константы - но это только шаг бесконечного цикла, я сделал тестовый прогон одного шага чтобы выяснить время выполнения, да так и отправил smile

Это сообщение отредактировал(а) Курсант - 22.5.2011, 09:13
PM ICQ Skype   Вверх
Курсант
Дата 22.5.2011, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 338
Регистрация: 21.2.2009
Где: Балашиха или Воро неж

Репутация: нет
Всего: 4



В продолжение темы... Скачал 5-ю студию, пытаюсь отладить программу на 32-разрядной архитектуре. Пишет что "undefined reference to sqrt, sin, cos, exp". Текст программы:
Код

#include <avr32/io.h>
#include <math.h>

double x11 = 0;
double x21 = 0;
double T=0.1;
double K=10;
double ksi=0.2;
double dt = 0.00001;

double A11, A12, A21, A22, B11, B21, C11, C12, g, y;

void main (void) {

double u = -ksi/T;
double v = sqrt (1-ksi*ksi)/T;
double eudt = exp ( u * dt );
double vdt = v * dt;
double cosvdt = cos (vdt);
double sinvdt = sin (vdt );
double keudt = K * eudt;
double vsinvdt = v * sinvdt;
double usinvdt = u * sinvdt;
double vcosvdt = v * cosvdt;
double ucosvdt = u * cosvdt;

 A11 = eudt*(vcosvdt - usinvdt)/v;
 A12 = eudt*sinvdt/v;
 A21 = -eudt*sinvdt*(u*u+v*v)/v;
 A22 = eudt*(u*sin(vdt)+v*cos(vdt))/v;
 B11 = -keudt*cos(vdt)+K+keudt*u*sin(vdt)/v;
 B21 = keudt*u*sin(vdt)*u/v+keudt*v*sin(vdt);
 C11 = 1;
 C12 = 0;
 g = 1;
 x11 = A11*x11+A12*x21+B11*g;
 x21 = A21*x11+A22*x21+B21*g;
 y = C11*x11+C12*x21;

}


Файл math.h я нашел, во внутренностях какой то 
Код

extern double sqrt _PARAMS((double));

прописан, дальше я не понял ничего... Можно ли для начала воспользоваться какими-то библиотечными синусами-косинусами-экспонентами, или сразу табличное вычисление реализовывать?
PM ICQ Skype   Вверх
daemonaz
Дата 19.8.2011, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 4.5.2008

Репутация: нет
Всего: нет



На мой взгляд лучше заранее вычислить эти константы где-нибудь на ПК (mathlab), затем созадть таблицу констант, остается ввести исходные данные и вычислить. Лучше делать не в float, а в Int. предварительно преобразовав числа с плавающей точкой в целочисленные.
PM MAIL   Вверх
ТарасАтавин
Дата 23.11.2013, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 26.8.2013

Репутация: нет
Всего: нет



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


--------------------
Не так всё плохо, как оно есть на самом деле.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разное (электроника) | Следующая тема »


 




[ Время генерации скрипта: 0.1641 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.