Когда мне была поставлена задача разработать приложение для DSP-процессора, визуализирующее работу БПФ, я понял, что моделирование волн отлично подойдет для этой цели.

Математическая модель волны
Основную идею математической модели волны можно описать таким выражением:
Для создания анимации движения волн в реальном времени необходимо пересчитывать матрицы
Теперь перейдем к описанию DSP-процессора, которому, исходя из вышеописанных формул, нужно уметь:
- Вычислять БПФ.
- Поэлементно умножать матрицы.
- Складывать матрицы.
- Вычислять вектора синусов и косинусов.
В качестве DSP-процессора использовался 1879ВМ6Я на архитектуре NeuroMatrix, разработанный в компании ЗАО НТЦ «Модуль». Схема на рисунке 1.
Процессор содержит 2 параллельно работающих ядра NMPU0 и NMPU1 (работают на частоте 500 МГц), каждое из которых имеет RISC процессор и векторный сопроцессор (NMCore FPU для плавающей точки и NMCore INT для целочисленной арифметики). Ядро NMPU0 предназначено для обработки данных с плавающей точкой, а NMPU1 – целочисленных данных. NMPU0 имеет 8 банков внутренней памяти SRAM (по 128 кБ каждый), а NMPU1 – 4 банка (по 128 кБ) такой же памяти. На 1879ВМ6Я установлен контроллер DMA и интерфейс DDR2.

Рис. 1. Схема процессора 1879ВМ6Я
Процессор размещен на инструментальном модуле МС121.01 (см. рис. 2). Также на этом модуле имеется 512 МБ памяти DDR2.

Рис.2. МС121.01

Рис. 3. Схема взаимодействия МС121.01 и PC
МС121.01 взаимодействует с PC по USB (схема на рисунке 3). На программном уровне это взаимодействие организуется с помощью библиотеки загрузки и обмена данными, которая входит в состав SDK этой платы. Заранее вычисленные матрицы
Используя векторные функции библиотеки NMPP для вычисления синусов, косинусов, умножения и сложения векторов, процессор рассчитывает строки матрицы
На практике получается, что 1879ВМ6Я вычисляет матрицу
На программном уровне работа с контроллером DMA и кольцевым буфером осуществляется с помощью функций библиотеки HAL (Hardware abstraction Level) для процессоров NeuroMatrix.
Визуализация волновой поверхности
Когда матрица поля высот
Масштабируя новые координаты и соединяя по ним точки прямыми линиями, можно увидеть анимацию океанских волн (см. на видео ниже). Для визуализации поверхности использовалась библиотека вывода изображения на экран vshell.
Заключение
В заключение, хочется сказать, что на вычисление и передачу по USB одной матрицы
Разница в 2.2 млн. тактов (4.7 млн. — 2.5 млн. = 2.2 млн.) говорит о том, что в системе PC – МС121.01 USB является «бутылочным горлышком», и 1879ВМ6Я можно нагрузить расчетами на 46% больше, не получив просадку FPS.
Также хочется отметить, что на фоне передачи данных по USB и вычислений на сопроцессоре для плавающей точки, может быть задействован сопроцессор для целочисленной арифметики, который в этой задаче не использовался.
В таблице приведена производительность некоторых векторных функций библиотеки nmpp.
| Функция | Такты |
|---|---|
| Одномерное БПФ, 256 точек | 1770 |
| Синус, 256 точек | 1400 |
| Косинус, 256 точек | 1400 |
Ссылки:
NMPP — библиотека примитивов для архитектуры NeuroMatrix
HAL — библиотека абстракции аппаратно-зависимой части NeuroMatrix
VSHELL — библиотека обработки и вывода на экран изображения

