Можно определить записи замены кода для сложения или вычитания типов данных с фиксированной точкой так, чтобы они соответствовали значениям относительного наклона и смещения (равный наклон и нулевое чистое смещение) на входах и выходе оператора. Эти записи позволяют игнорировать значения наклона и смещения при сопоставлении относительных значений наклона и смещения функции замены для сложения или вычитания.
В этом примере показано, как разработать библиотеку замены кода для оптимизации производительности операций с фиксированными точками чистого откоса путем предоставления информации о том, как определить замену кода для addition операция. Для разработки библиотеки замены кода используйте интерактивный или программный подход. Дополнительные сведения см. в разделе Разработка библиотеки замены кода.
Откройте инструмент замены кода (crtool) в командной строке MATLAB с помощью следующей команды:
>>crtool
Создайте таблицу.
В контекстном меню crtool выберите «Файл» > «Новая таблица».
На правой панели присвойте таблице имя crl_table_equal_slope_netbias_add. Нажмите кнопку «Применить».
Создайте запись. В контекстном меню «crtool» выберите «File» > «New entry» > «Fixed Point Net Slope Operation».
Создание параметров записи. В раскрывающемся списке «Операция» выберите Addition.
Создайте концептуальное представление. Концептуальное представление описывает подпись функции, которую требуется заменить. В подразделе «Концептуальная функция» crtool укажите возвращаемый аргумент. y1и входной аргумент, u1 и u2 с типом данных fixdt(true,16,*,*) и Тип аргумента скаляра.
Создайте представление реализации. Представление реализации описывает сигнатуру функции оптимизации. В подразделе Function arguments crtool укажите возвращаемый аргумент, y1и входной аргумент, u1 и u2 с типом данных int 16.
Укажите имя для функции замены в разделе Прототип функции.
Укажите сведения о построении. Щелкните вкладку Сведения о построении, чтобы открыть панель требований к построению. Укажите файлы (источник, заголовок, объект), необходимые генератору кода для замены кода. В этом примере нет необходимости указывать информацию о построении.
Проверьте и сохраните таблицу. На вкладке Информация о сопоставлении щелкните Проверить запись. В контекстном меню crtool выберите «Файл» > «Сохранить таблицу» > «Сохранить».

Зарегистрируйте библиотеку замены кода. При регистрации создается библиотека, состоящая из указанных таблиц. Выберите «Файл» > «Создать файл регистрации». В диалоговом окне Создать файл регистрации заполните следующие поля:

Чтобы использовать библиотеку замены кода, обновите текущий сеанс MATLAB с помощью команды:
>>sl_refresh_customizations
Проверьте библиотеку замены кода. В командной строке MATLAB откройте библиотеку с помощью средства просмотра замены кода и убедитесь, что таблица и запись указаны правильно. Дополнительные сведения см. в разделе Проверка библиотеки замены кода. Настройте модель так, чтобы она использовала библиотеку замены кода, создавала код и проверяла, что замена происходит так, как ожидалось. Если происходит непредвиденное поведение, проверьте попадание и пропустите журналы, чтобы устранить неполадки.
Откройте программный интерфейс в меню MATLAB, выбрав Создать > Функция.
Создайте таблицу.
Создайте функцию для вызова таблицы библиотеки замены кода. Функция не должна иметь аргументов и возвращать объект таблицы.
Создание объекта таблицы путем вызова 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 сохраните этот файл настройки, выбрав «Файл» > «Сохранить». В командной строке проверьте таблицу библиотеки замены кода, вызвав ее:
>> 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 откройте библиотеку с помощью средства просмотра замены кода и убедитесь, что таблица и запись указаны правильно. Дополнительные сведения см. в разделе Проверка библиотеки замены кода. Настройте модель так, чтобы она использовала библиотеку замены кода, создавала код и проверяла, что замена происходит так, как ожидалось. Если происходит непредвиденное поведение, проверьте попадание и пропустите журналы, чтобы устранить неполадки.