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

Рабочий процесс

Чтобы преобразовать код MATLAB®, который использует глобальные данные для фиксированной точки:

  1. Объявите переменные как глобальную переменную в вашем коде.

    Для получения дополнительной информации смотрите, Объявляют Глобальные переменные

  2. Перед использованием глобальных данных задайте и инициализируйте его.

    Для получения дополнительной информации смотрите, Задают Глобальные данные.

  3. Преобразуйте код в фиксированную точку от Fixed-Point Converter или использования fiaccel.

Fixed-Point Converter всегда синхронизирует глобальные данные между MATLAB и сгенерированной MEX-функцией.

Объявите глобальные переменные

При использовании глобальных данных необходимо сначала объявить глобальные переменные в коде MATLAB. Этот код показывает функцию use_globals, которая использует две глобальных переменные, AR и B.

function y = use_globals(u)
%#codegen
% Declare AR and B as global variables
global AR;
global B;
AR(1) = u + B(1);
y = AR * 2;

Задайте глобальные данные

Можно задать глобальные данные в глобальной рабочей области MATLAB в проекте Fixed-Point Converter, или в командной строке. Если вы не инициализируете глобальные данные в проекте или в командной строке, программное обеспечение ищет переменную в глобальной рабочей области MATLAB.

Задайте глобальные данные в глобальной рабочей области MATLAB

Чтобы преобразовать функцию use_globals, описанную в, Объявляют Глобальные переменные, необходимо сначала задать и инициализировать глобальные данные.

global AR B;
AR = ones(4);
B=[1 2 3];

Задайте глобальные данные в проекте Fixed-Point Converter

  1. На странице Define Input Types, после выбора и выполнения тестового файла, выбирают Yes next to Does this code use global variables.

    По умолчанию Fixed-Point Converter называет первую глобальную переменную в проекте g.

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

  3. Нажмите Add global, чтобы ввести более глобальные переменные.

    Примечание

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

Задайте глобальные данные в командной строке

Чтобы задать глобальные данные в командной строке, используйте опцию -globals fiaccel. Например, чтобы преобразовать функцию use_globals, описанную в, Объявляют Глобальные переменные к фиксированной точке, задают два глобальных входных параметров, AR и B, в командной строке. Используйте опцию -args, чтобы указать, что вход u является действительным, скалярным дважды.

fiaccel -float2fixed cfg -global {'AR',ones(4),'B',[1 2 3]} use_globals -args {0}
Также задайте тип и начальное значение с флагом -globals с помощью формата -globals {'g', {type, initial_value}}.

Чтобы обеспечить начальные значения для глобальных данных переменного размера, задайте тип и начальное значение с флагом -globals с помощью формата -globals {'g', {type, initial_value}}. Например, чтобы задать глобальную переменную g, который имеет начальное значение [1 1] и верхняя граница [2 2], введите:

fiaccel -float2fixed cfg -global {'g', {coder.typeof(0, [2 2],1),[1 1]}} myfunction
Для подробного объяснения синтаксиса смотрите coder.typeof.

Задайте постоянные глобальные данные

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

Задайте постоянные глобальные данные в Fixed-Point Converter

  1. На странице Define Input Types, после выбора и выполнения тестового файла, выбирают Yes next to Does this code use global variables.

  2. Введите имя глобальных переменных, используемых в вашем коде.

  3. Кликните по полю справа от глобальной переменной.

  4. Выберите Define Constant Value.

  5. В поле справа от постоянной глобальной переменной введите выражение MATLAB.

Задайте постоянные глобальные данные в командной строке

Чтобы указать, что глобальная переменная является постоянным использованием команды fiaccel, используйте опцию -globals с классом coder.Constant.

  1. Задайте объект настройки преобразования фиксированной точки.

    cfg = coder.config('fixpt');
    

  2. Используйте coder.Constant, чтобы указать, что глобальная переменная имеет постоянное значение. Например, этот код указывает, что глобальная переменная, g имеет начальное значение 4 и что глобальная переменная gc имеет постоянное значение 42.

    global_values = {'g', 4, 'gc', coder.Constant(42)};
  3. Преобразуйте код в фиксированную точку с помощью опции -globals. Например, преобразуйте myfunction в фиксированную точку, указав, что глобальные переменные заданы в массиве ячеек global_values.

    fiaccel -float2fixed cfg -global global_values myfunction

Постоянные глобальные данные в отчете генерации кода

Отчет генерации кода предоставляет эту информацию о постоянной глобальной переменной:

  • Тип Global на вкладке Variables.

  • Подсвеченное имя переменной в панели Function.

Похожие темы