УДК 004.4

Встроенное программирование MATLAB

Ли Хунян – бакалавр Белорусского государственного университета.

Аннотация: В данной статье рассмотрены возможности программных продуктов MathWorks, позволяющие автоматизировать процесс разработки, отладки и верификации программного обеспечения для встраиваемых систем управления.

В этой статье описывается подключаемый модуль MetaWare MATLAB/Simulink, который позволяет пользователям процессоров DesignWare ARC создавать высоко оптимизированные приложения с использованием платформы MathWorks MATLAB/Simulink.

Ключевые слова: MATLAB, Simulink, Embedded Coder, Модельно-ориентированное проектирование, PIL-режим.

Поддержка программирования на C++ для инструкций DSP и памяти XY процессора ARC. В комплект входит богатая библиотека функций ЦОС, оптимизированных для процессоров ARC, которые разработчики C/C+ могут легко интегрировать в программное обеспечение встроенных приложений.

MathWorks MATLAB® – это платформа программирования, разработанная специально для инженеров и ученых. Он объединяет вычислительные функции, функции визуализации и программирования в простой в использовании среде. В этой среде проблемы и решения выражаются на языке MATLAB, матричном языке, который позволяет очень естественно представлять вычислительную математику.

Simulink® – это дополнение к MATLAB, которое обеспечивает интерактивную графическую среду для моделирования, имитации и анализа динамических систем. Используя MATLAB и Simulink вместе, пользователи могут сочетать текстовое и графическое программирование для проектирования своих систем в среде моделирования [1].

MathWorks MATLAB – это платформа математического программирования с собственным языком и богатой библиотекой для разработки математических алгоритмов, выполнения анализа данных и создания моделей и приложений. Simulink предоставляет графический интерфейс пользователя (GUI) для построения моделей в виде модульных диаграмм и включает обширную библиотеку предопределенных модулей для построения графических моделей систем. И MATLAB, и Simulink поддерживают генерацию C-кода (с помощью MathWorks 'Embedded Encoder'), что позволяет развертывать смоделированные и проверенные проекты систем на ПК, серверы, встраиваемые системы и т.д.

Комплект разработчика ARC MetaWare от Synopsys – это комплексное решение C/C ++, содержащее все компоненты, необходимые для поддержки разработки, отладки и оптимизации встраиваемых приложений для всех процессоров DesignWare ARC [2].

Подключаемый модуль MetaWare MATLAB/Simulink интегрирует DesignWare ARC MetaWare Development Kit в MATLAB и Simulink, позволяя компилировать код C, созданный "встроенным кодером", с помощью компилятора MetaWare. Скомпилированный код может быть запущен на процессорах ARC (например, с помощью DesignWare ARC EM Starter Kit или платформы разработки программного обеспечения DesignWare ARC AXS103) и эмуляторах (например, эмуляторе набора инструкций ARC nSIM). На рисунке 1 представлена интеграция MetaWare с MATLAB/Simulink.

image1

Рисунок 1. Интеграция MATLAB/Simulink MetaWare.

Плагин поставляется вместе с MetaWare Development Kit и включает в себя руководство пользователя. Его можно легко установить из MATLAB с помощью опции Install App.

Программа генерации кода MATLAB/Simulink генерирует код ANSI/ISO C. Однако для достижения превосходной производительности код должен быть сгенерирован специально для процессора, и функция замены кода MATLAB/Simulink позволяет автоматически заменить указанные вызовы функций в сгенерированном коде на вызовы функций из кода, оптимизированного для целевого процессора. Функция замены кода заменяет некоторые распространенные вызовы функций ANSI/ISO C (генерируемые MATLAB/Simulink) на вызовы высоко оптимизированных функций, включенных в библиотеку MetaWare DSP.

Плагин позволяет настроить MATLAB для подстановки кода с целью использования функций из библиотеки DSP ARC компании Synopsys DesignWare.

Плагин предоставляет таблицу "отображения", которая указывает MATLAB, как выполнять замену кода, и обеспечивает идеальное использование библиотеки ARC MetaWare DSP:

  • Векторные функции;
  • Сложная математика;
  • Скалярные функции;
  • Вещественные и комплексные матричные функции.

Модули Simulink DSP включают:

  • Дискретная ПИИ;
  • Конволюция;
  • Коэффициенты корреляции;
  • Фильтр двойного второго порядка DF1/фильтр двойного второго порядка DF2T;
  • Извлечение/интерполяция FIR;
  • LMS-фильтр;
  • Вещественное/комплексное БПФ;
  • Вещественное/комплексное обратное БПФ.

Полная информация обо всех поддерживаемых отображениях приведена в руководстве пользователя. Например, в следующей таблице показаны поддерживаемые отображения матричных функций для библиотеки DesignWare ARC MetaWare DSP.

