Перейти к содержанию
    

STM32F7(F4) vs C2000 Delfino

Добрый день!

 

Задача - считать FFT ~ 2048-4096 точек. DSP типа Schark или С6000 избыточен. Cortex-M4(7) получается как бы впритык.

 

Наткнулся на семество С2000 Delfino F2833x/F2837x Из плюсов, которые я вижу:

- 2 ядра по 200МГц

- Viterbi Complex Unit (VCU II) accelerators - для fft должно пригодиться

- периферия посерьезней.

 

Однако смущает то, что STM32 у всех на слуху, больше информации по ним, а это какая то темная лошадка и ориентирована больше всего на управление двигателями. По бенчмаркам также нет ясности будет ли выигрыш в скорости fft.

Также встречал на этом форуме, что С2000 типа мертвое семейство.

 

Кто то пробовал этот аппарат и есть ли смысл заменять им STM32?

Изменено пользователем ozone

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Использую оба.

 

Техассик С2000 очень крут для задач обработки сигналов! Нисколько это не мёртвое семейство, есть у них своя ниша.

 

Помимо VCU у последних Дельфинов есть ещё и TMU, там синусы считаются за 4 такта, у кортекса стыдно сказать сколько они считаются.

 

Сравните бенчмарки рассчёта FFT, С2000 будет быстрее в разы.

 

Не в последнюю очередь это обусловлено очень правильным подходом к созданию библиотек у TI.

Практически всё написано на ассемблере под эти процы. Скачайте ControlSuite и поройтесь в папочках библиотек, есть бенчмарки рассчётов FFT и многого другого.

 

У STM32 все (или почти все) библиотеки написаны на Си, в частности это CMSIS DSP_Lib.

 

Не так давно сравнивал время рассчёта CRC16, на С2000 получилось быстрее в несколько раз, там использовался VCU-I.

 

Из недостатков С2000 перед STM32 можно назвать разве что бОльшее энергопотребление.

 

А время рассчёта FFT надо бы сравнить, самому интересно. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Использую оба

...

 

О) Спасибо за информацию! Присмотрюсь к зверю повнимательнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, занятный вопрос.

Из того, что быстро удалось найти:

 

C2000: 1к - 53219 циклов для FPU(из spry288.pdf). Т.е. на 200МГц примерно 0.25мс

 

M4 cores, using the FPU. A 2048 point FFT (using float) took about 2.5ms with maximal optimization (откуда-то из инета, проц не указан, но скорее всего F4, см. далее).

Или такое для STM32F4: 128-sample real floating point FFT/IFFT takes about 120us with the CPU running at max rated clock speed (т.е. 180МГц). Немного не то, но для оценки годится.

 

Т.е., разница в производительности на БПФ раз в 5 при близких частотах (около 200МГц).

От F7 я бы тоже чудес ждать не стал, но за счёт кэш-памяти какой-то прирост производительности возможен.

 

А вот дельфины действительно выглядят бодренько.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Осторожно! В этом посте полно любви и обожания. :excl:

 

C2000: 1к - 53219 циклов для FPU(из spry288.pdf). Т.е. на 200МГц примерно 0.25мс

Это устаревшие данные. :)

 

Вот последняя версия библиотеки под TMU0, бенчмарки к FFT прилагаются: FPU_SW_LIB_UG.pdf

 

Если частично, то вот:

2LWfD.png

 

Как там говорят: "Кортекс, давай до свидания! :smile3009: "

 

Да, вот документация на библиотеку VCU там CRC и комплексное FFT: C28X_VCU_LIB_UG.pdf

 

Ну и уж для полноты картины, у последних С2000 есть ещё CLA-II вещь очень крутая, как ещё одно ядро (в двухядерных как ещё два): CLA_MATH_LIB_UG.pdf Использую по полной, очень резво работает.

 

А по кортексу F4 данные вот, правда Q15, а не float:

1024-FFT (Complex in Q15 Format)

Cortex-M0 : 855 733 cycles

Cortex-M0+ : 664 531 cycles

Cortex-M3 : 204 244 cycles

Cortex-M4 : 89 839 cycles

 

256-FFT (Complex in Q15 Format)

Cortex-M0 : 175 375

Cortex-M0+ : 136 296 cycles

Cortex-M3 : 41 430 cycles

Cortex-M4 : 18 480 cycles

Взято отсюда: https://my.st.com/public/STe2ecommunities/m...rrentviews=3466

 

И вот, упомянутая мною CMSIS под STM32F4: http://community.arm.com/groups/processors...n-s-perspective

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это устаревшие данные. :)

...

