Можно использовать заменяющие записи кода, чтобы заменить код, что генератор кода производит для преобразования типа данных (бросок) операции.
int32
К int16
Этот пример создает заменяющую запись кода, которая заменяет int32
к int16
преобразование типа данных (бросило) операции. Пример задает функцию, сопоставляющую программно. В качестве альтернативы можно использовать Code Replacement Tool, чтобы задать то же отображение.
Создайте табличный файл определения, который содержит функциональное определение. Например:
function hTable = crl_table_cast_int32_to_int16
В теле функции составьте таблицу путем вызова функционального RTW.TflTable
.
hTable = RTW.TflTable;
Создайте запись для отображения оператора с вызовом RTW.TflCOperationEntry
функция.
op_entry = RTW.TflCOperationEntry;
Установите параметры записи оператора с вызовом setTflCOperationEntryParameters
функция. Параметры задают тип операции в литом виде, режим насыщения, как насыщают на целочисленном переполнении, округляя режимы как к отрицательной бесконечности и имени заменяющей функции как my_sat_cast
.
setTflCOperationEntryParameters(op_entry, ... 'Key', 'RTW_OP_CAST', ... 'Priority', 50, ... 'ImplementationName', 'my_sat_cast', ... 'SaturationMode', 'RTW_SATURATE_ON_OVERFLOW', ... 'RoundingModes', {'RTW_ROUND_FLOOR'}, ... 'ImplementationHeaderFile', 'some_hdr.h', ... 'ImplementationSourceFile', 'some_hdr.c');
Создайте int16
аргумент в качестве концептуального аргумента y1
и возвращаемое значение реализации. Существует несколько способов настроить концептуальные аргументы и аргументы реализации. Этот пример использует вызовы getTflArgFromString
и addConceptualArg
функции, чтобы создать концептуальный аргумент и добавить его в запись. Удобный метод setReturn
задает аргумент как возвращаемое значение реализации.
arg = getTflArgFromString(hTable, 'y1', 'int16'); arg.IOType = 'RTW_IO_OUTPUT'; addConceptualArg(op_entry, arg); op_entry.Implementation.setReturn(arg);
Создайте int32
аргумент как концептуальные и аргумент u1
реализации. Этот пример использует вызовы
getTflArgFromString
и addConceptualArg
функции, чтобы создать концептуальный аргумент и добавить его в запись. Удобный метод addArgument
задает аргумент как входной параметр реализации.
arg = getTflArgFromString(hTable, 'u1', 'int32'); addConceptualArg(op_entry, arg); op_entry.Implementation.addArgument(arg);
Добавьте запись в заменяющую таблицу кода с вызовом addEntry
функция.
addEntry(hLib, hEnt);
Сохраните табличный файл определения. Используйте имя табличной функции определения, чтобы назвать файл.
Можно использовать заменяющие записи кода, чтобы заменить код, что генератор кода производит для преобразования типа данных (бросок) операции.
Этот пример создает заменяющую запись кода, чтобы заменить преобразования типа данных (броски) типов данных с фиксированной точкой при помощи сетевого наклона. Пример задает функцию, сопоставляющую программно. В качестве альтернативы можно использовать Code Replacement Tool, чтобы задать то же отображение.
Создайте табличный файл определения, который содержит функциональное определение. Например:
function hTable = crl_table_cast_fixpt_net_slope
В теле функции составьте таблицу путем вызова функционального RTW.TflTable
.
hTable = RTW.TflTable;
Создайте запись для отображения оператора с вызовом RTW.TflCOperationEntryGenerator_Netslope
функция, которая обеспечивает доступ к параметрам фиксированной точки NetSlopeAdjustmentFactor
и NetFixedExponent
op_entry = RTW.TflCOperationEntryGenerator_NetSlope;
Установите параметры записи оператора с вызовом setTflCOperationEntryParameters
функция. Параметры задают тип операции в литом виде, режим насыщения, как насыщают на целочисленном переполнении, округляя режимы как к отрицательной бесконечности и имени заменяющей функции как my_fxp_cast
. NetSlopeAdjustmentFactor
и NetFixedExponent
задайте F
и E
части сетевого наклонного
.F
2E
InFL = 2; InWL = 16; InSgn = true; OutFL = 4; OutWL = 32; OutSgn = true; setTflCOperationEntryParameters(op_entry, ... 'Key', 'RTW_OP_CAST', ... 'Priority', 50, ... 'SaturationMode', 'RTW_SATURATE_ON_OVERFLOW', ... 'RoundingModes', {'RTW_ROUND_FLOOR'}, ... 'NetSlopeAdjustmentFactor', 1.0, ... 'NetFixedExponent', (OutFL - InFL), ... 'ImplementationName', 'my_fxp_cast', ... 'ImplementationHeaderFile', 'some_hdr.h', ... 'ImplementationSourceFile', 'some_hdr.c');
Создайте концептуальные аргументы y1
и u1
. Существует несколько способов настроить концептуальные аргументы. Этот пример использует вызовы createAndAddConceptualArg
функция, чтобы создать и добавить аргумент с одним вызовом функции. Каждый аргумент задан как фиксированная точка и подписан. Каждый аргумент указывает, что заменяющая обработка запросов кода не проверяет на точное совпадение наклону сайта вызова и смещает значения.
createAndAddConceptualArg(op_entry, 'RTW.TflArgNumeric', ... 'Name', 'y1', ... 'IOType', 'RTW_IO_OUTPUT', ... 'CheckSlope', false, ... 'CheckBias', false, ... 'DataTypeMode', 'Fixed-point: binary point scaling', ... 'IsSigned', OutSgn, ... 'WordLength', OutWL, ... 'FractionLength',OutFL); createAndAddConceptualArg(op_entry, 'RTW.TflArgNumeric', ... 'Name', 'u1', ... 'IOType', 'RTW_IO_INPUT', ... 'CheckSlope', false, ... 'CheckBias', false, ... 'DataTypeMode', 'Fixed-point: binary point scaling', ... 'IsSigned', InSgn, ... 'WordLength', InWL, ... 'FractionLength',InFL);
Создайте аргументы реализации. Существует несколько способов настроить аргументы реализации. Этот пример использует вызовы createAndSetCImplementationReturn
и createAndAddImplementationArg
функции, чтобы создать и добавить аргументы реализации в запись. Аргументы реализации должны описать основные типы числовых данных (не типы данных с фиксированной точкой).
createAndSetCImplementationReturn(op_entry, 'RTW.TflArgNumeric', ... 'Name', 'y1', ... 'IOType', 'RTW_IO_OUTPUT', ... 'IsSigned', OutSgn, ... 'WordLength', OutWL, ... 'FractionLength', 0); createAndAddImplementationArg(op_entry, 'RTW.TflArgNumeric',... 'Name', 'u1', ... 'IOType', 'RTW_IO_INPUT', ... 'IsSigned', InSgn, ... 'WordLength', InWL, ... 'FractionLength', 0);
Добавьте запись в заменяющую таблицу кода с вызовом addEntry
функция.
addEntry(hTable, op_entry);
Сохраните табличный файл определения. Используйте имя табличной функции определения, чтобы назвать файл.