Сигналы и выходы блоков могут задавать тип данных половинной точности. Тип данных половинной точности поддерживается для симуляции и генерации кода для параметров и подмножества блоков.
В 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.