Равный наклон и обнуляет сетевую замену смещения кода

Можно задать заменяющие записи кода для сложения или вычитания типов данных с фиксированной точкой, таким образом, что они совпадают с относительным наклоном и смещают значения (равный наклон и обнуляют сетевое смещение) через входные параметры оператора, и вывести. Эти записи позволяют вам игнорировать наклон и значения смещения при отображении относительного наклона и значений смещения к заменяющей функции для сложения или вычитания.

Этот пример создает заменяющую запись кода для сложения типов данных с фиксированной точкой. Наклоны должны быть равными, и сетевое смещение должно быть нулем через входные параметры оператора и вывести. Пример задает функцию, сопоставляющую программно. В качестве альтернативы можно также использовать Code Replacement Tool, чтобы задать то же отображение.

  1. Создайте табличный файл определения, который содержит функциональное определение. Например:

    function hTable = crl_table_fixed_slopeseq_netbiaszero
    
  2. В теле функции составьте таблицу путем вызова функционального RTW.TflTable.

    hTable = RTW.TflTable;
    
  3. Создайте запись для отображения оператора с вызовом RTW.TflCOperationEntryGenerator функция, которая обеспечивает доступ к параметрам фиксированной точки SlopesMustBeTheSame и MustHaveZeroNetBias.

    op_entry = RTW.TflCOperationEntryGenerator;
  4. Установите параметры записи оператора с вызовом setTflCOperationEntryParameters функция. Параметры задают тип операции как сложение, режим насыщения как насыщение прочь, округляя режимы, столь же незаданные, и имя заменяющей функции как u16_add_SameSlopeZeroBias. Параметры SlopesMustBeTheSame и MustHaveZeroNetBias должен быть установлен в true чтобы указать, что наклоны должны быть равными и сетевое смещение должно быть нулем через сложение (или вычитание) входных параметров и вывести.

    setTflCOperationEntryParameters(op_entry, ...
        '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');
    
  5. Создайте концептуальные аргументы y1, u1, и u2. Существует несколько способов настроить концептуальные аргументы. Этот пример использует вызовы createAndAddConceptualArg функция, чтобы создать и добавить аргумент с одним вызовом функции. Каждый аргумент задан как 16 битов и без знака. Каждый аргумент указывает, что заменяющая обработка запросов кода не проверяет на точное совпадение наклону сайта вызова и смещает значения.

    createAndAddConceptualArg(op_entry, 'RTW.TflArgNumeric', ...
        'Name',           'y1', ...
        'IOType',         'RTW_IO_OUTPUT', ...
        'CheckSlope',     false, ...
        'CheckBias',      false, ...
        'IsSigned',       false, ...
        'WordLength',     16);
    
    createAndAddConceptualArg(op_entry, 'RTW.TflArgNumeric', ...
        'Name',           'u1', ...
        'IOType',         'RTW_IO_INPUT', ...
        'CheckSlope',     false, ...
        'CheckBias',      false, ...
        'IsSigned',       false, ...
        'WordLength',     16);
    
    createAndAddConceptualArg(op_entry, 'RTW.TflArgNumeric', ...
        'Name',           'u2', ...
        'IOType',         'RTW_IO_INPUT', ...
        'CheckSlope',     false, ...
        'CheckBias',      false, ...
        'IsSigned',       false, ...
        'WordLength',     16);
    
  6. Создайте аргументы реализации. Существует несколько способов настроить аргументы реализации. Этот пример использует вызовы createAndSetCImplementationReturn и createAndAddImplementationArg функции, чтобы создать и добавить аргументы реализации в запись. Аргументы реализации должны описать основные типы числовых данных (не типы данных с фиксированной точкой). В этом случае выходные аргументы и входные параметры составляют 16 битов и без знака (uint16).

    createAndSetCImplementationReturn(op_entry, 'RTW.TflArgNumeric', ...
        'Name',           'y1', ...
        'IOType',         'RTW_IO_OUTPUT', ...
        'IsSigned',       false, ...
        'WordLength',     16, ...
        'FractionLength', 0);
    
    createAndAddImplementationArg(op_entry, 'RTW.TflArgNumeric',...
        'Name',           'u1', ...
        'IOType',         'RTW_IO_INPUT', ...
        'IsSigned',       false, ...
        'WordLength',     16, ...
        'FractionLength', 0);
    
    createAndAddImplementationArg(op_entry, 'RTW.TflArgNumeric',...
        'Name',           'u2', ...
        'IOType',         'RTW_IO_INPUT', ...
        'IsSigned',       false, ...
        'WordLength',     16, ...
        'FractionLength', 0);
  7. Добавьте запись в заменяющую таблицу кода с вызовом addEntry функция.

    addEntry(hTable, op_entry);
  8. Сохраните табличный файл определения. Используйте имя табличной функции определения, чтобы назвать файл.

Протестировать этот пример:

  1. Укажите заменяющее отображение кода.

  2. Создайте модель.

  3. Для этой модели:

    • Установите Inport 1 Data type на fixdt(0,16,13).

    • Установите Inport 2 Data type на fixdt(0,16,13).

    • В блоке Add:

      • Проверьте, что Output data type установлен в свое значение по умолчанию, Inherit via internal rule.

      • Установите Integer rounding mode на Zero.

  4. Сконфигурируйте модель со следующими настройками:

    • На панели Solver выберите фиксированный шаг, дискретный решатель.

    • На панели Code Generation выберите ERT-based system target file.

    • На Code Generation> панель Interface, выберите заменяющую библиотеку кода, которая содержит вашу запись операции сложения.

  5. Сгенерируйте код и отчет генерации кода.

  6. Рассмотрите замены кода.

Похожие темы