А по кортексу F4 данные вот, правда Q15, а не float:

...

 

Ну, для CFFT_f32 там разница всего в несколько циклов. Так что не принципиально. Молотилка - зверь. Для своего класса, ессно.

 

А вот корректных сопоставимых данных по F4 как-то на поверхности не видно.

Целочисленный 16-бит БПФ же уже просто не интересен. Что-то для ценок может дать, но не более.

 

Оценки оценками, но реальные показатели для f32 на реальном проце хотелось бы увидеть.

Что-то мне самому мои "в 5 раз" кажутся подозрительными.

 

А интерес к F4 есть, и хотелось бы понять, с чем придётся иметь дело, если стартует один из намечающихся проектов.

Тем более, процессоры хотя и пересекаются в каком-то классе задач, но достаточно отличаются что бы прямо не конкурировать.

Крче, оба интересны.

 

 

...И вот, упомянутая мною CMSIS под STM32F4

...

 

А вот это я слёту не понял, есть подозрительные моменты. Целочисленный 32-бита - это немного другое дело, но тоже сгодится.

Надо будет как следует разобраться, когда время появится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Техасовским данным обычно можно верить почти свято. Сколько раз я проверял, всё сходилось чётко +-2-4 такта на вызов функции.

Думаю на днях испытаю в реальности время вычисления FFT одного и того же массива на обоих процах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Техасовским данным обычно можно верить почти свято.

...

 

Тут вопросов в принципе не может быть. ТИ это ТИ.

 

Результаты тестов буду ждать.

Если будет возможность, попробуйте не только 1к, но и максимальную длину, которую можно впихать.

Вроде бы, заклинивать на больших массивах не должно (таки, не связка кэш + ДДР), но мало ли.

 

П.С. Ещё раз по-быстрому взглянул на архитектуру. Таки, проблемы впихивания БПФ с большой размерностью / влияния на производительность при разном использовании памяти очень даже возможны. За памятью придётся приглядывать и м.б. настраивать размещение данных и кода вручную.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Использую оба.

 

А не подскажите, каким jtag-эмулятором для С2000 пользуетесь? Как я понимаю дешевых вариантов здесь уже нет.

Изменено пользователем ozone

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну почему же нету, есть. XDS100 например, он на базе FT2232. Вот схема, на шестой странице: HVMotorCtrl_PFC_SCH_R1.1_.pdf Однако скорость для отладки по сравнению с XDS510 отвратная.

 

Sauris делает отличные эмуляторы, стоят они сопоставимо с J-Link Base, так что ничего не дороже. Code Composer Studio так и вовсе почти бесплатный, в отличии от IAR/Keil. Хотя под ST сижу в Eclipse c GCC совершенно бесплатно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не прошло и пол года, как я добрался до FFT :)

 

Пока что STM32F415:

Версия библиотеки под GCC.

Cortex M4 CMSIS ARM GCC (120MHz) СFFT float32:

128 точек 137.3us 16476 тактов;

256 точек 284.7us 34161 такт;

512 точек 527.5us 63300 тактов;

1024 точек 1.246ms 149520 тактов;

2048 точек 2.438ms 292560 тактов.

 

4096 точек сделать не смог, у проца закончилась ОЗУ, хотя на пустом проекте наверное может хватить памяти, но думаю пустых проектов не бывает. :)

 

При этом насколько я понял фазы не считались, только амплитуды. Функций для фаз я почему-то не нашёл и в примере их нет, у TI куча функций ещё и на фазы. По поводу выравнивания данных я немного не понял, но скорее всего выровненные 10кГц + белый шум, мнимая часть у всех была нулевой.

 

Для сравнения думаю уже достаточно, у C28xx для самого плохого случая с невыровненными данными и с масштабированием, получается почти 80тыс тактов под массив на 1024 точки. А для выровненных и без масштабирования, как в эксперименте выше, получается 71тыс тактов.

 

Да, есть ещё вот какой момент, FFT с модулем VCU считается значительно быстрее, однако формат там Q15 (32бит), а не Float.

Под float и FFT немножко заточен модуль TMU, который экономит примерно 15000 тактов на 1024 точках.

 

К сожалению последних процов от TI с TMU и VCU-II у меня нет, поэтому с ними испытать не смогу. VCU-I принимает максимум 16 бит, имейте это ввиду.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не прошло и пол года, как я добрался до FFT :)

 

Большое спасибо за труды, результаты интересны! :beer:

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...

К сожалению последних процов от TI с TMU и VCU-II у меня нет...

Ну, с TI всё нсколько проще. А вот результаты по F4 действительно очень интересны. Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...