Можно задать замену кода для операций на типах данных с фиксированной точкой как соответствие с наклонной комбинацией масштабирования смещения на входных параметрах оператора и вывести. Наклонные записи масштабирования смещения могут сопоставить заданную наклонную комбинацию смещения с заменяющей функцией для сложения, вычитания, умножения или деления.
Этот пример создает заменяющую запись кода для деления типов данных с фиксированной точкой. Вы задаете аргументы с помощью наклонного масштабирования смещения. Пример задает функцию, сопоставляющую программно. Также можно использовать Code Replacement Tool, чтобы задать то же отображение.
Создайте табличный файл определения, который содержит функциональное определение. Например:
function hTable = crl_table_fixed_s16divslopebias
В теле функции составьте таблицу путем вызова функционального RTW.TflTable
.
hTable = RTW.TflTable;
Создайте запись для отображения оператора с вызовом функции RTW.TflCOperationEntry
.
op_entry = RTW.TflCOperationEntry;
Установите параметры записи оператора с вызовом функции setTflCOperationEntryParameters
. Параметры задают тип операции как деление, режим насыщения, как насыщают на целочисленном переполнении, округляя режимы, столь же круглые к потолку и имени заменяющей функции как s16_div_s16_s16_slopebias
.
setTflCOperationEntryParameters(op_entry, ... 'Key', 'RTW_OP_DIV', ... 'Priority', 90, ... 'SaturationMode', 'RTW_SATURATE_ON_OVERFLOW', ... 'RoundingModes', {'RTW_ROUND_CEILING'}, ... 'ImplementationName', 's16_div_s16_s16_slopebias', ... 'ImplementationHeaderFile', 's16_div_s16_s16_slopebias.h', ... 'ImplementationSourceFile', 's16_div_s16_s16_slopebias.c');
Создайте концептуальные аргументы y1
, u1
и u2
. Существует несколько способов настроить концептуальные аргументы. Этот пример использует вызовы функции createAndAddConceptualArg
, чтобы создать и добавить аргумент с одним вызовом функции. Каждый аргумент указывает, что тип данных является фиксированной точкой, режим является наклонным масштабированием смещения, и его заданный наклон и значения смещения должны точно совпадать с наклоном сайта вызова и значениями смещения. Выходной аргумент и входные параметры составляют 16 битов, подписанных, каждый с определенными наклонными спецификациями смещения.
createAndAddConceptualArg(op_entry, 'RTW.TflArgNumeric', ... 'Name', 'y1', ... 'IOType', 'RTW_IO_OUTPUT', ... 'CheckSlope', true, ... 'CheckBias', true, ... 'DataTypeMode', 'Fixed-point: slope and bias scaling', ... 'IsSigned', true, ... 'WordLength', 16, ... 'Slope', 15, ... 'Bias', 2); createAndAddConceptualArg(op_entry, 'RTW.TflArgNumeric', ... 'Name', 'u1', ... 'IOType', 'RTW_IO_INPUT', ... 'CheckSlope', true, ... 'CheckBias', true, ... 'DataTypeMode', 'Fixed-point: slope and bias scaling', ... 'IsSigned', true, ... 'WordLength', 16, ... 'Slope', 15, ... 'Bias', 2); createAndAddConceptualArg(op_entry, 'RTW.TflArgNumeric', ... 'Name', 'u2', ... 'IOType', 'RTW_IO_INPUT', ... 'CheckSlope', true, ... 'CheckBias', true, ... 'DataTypeMode', 'Fixed-point: slope and bias scaling', ... 'IsSigned', true, ... 'WordLength', 16, ... 'Slope', 13, ... 'Bias', 5);
Создайте аргументы реализации. Существует несколько способов настроить аргументы реализации. Этот пример использует вызовы createAndSetCImplementationReturn
и функций createAndAddImplementationArg
, чтобы создать и добавить аргументы реализации в запись. Аргументы реализации должны описать основные типы числовых данных (не типы данных с фиксированной точкой). В этом случае выходные аргументы и входные параметры составляют 16 битов и подписались (int16
).
createAndSetCImplementationReturn(op_entry, 'RTW.TflArgNumeric', ... 'Name', 'y1', ... 'IOType', 'RTW_IO_OUTPUT', ... 'IsSigned', true, ... 'WordLength', 16, ... 'FractionLength', 0); createAndAddImplementationArg(op_entry, 'RTW.TflArgNumeric',... 'Name', 'u1', ... 'IOType', 'RTW_IO_INPUT', ... 'IsSigned', true, ... 'WordLength', 16, ... 'FractionLength', 0); createAndAddImplementationArg(op_entry, 'RTW.TflArgNumeric',... 'Name', 'u2', ... 'IOType', 'RTW_IO_INPUT', ... 'IsSigned', true, ... 'WordLength', 16, ... 'FractionLength', 0);
Добавьте запись в заменяющую таблицу кода с вызовом функции addEntry
.
addEntry(hTable, op_entry);
Сохраните табличный файл определения. Используйте имя табличной функции определения, чтобы назвать файл.