Тип данных половинной точности в Simulink

Сигналы и выходы блоков могут задавать тип данных половинной точности. Тип данных половинной точности поддерживается для симуляции и генерации кода для параметров и подмножества блоков.

Математические операции с половинной точностью

В Simulink®Входы половинной точности в блоки, выполняющие арифметические операции, реляционные операции и двоичные операции, всегда приводятся к одной точности, и операция выполняется с одной точностью. Если для типа выходных данных блока задано значение half, выход блока возвращается к типу данных половинной точности.

В MATLAB®однако некоторые функции выполняют арифметические операции с входами половинной точности путем эмуляции математики половинной точности с плавающей точкой. Например, в MATLAB следующий код выполняется с помощью арифметики половинной точности с плавающей точкой.

y = mod(half(u1), half(u2))

В Simulink, использование mod функция блока Math Function, та же операция была бы выполнена путем приведения входов к одинарной точности и выполнения операции в math с одной точностью с плавающей точностью. Результат арифметических операций затем приведен к половинной точности.

y = half(mod(single(half(u1)), single(half(u2))))

Функции программного обеспечения, поддерживаемые для половинной точности

  • Тип данных половинной точности поддерживается для симуляции в режимах Normal и Accelerator. Тип данных половинной точности также поддерживается для SIL, PIL и режимов external mode. Он не поддерживается для симуляций в режиме Rapid Accelerator.

  • Половина точности поддерживается для генерации кода C/C + + для .ert цели.

    В сгенерированном коде переменные половинной точности сохраняются в классе, эмулирующем битовый шаблон значения.

  • Генерация HDL-кода с использованием HDL- Coder™.

    Для получения дополнительной информации смотрите Начало работы с поддержкой HDL-кодера с плавающей точкой (HDL Coder).

  • В Simulink тип данных половинной точности поддержек только вещественные значения. Комплексные числа не могут иметь тип данных половинной точности.

Блоки, поддерживаемые для половинной точности

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

showblockdatatypetable

Блоки, поддерживающие половинную точность, отображают X в столбце, обозначенном Half.

Сгенерируйте код для систем половинной точности

Можно сгенерировать нацеливание на код С .ert цели для моделей Simulink, использующих тип данных половинной точности. Генерация кода для .ert для целей требуется лицензия Embedded Coder ®.

Откройте ex_half_arithmetic модель. Модель выполняет несколько арифметических операций. Все значения параметров и выходные типы данных определяют тип данных половинной точности.

open_system('ex_half_arithmetic');

Чтобы сгенерировать код С для модели, нажмите Ctrl + B. В отчете генерации кода откройте ex_half_arithmetic.c файл. Переменные половинной точности являются типами в сгенерированном коде как real16_T. Для примера смотрите rtb_Gain переменная.

В сгенерированном коде переменные половинной точности сохраняются в struct, эмулирующей битовый шаблон значения.

Входные переменные половинной точности в арифметические операции приводятся к одной точности, и арифметическая операция выполняется с одной точностью. Если для типа выходных данных блока задано значение halfрезультат операции возвращается к типу данных половинной точности. Для примера смотрите код, вычисляющий выход блока Gain.

См. также

Похожие темы