Сгенерируйте код С из модели Simulink

Simulink® Coder™ генерирует автономный C и Код С++ из моделей Simulink для развертывания в большом разнообразии приложений. Для списка функций DSP System Toolbox™, поддерживавших Simulink Coder, смотрите Блоки, Поддержанные для генерации кода C.

Этот пример генерирует код С от ex_codegen_dsp модель и сборки исполняемый файл от сгенерированного кода. Можно запустить исполняемый файл в MATLAB® среда. Кроме того, можно группировать и переместить код к другой среде разработки, которая не имеет MATLAB и продуктов Simulink установленными.

Откройте модель

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

open_system('ex_codegen_dsp')

Snapshot of model diagram. There are two input blocks, Sine Wave block and the Random Source block. The output of the Sine Wave block is fed as the first input to the Time Scope block. The output of the Random Source block is fed to the Input signal port of the Normalized LMS Filter block. The same output is also lowpass filtered using a Lowpass Filter block. This lowpass filtered output is fed to the desired signal port of the LMS Filter block. The noisy lowpass filtered signal is added to the output of the Sine Wave and is fed to the second input port of the Time Scope block. The output of the Normalized LMS block subtracts from the noisy Sine Wave Signal and feeds the third input of the Time Scope block. The Error signal of the Normalized LMS block feeds the fourth input of the Time Scope block. The Weights computed by the LMS Filter block feed to the Array Plot block and stored to the workspace as the "filter_wts" parameter.

Можно альтернативно создать модель с помощью шаблона DSP System. Для получения дополнительной информации смотрите, Конфигурируют окружение Simulink для Моделей Обработки сигналов.

Сконфигурируйте модель для генерации кода

Подготовьте модель к генерации кода путем определения настроек генерации кода в диалоговом окне Configuration Parameters. Выберите соответствующий решатель и цель генерации кода, и проверяйте настройку модели на КПД выполнения. Для получения дополнительной информации о каждом из этих шагов смотрите, Генерируют код С для Модели (Simulink Coder).

Симулируйте модель

Симулируйте модель. Time Scope показывает вход и отфильтровал характеристики сигнала.

Output of the Time Scope block. The first signal is the original sinusoidal signal. The second signal is the sinusoidal signal with low frequency noise. The third signal is the approximation of the input signal. The fourth signal is the error signal generated by the Normalized LMS filter block.

Array Plot показывает последние 32 веса фильтра, к которым фильтр LMS эффективно адаптировался и отфильтровал шум от сигнала.

The y-axis is labelled as Filter Weights and ranges from -0.2 to 0.6, x-axis is labelled as Number of Weights and ranges from 0 to 32.

К этим коэффициентам можно также получить доступ используя следующую команду:

filter_wts(:,:,1201)

Сгенерируйте код из модели

Прежде чем вы сгенерируете код из модели, необходимо сначала гарантировать, что у вас есть разрешение записи в вашей текущей папке.

Чтобы сгенерировать код, необходимо внести следующие изменения:

  1. Во вкладке Modeling панели инструментов модели нажмите Model Settings. Диалоговое окно Configuration Parameters открывается. Перейдите к вкладке Code Generation, выберите параметр Generate code only и нажмите Apply.

  2. В галерее Apps нажмите Simulink Coder. Вкладка C Code появляется. Кликните по значку Generate Code ().

После того, как модель закончила генерировать код, Code Generation Report появляется, позволяя вам смотреть сгенерированный код. Обратите внимание на то, что процесс сборки создает новую названную подпапку ex_codegen_dsp_grt_rtw в вашем текущем MATLAB рабочая папка. Эта подпапка содержит все файлы, созданные процессом генерации кода, включая тех, которые содержат сгенерированный исходный код C. Для получения дополнительной информации о просмотре сгенерированного кода смотрите, Генерируют код С для Модели (Simulink Coder).

Создание и запуск сгенерированного кода

Настройте Компилятор C/C++

Чтобы создать исполняемый файл, необходимо настроить поддерживаемый компилятор C. Для списка компиляторов, поддержанных в текущем релизе, см. Поддерживаемые и Совместимые Компиляторы.

Чтобы настроить ваш компилятор, запустите следующую команду в командной строке MATLAB:

mex –setup

Создайте сгенерированный код

После того, как ваш компилятор является настройкой, можно создать и запустить скомпилированный код. ex_codegen_dsp модель в настоящее время сконфигурирована, чтобы сгенерировать код только. Чтобы создать сгенерированный код, необходимо сначала внести следующие изменения:

  1. Во вкладке Modeling панели инструментов модели нажмите Model Settings. Диалоговое окно Configuration Parameters открывается. Перейдите к вкладке Code Generation, очистите параметр Generate code only и нажмите Apply.

  2. Во вкладке C Code панели инструментов модели кликните по значку Build ().

Генератор кода создает исполняемый файл и генерирует Code Generation Report. Генератор кода помещает исполняемый файл в рабочую папку. На Windows исполняемый файл ex_codegen_dsp.exe. На Linux исполняемый файл ex_codegen_dsp.

Запустите сгенерированный код

Чтобы запустить сгенерированный код, введите следующую команду в командную строку MATLAB:

!ex_codegen_dsp

Выполнение сгенерированного кода создает MAT-файл, который содержит те же переменные как сгенерированные путем симуляции модели. Переменные в MAT-файле называют с префиксом rt_. После того, как вы запустите сгенерированный код, можно загрузить переменные из MAT-файла путем ввода следующей команды в подсказке MATLAB:

load ex_codegen_dsp.mat

Можно теперь сравнить переменные из сгенерированного кода с переменными из симуляции модели. Чтобы получить доступ к последнему набору коэффициентов от сгенерированного кода, введите следующее в подсказку MATLAB:

rt_filter_wts(:,:,1201)

Обратите внимание на то, что коэффициенты в filter_wts(:,:,1201) и rt_filter_wts(:,:,1201) соответствие.

Для получения дополнительной информации о создании и выполнении исполняемого файла, смотрите, Генерируют код С для Модели (Simulink Coder).

Переместите код к другой среде разработки

Если вы генерируете код из своей модели Simulink, можно переместить код к другой среде разработки с помощью утилиты pack-and-go. Используйте эту утилиту, когда среда разработки не будет иметь продукты Simulink и MATLAB.

Утилита pack-and-go использует инструменты для настройки процесса сборки после генерации кода и a packNGo (Simulink Coder) функция, чтобы найти и упаковать файлы для создания исполняемого образа. Файлы упакованы в сжатом файле, что можно переместить и распаковать использование стандартной утилиты zip.

Можно группировать код или использованием пользовательского интерфейса или при помощи интерфейса командной строки. Интерфейс командной строки обеспечивает больше управления деталями упаковки кода. Для получения дополнительной информации о каждом из этих методов смотрите, Перемещают Код к Другой Среде разработки (Simulink Coder).

Для примера о том, как группировать код С и исполняемый файл, сгенерированный из этого примера, смотрите, Перемещают Код, Сгенерированный от Модели Simulink до Другой Среды разработки.

Похожие темы

Внешние веб-сайты