Таблица 1. Функции матрицы.

image2

MathWorks CRTOOL можно использовать для простого отображения отображений, выполняемых подключаемым модулем, или просто собрать приложение с включенными и выключенными отображениями, чтобы увидеть различия в сгенерированном коде.

Simulink поддерживает Processor-in-the-loop (PIL), метод разработки и тестирования моделей Simulink в аппаратном обеспечении. При моделировании PIL сгенерированный код запускается на целевом оборудовании. Результаты моделирования PIL переносятся в Simulink, чтобы можно было проверить численную эквивалентность результатов моделирования и генерации кода. Этот процесс проверки PIL является ключевой частью цикла проектирования и предназначен для обеспечения соответствия поведения развернутого кода поведению проекта. На рисунке 2 показана типичная установка PIL [3].

Плагин использует интерфейс JTAG-зонда Ashling Opella-XD для размещения ПК, тем самым поддерживая PIL на аппаратных мишенях ARC EM Starter Kit и ARC AXS103 Software Development Platform. PIL требует, чтобы мишень работала под управлением открытой программной платформы embARC (с FreeRTOS), доступной на сайте www.embarc.org.

image3

Рисунок 2. Типичная установка PIL с использованием JTAG-пробника Ashling Opella-XD.

API (rtIOStream) используется для управления коммуникацией между Simulink и кодом, выполняемым на целевом оборудовании, либо через последовательный интерфейс, либо через TCP/IP-соединение. Плагин поддерживает связь через последовательное соединение (UART через USB) или интерфейс TCP/IP.

Simulink позволяет параллельно запускать модули моделирования и модули PIL (работающие на аппаратном обеспечении) и сравнивать результирующие выходные данные обоих модулей, чтобы их можно было проверить в Simulink. Этот процесс проверки гарантирует, что развернутый код, работающий на оборудовании, соответствует проекту Simulink. На рисунке 3 показана параллельная работа симулятора и аппаратной цели. Обратите внимание, как сравниваются выходы двух модулей для проверки правильности работы [4].

image4

Рисунок 3. Схема Simulink, показывающая модули, работающие в Simulink (контроллер) и PIL (контроллер 1).

Подключаемый модуль MATLAB поддерживает собственный код, предоставляемый Simulink, для проведения анализа производительности или эталонных тестов. Если эта функция включена, сгенерированный код измеряется для регистрации времени, затраченного на выполнение функции. После выполнения моделирования Simulink предоставляет для анализа отчет об анализе производительности выполнения кода. Обратите внимание, что для выполнения эталонных тестов ARC TIMER0 должен присутствовать и быть включенным в целевом процессоре.

Замена кода с использованием библиотеки DesignWare ARC MetaWare DSP может улучшить общую производительность и улучшение обычно зависит от следующих факторов:

  • Оптимизированные функции/операторы (с использованием библиотеки ARC MetaWare DSP);
  • Размер входного сигнала вектора/матрицы.

Например, умножение матрицы 5x5 с использованием 32-битного типа данных с плавающей точкой одинарной точности выполнялось в 2,5 раза быстрее при использовании библиотеки ARC MetaWare DSP. Дискретные FIR-фильтры (q15 с фиксированной точкой; входной вектор 64x1) работают в 6,6 раз быстрее [5].

Заключение

Подключаемый модуль MATLAB/Simulink для комплекта разработки Synopsys DesignWare ARC MetaWare позволяет пользователям процессоров ARC генерировать высокопроизводительный код, как показано в приведенном выше контрольном примере. Используя встроенную библиотеку замены кода кодера MATLAB, подключаемый модуль может генерировать высоко оптимизированный код "C" для работы на архитектуре "ARC" с помощью библиотеки DesignWare ARC MetaWare DSP, которая использует расширения DSP архитектуры ARC.

Список литературы

  1. Коткин Г. Л., Попов Л. К., Черкасский В. С. Компьютерное моделирование физических процессов с использованием MATLAB. – 2021.
  2. Дьяконов В. MATLAB 6.5 SP1/7.0+ Simulink 5/6. Основы применения. – Litres, 2022.
  3. Хайэм Д. Дж., Хайэм Н. Дж. Руководство по MATLAB. – Общество промышленной и прикладной математики, 2016.
  4. Мартинес В. Л., Мартинес А. Р., Солка Дж. Исследовательский анализ данных с помощью MATLAB. – Чепмен и Холл / CRC, 2017.
  5. Чернобровин Н. Г. и др. Анализ устойчивости дискретной САУ в среде MATLAB. – 2020.

Интересная статья? Поделись ей с другими: