Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2017-авг-23 03:46

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
СообщениеДобавлено: 2014-ноя-06 13:57 
Не в сети

Зарегистрирован: 2012-ноя-07 08:16
Сообщения: 10
Здравствуйте!
Столкнулся с небольшой проблемой и решил спросить совета тут. Суть в следующем: с частотой 15кГц выполняется прерывание. Во время этого прерывания включаются 2 ножки, и "подается сигнал" в DSP. После этого оба ядра считают до 500 и должны выключать ножки. Проблема в том, что RISC успевает это сделать за 36 микросекунд, а DSP требуется для этого в ТРИ раза больше времени. Частоту вроде одинаковую настроил. В чем может быть дело?


Вложения:
winch_0_demo.rar [655.44 КБ]
Скачиваний: 106
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2014-ноя-06 16:20 
Не в сети

Зарегистрирован: 2010-июл-08 08:50
Сообщения: 733
Откуда: АО "ПКК Миландр"
В программе для DSP я вижу цикл for (i = 0; i < 500; i++){}, в котором и происходит подсчет до 500, а в программе для RISC где аналогичная конструкция? (или вы считаете до 500 с помощью таймера?)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2014-ноя-07 07:20 
Не в сети

Зарегистрирован: 2012-ноя-07 08:16
Сообщения: 10
я считаю в функции прерывания.
Код:
void Timer2_IRQHandler(void)
{
    short i;
        MDR_TIMER2->STATUS = 0;
        PORT_SetBits(MDR_PORTB,PORT_Pin_13);
        PORT_SetBits(MDR_PORTB,PORT_Pin_15);
        StartDSPTask();
   for (i = 0; i < 500; i++)
   {}
    PORT_ResetBits(MDR_PORTB,PORT_Pin_13);


}


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2014-ноя-18 16:56 
Не в сети

Зарегистрирован: 2010-июл-08 08:50
Сообщения: 733
Откуда: АО "ПКК Миландр"
Получил аналогичный результат, через пару дней постараюсь ответить.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2014-ноя-20 13:21 
Не в сети

Зарегистрирован: 2010-июл-08 08:50
Сообщения: 733
Откуда: АО "ПКК Миландр"
по нашим измерениям на 72 МГц (тактовый сигнал и RISC, и DSP ядер)
for(i = 0; i < 500; i++){}

RISC выполняет примерно за 36 мкс,
DSP выполняет примерно за 108 мкс.

Не понятен практический смысл данного измерения.
DSP предназначен для математической обработки данных, в том числе типов float.

Данный конкретный цикл RISC ядро выполняет примерно в 3 раза быстрее, но на другой задаче (например, обработка чисел с плавающей точкой) DSP покажет большую производительность чем RISC.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2014-ноя-20 13:48 
Не в сети

Зарегистрирован: 2012-ноя-07 08:16
Сообщения: 10
Ну это просто пример. А сравнивать скорости выполнения я начал после того, как написанная программа под векторное управление двигателем не удовлетворила вычислительные потребности. А там и матрицы есть и числа float, но почему-то RISC успевает производить вычисления с нужной частотой, а DSP нет. Я вот и подумал, может в настройках что-то не доглядел и недонастроил.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2014-ноя-20 14:43 
Не в сети

Зарегистрирован: 2010-июл-08 08:50
Сообщения: 733
Откуда: АО "ПКК Миландр"
а оптимизация не помогает?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2015-дек-23 21:00 
Не в сети

Зарегистрирован: 2015-дек-18 14:39
Сообщения: 1
для Н=1 ответ 1 иначе...

s=2;

for i:=1 to n-1 do
s:=s21;
writes;

forint i=0;i<n-1;i
s=s21;
cout<<s;

вроде как то так.. должно быстро работать...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB