Можно задать заменяющие записи кода для сложения или вычитания типов данных с фиксированной точкой, таким образом, что они совпадают с относительным наклоном и смещают значения (равный наклон и обнуляют сетевое смещение) через входные параметры оператора, и вывести. Эти записи позволяют вам игнорировать наклон и значения смещения при отображении относительного наклона и значений смещения к заменяющей функции для сложения или вычитания.
В этом примере показано, как разработать заменяющую библиотеку кода, чтобы оптимизировать эффективность фиксированной точки сетевые наклонные операции путем предоставления информации о том, как задать замену кода для addition
операция. Чтобы разработать заменяющую библиотеку кода используют или интерактивный или программируемый подход. Для получения дополнительной информации смотрите, Разрабатывают Заменяющую Библиотеку Кода.
Откройте Code Replacement Tool (crtool) из командной строки MATLAB со следующей командой:
>>crtool
Составление таблицы.
Из crtool контекстного меню выберите File> New Table.
На правой панели назовите таблицу crl_table_equal_slope_netbias_add
. Нажмите Apply.
Создайте запись. Из crtool контекстного меню выберите File> New entry> Fixed Point Net Slope Operation.
Создайте параметры записи. В Operation выпадающий список выберите Addition
.
Создайте концептуальное представление. Концептуальное представление описывает подпись функции, которую вы хотите заменить. В подразделе Conceptual function crtool задайте возвращаемый аргумент, y1
, и входной параметр, u1
и u2
с Data Type fixdt(true,16,*,*)
и Argument Type Скаляра.
Создайте представление реализации. Представление реализации описывает подпись оптимизационной функции. В подразделе Function arguments crtool задайте возвращаемый аргумент, y1
, и входной параметр, u1
и u2
с Data Type int 16
.
Задайте Name для заменяющей функции под Function prototype.
Укажите информацию сборки. Кликните по вкладке Build Information, чтобы открыть панель Requirements сборки. Задайте файлы (источник, заголовок, объект), которого генератор кода требует для замены кода. В данном примере вы не должны указывать информацию сборки.
Подтвердите и сохраните таблицу. Во вкладке Mapping Information нажмите Validate entry. В crtool контекстном меню выберите File> Save table> Save.
Укажите заменяющую библиотеку кода. Регистрация создает библиотеку, состоявшую из таблиц, которые вы задаете. Выберите File> Generate registration file. В Сгенерировать регистрационном диалоговом окне файла заполните эти поля:
Чтобы пользоваться вашей заменяющей библиотекой кода, обновите свой текущий сеанс работы с MATLAB с командой:
>>sl_refresh_customizations
Проверьте заменяющую библиотеку кода. Из командной строки MATLAB откройте библиотеку при помощи Code Replacement Viewer и проверьте, что таблица и запись правильно заданы. Для получения дополнительной информации смотрите, Проверяют Заменяющую Библиотеку Кода. Сконфигурируйте свою модель, чтобы пользоваться заменяющей библиотекой кода, сгенерировать код и проверить, что замена происходит как ожидалось. Если неожиданное поведение происходит, исследуйте журналы удачи и неудачи, чтобы диагностировать проблемы.
Откройте программируемый интерфейс в меню MATLAB путем выбора New> Function.
Составление таблицы.
Создайте функцию, чтобы вызвать вашу заменяющую таблицу библиотеки кода. Функция не должна иметь аргументов и возвращать объект таблицы.
Создайте объект таблицы путем вызова RTW.TflTable
.
function hTable = crl_table_equal_slope_netbias_add % Create a function to call the code replacement library table %% Create a table object hTable = RTW.TflTable;
Создайте запись. Поскольку этот пример заменяет функцию, создайте заменяющую запись кода в своей таблице путем вызывания функции записи RTW.TflCOperationEntryGenerator_NetSlope
.
function hTable = crl_table_equal_slope_netbias_add % Create a function to call the code replacement library table %% Create a table object hTable = RTW.TflTable; %% Create an entry hEntry = RTW.TflCOperationEntryGenerator_NetSlope;
Создайте параметры записи. Поскольку это, примеры заменяют функцию, создают параметры записи путем вызывания функции setTflCOperationEntryParameters
.
function hTable = crl_table_equal_slope_netbias_add % Create a function to call the code replacement library table %% Create a table object hTable = RTW.TflTable; %% Create an entry hEntry = RTW.TflCOperationEntryGenerator_NetSlope; %% Create entry parameters hEntry.setTflCOperationEntryParameters(... 'Key', 'RTW_OP_ADD', ... 'Priority', 90, ... 'SaturationMode', 'RTW_WRAP_ON_OVERFLOW', ... 'RoundingModes', {'RTW_ROUND_UNSPECIFIED'}, ... 'SlopesMustBeTheSame', true, ... 'MustHaveZeroNetBias', true, ... 'ImplementationName', 'u16_add_SameSlopeZeroBias', ... 'ImplementationHeaderFile', 'u16_add_SameSlopeZeroBias.h', ... 'ImplementationSourceFile', 'u16_add_SameSlopeZeroBias.c');
Создайте концептуальные аргументы y1
, u1
, и u2
. Этот пример использует вызовы createAndAddConceptualArg
функция, чтобы создать и добавить аргумент с одним вызовом функции. Задайте каждый аргумент как фиксированную точку, 16 битов, и подписанный. Кроме того, для каждого аргумента укажите, что заменяющая обработка запросов кода не проверяет на точное совпадение наклону сайта вызова и смещает значения.
function hTable = crl_table_equal_slope_netbias_add % Create a function to call the code replacement library table %% Create a table object hTable = RTW.TflTable; %% Create an entry hEntry = RTW.TflCOperationEntryGenerator_NetSlope; %% Create entry parameters hEntry.setTflCOperationEntryParameters(... 'Key', 'RTW_OP_ADD', ... 'Priority', 90, ... 'SaturationMode', 'RTW_WRAP_ON_OVERFLOW', ... 'RoundingModes', {'RTW_ROUND_UNSPECIFIED'}, ... 'SlopesMustBeTheSame', true, ... 'MustHaveZeroNetBias', true, ... 'ImplementationName', 'u16_add_SameSlopeZeroBias', ... 'ImplementationHeaderFile', 'u16_add_SameSlopeZeroBias.h', ... 'ImplementationSourceFile', 'u16_add_SameSlopeZeroBias.c'); %% Create the conceptual representation createAndAddConceptualArg(hEntry, 'RTW.TflArgNumeric', ... 'Name', 'y1', ... 'IOType', 'RTW_IO_OUTPUT', ... 'CheckSlope', false, ... 'CheckBias', false, ... 'IsSigned', false, ... 'WordLength', 16); createAndAddConceptualArg(hEntry, 'RTW.TflArgNumeric', ... 'Name', 'u1', ... 'IOType', 'RTW_IO_INPUT', ... 'CheckSlope', false, ... 'CheckBias', false, ... 'IsSigned', false, ... 'WordLength', 16); createAndAddConceptualArg(hEntry, 'RTW.TflArgNumeric', ... 'Name', 'u2', ... 'IOType', 'RTW_IO_INPUT', ... 'CheckSlope', false, ... 'CheckBias', false, ... 'IsSigned', false, ... 'WordLength', 16);
Создайте представление реализации. Представление реализации описывает подпись оптимизационной функции. Этот пример использует вызовы createAndSetCImplementationReturn
функция, чтобы создать и добавить аргументы реализации в запись. Аргументы реализации должны описать основные типы числовых данных (не типы данных с фиксированной точкой). В этом случае выходные аргументы и входные параметры составляют 16 битов и подписанный (int16
).
function hTable = crl_table_equal_slope_netbias_add % Create a function to call the code replacement library table %% Create a table object hTable = RTW.TflTable; %% Create an entry hEntry = RTW.TflCOperationEntryGenerator_NetSlope; %% Create entry parameters hEntry.setTflCOperationEntryParameters(... 'Key', 'RTW_OP_ADD', ... 'Priority', 90, ... 'SaturationMode', 'RTW_WRAP_ON_OVERFLOW', ... 'RoundingModes', {'RTW_ROUND_UNSPECIFIED'}, ... 'SlopesMustBeTheSame', true, ... 'MustHaveZeroNetBias', true, ... 'ImplementationName', 'u16_add_SameSlopeZeroBias', ... 'ImplementationHeaderFile', 'u16_add_SameSlopeZeroBias.h', ... 'ImplementationSourceFile', 'u16_add_SameSlopeZeroBias.c'); %% Create the conceptual representation createAndAddConceptualArg(hEntry, 'RTW.TflArgNumeric', ... 'Name', 'y1', ... 'IOType', 'RTW_IO_OUTPUT', ... 'CheckSlope', false, ... 'CheckBias', false, ... 'IsSigned', false, ... 'WordLength', 16); createAndAddConceptualArg(hEntry, 'RTW.TflArgNumeric', ... 'Name', 'u1', ... 'IOType', 'RTW_IO_INPUT', ... 'CheckSlope', false, ... 'CheckBias', false, ... 'IsSigned', false, ... 'WordLength', 16); createAndAddConceptualArg(hEntry, 'RTW.TflArgNumeric', ... 'Name', 'u2', ... 'IOType', 'RTW_IO_INPUT', ... 'CheckSlope', false, ... 'CheckBias', false, ... 'IsSigned', false, ... 'WordLength', 16); %% Create the Implementation Representation createAndSetCImplementationReturn(hEntry, 'RTW.TflArgNumeric', ... 'Name', 'y1', ... 'IOType', 'RTW_IO_OUTPUT', ... 'IsSigned', false, ... 'WordLength', 16, ... 'FractionLength', 0); createAndAddImplementationArg(hEntry, 'RTW.TflArgNumeric',... 'Name', 'u1', ... 'IOType', 'RTW_IO_INPUT', ... 'IsSigned', false, ... 'WordLength', 16, ... 'FractionLength', 0); createAndAddImplementationArg(hEntry, 'RTW.TflArgNumeric',... 'Name', 'u2', ... 'IOType', 'RTW_IO_INPUT', ... 'IsSigned', false, ... 'WordLength', 16, ... 'FractionLength', 0); %% Add the entry to the table addEntry(hTable, hEntry);
Укажите информацию сборки. В параметрах записи задайте файлы (заголовок, источник, объект), в котором генератор кода нужен для замены кода. В данном примере создайте информацию, не требуется.
Подтвердите и сохраните файл настройки. В меню MATLAB сохраните этот файл настройки путем выбора File> Save. Из командной строки подтвердите заменяющую таблицу библиотеки кода путем вызова его:
>> hTable = crl_table_equal_slope_netbias_add
Укажите заменяющую библиотеку кода. Регистрация создает заменяющую библиотеку кода путем определения имени библиотеки, заменяющих таблиц кода и другой информации. Создайте регистрационный файл с этими техническими требованиями:
function rtwTargetInfo(cm) cm.registerTargetInfo(@loc_register_crl); end function this = loc_register_crl this(1) = RTW.TflRegistry; this(1).Name = 'CRL for equal slope and zero net bias code replacement’; this(1).TableList = {'crl_table_equal_slope_netbias_add.m'}; % table created in this example this(1).TargetHWDeviceType = {'*'}; this(1).Description = 'Example code replacement library'; end
Чтобы пользоваться вашей заменяющей библиотекой кода, обновите свой текущий сеанс работы с MATLAB с командой:
>>sl_refresh_customizations
Проверьте заменяющую библиотеку кода. Из командной строки MATLAB откройте библиотеку при помощи Code Replacement Viewer и проверьте, что таблица и запись правильно заданы. Для получения дополнительной информации смотрите, Проверяют Заменяющую Библиотеку Кода. Сконфигурируйте свою модель, чтобы пользоваться заменяющей библиотекой кода, сгенерировать код и проверить, что замена происходит как ожидалось. Если неожиданное поведение происходит, исследуйте журналы удачи и неудачи, чтобы диагностировать проблемы.