Преобразуйте модель с плавающей точкой в фиксированную точку

В этом примере учитесь как:

  • Преобразуйте систему с плавающей точкой в эквивалентное представление фиксированной точки.

    Fixed-Point Tool автоматизирует задачу определения типов данных с фиксированной точкой в системе. В этом примере инструмент собирает данные об области значений для объектов модели, или из проекта минимальные и максимальные значения, которые вы задаете явным образом для сигналов и параметров, или от регистрируемых минимальных и максимальных значений, которые происходят в процессе моделирования. На основе этих значений инструмент предлагает типы данных с фиксированной точкой, которые максимизируют точность и покрывают область значений. Инструмент позволяет вам рассматривать предложения по типу данных и затем применять их выборочно к объектам в вашей модели.

  • Замените блоки, которые не поддерживаются для преобразования приближением интерполяционной таблицы.

    Во время этапа подготовки преобразования Fixed-Point Tool изолирует любые блоки, которые не поддерживают преобразование фиксированной точки путем размещения этих блоков в подсистеме, окруженной блоками Data Type Conversion. Можно использовать Lookup Table Optimizer, чтобы заменить неподдерживаемые блоки на приближение интерполяционной таблицы.

Настройка модели

Откройте модель и сконфигурируйте ее для преобразования фиксированной точки.

open_system('ex_fixed_point_workflow')

Модель состоит из источника, Подсистема контроллера, которую вы хотите преобразовать в фиксированную точку и осциллограф, чтобы визуализировать подсистему выходные параметры. Конфигурирование модели таким образом помогает вам определить эффект типов данных с фиксированной точкой в системе. Используя этот подход, вы преобразуете только подсистему, потому что это - система интереса. Нет никакой потребности преобразовать источник или осциллограф к фиксированной точке.

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

Чтобы сравнить поведение до и после преобразования, включите логгирование сигнала при выходных параметрах системы в соответствии с проектом.

ph = get_param('ex_fixed_point_workflow/Controller Subsystem','PortHandles');
set_param(ph.Outport(1),'DataLogging','on')
set_param(ph.Outport(2),'DataLogging','on')

Подготовьте систему к преобразованию

Чтобы преобразовать модель в фиксированную точку, используйте Fixed-Point Tool.

  1. В галерее Apps ex_fixed_point_workflow модель, выберите Fixed-Point Tool.

  2. В Fixed-Point Tool, под рабочим процессом New, выбирают Iterative Fixed-Point Conversion.

  3. Под System Under Design (SUD) выберите подсистему, которую вы хотите преобразовать в фиксированную точку. В этом примере выберите Controller Subsystem.

  4. Под Range Collection Mode выберите Simulation Ranges как метод сбора области значений.

  5. Под Simulation Inputs можно задать Simulink.SimulationInput объекты осуществить ваш проект в его полном рабочем диапазоне. В этом примере, набор Simulation inputs к Use default model inputs.

  6. Чтобы задать допуски к системе, в таблице под Signal Tolerances, задают допуски к любому сигналу в модели с включенным логгированием сигнала. Для получения дополнительной информации смотрите, Задают Допуски Сигнала.

    Установите относительную погрешность (Rel Tol) сигналов, что вы регистрировали к 15%.

  7. В панели инструментов нажмите Prepare. Fixed-Point Tool проверяет систему в соответствии с проектом для совместимости с процессом преобразования и сообщает о любых проблемах, найденных в модели. Когда возможно, Fixed-Point Tool автоматически изменяет настройки, которые не совместимы. Для получения дополнительной информации смотрите Использование Fixed-Point Tool, чтобы Подготовить Систему к Преобразованию.

    Подсистема в соответствии с проектом содержит блок Exp, который не поддерживает типы данных с фиксированной точкой. Fixed-Point Tool окружает этот блок блоками Data Type Conversion и помещает его в подсистеме. Когда вы закончили преобразовывать остальную часть подсистемы в фиксированную точку, можно заменить подсистему на приближение интерполяционной таблицы exp функция.

Соберите области значений

По умолчанию Fixed-Point Tool использует текущий набор переопределения типа данных на модели. В данном примере замените типы данных в модели с двойной точностью для запущенного набора области значений.

  1. Расширьте стрелу кнопки Collect Ranges и выберите Double precision.

  2. Нажмите Collect Ranges , чтобы симулировать модель.

Fixed-Point Tool заменяет типы данных в модели с, удваивает и собирает минимальные и максимальные значения для каждого объекта в вашей модели, которые происходят во время симуляции. Fixed-Point Tool хранит эту информацию области значений в запуске, названном BaselineRun. Можно просмотреть собранные области значений в SimMin и столбцах SimMax электронной таблицы, или в панели Result Details.

Панель Visualization of Simulation Data открывает другой вид результатов симуляции. Выберите вкладку Explore Fixed-Point Tool для дополнительных инструментов для сортировки и фильтрации данных в электронной таблице и визуализации.

Преобразование типов данных

Используйте Fixed-Point Tool, чтобы предложить типы данных с фиксированной точкой для соответственно сконфигурированных блоков на основе результатов симуляции с двойной точностью, сохраненных в запуске BaselineRun.

  1. В разделе Convert панели инструментов нажмите кнопку Propose Data Types.

    Fixed-Point Tool анализирует масштабирование всех блоков фиксированной точки, параметр Lock output data type setting against changes by the fixed-point tools которых не выбран.

    Fixed-Point Tool использует настройки предложения по умолчанию, чтобы предложить типы данных с 16-битным размером слова и длиной части лучшей точности и обновляет результаты в электронной таблице.

    Можно изменить настройки предложения путем нажатия кнопки Settings в разделе Convert панели инструментов прежде, чем предложить типы.

  2. Инструмент отображает предложенные типы данных в столбце ProposedDT в электронной таблице.

    По умолчанию это устанавливает флажок Accept для каждого результата, где предложенный тип данных отличается от текущего типа данных объекта. Если вы применяете типы данных, инструмент применяет эти предложенные типы данных к системе в соответствии с проектом.

  3. Исследуйте результаты решить любые вопросы и гарантировать, что вы хотите принять предложенный тип данных для каждого результата. Панель Visualization of Simulation Data указывает на результаты, которые содержали бы переполнение или потери значимости с красным или желтым треугольником, соответственно. Потери значимости могут быть источниками числовых проблем, но могут иногда безопасно игнорироваться.

    Fixed-Point Tool указывает на результаты, предложенный тип данных которых конфликтует с другим типом с красным значком. В этом примере никакие результаты не содержат конфликты. Для получения дополнительной информации смотрите, Исследуют Результаты Разрешить Конфликты.

  4. После рассматривания результатов и гарантируя, что нет никаких проблем, вы готовы применить предложенные типы данных к модели. Нажмите Apply Data Types, чтобы записать предложенные типы данных в модель.

    Fixed-Point Tool применяет предложения по типу данных к блокам в системе в соответствии с проектом.

Проверьте новые настройки

Затем симулируйте модель снова с помощью новых настроек фиксированной точки. Вы затем используете Инспектора Данных моделирования, строящего возможности сравнить результаты BaselineRun с плавающей точкой запуститесь результатами фиксированной точки.

  1. Нажмите Simulate with Embedded Types. Fixed-Point Tool симулирует модель с помощью новых типов данных с фиксированной точкой и хранит информацию запуска в новом запуске, названном EmbeddedRun.

    Позже, Fixed-Point Tool отображает информацию о блоках, которые регистрировали данные фиксированной точки. Столбец CompiledDT для запуска показывает, что блоки Подсистемы контроллера используют новые типы данных с фиксированной точкой.

  2. Исследуйте гистограммы в панели Visualization of Simulation Data, чтобы проверить, что нет никакого переполнения или насыщения. Переполнение и насыщение отмечены красным треугольником.

  3. Браузер рабочего процесса указывает, что все сигналы, к которым вы задали допуски, передали.

  4. Нажмите Compare Results, чтобы открыть Инспектора Данных моделирования. В Инспекторе Данных моделирования выберите один из регистрируемых сигналов просмотреть поведение симуляции фиксированной точки.

Замените неподдерживаемые блоки на приближение интерполяционной таблицы

В Подготовить Системе для шага Преобразования рабочего процесса Fixed-Point Tool поместил блок Exp, который не поддерживается для преобразования в подсистеме, окруженной блоками Data Type Conversion. На этом шаге вы заменяете подсистему на приближение интерполяционной таблицы.

  1. Чтобы получить список всех подсистем Fixed-Point Tool, разъединенный для преобразования, в командной строке, войдите:

    decoupled = DataTypeWorkflow.findDecoupledSubsystems('ex_fixed_point_workflow')
    decoupled =
    
      1×2 table
    
        ID                         BlockPath                      
        __    ____________________________________________________
    
        1     {'ex_fixed_point_workflow/Controller Subsystem/Exp'}

    DataTypeWorkflow.findDecoupledSubsystems функция возвращает таблицу, содержащую блок path любых подсистем, которые были созданы Fixed-Point Tool, чтобы изолировать неподдерживаемый блок.

  2. Откройте Lookup Table Optimizer. В галерее Apps выберите Lookup Table Optimizer.

  3. На странице Objective Lookup Table Optimizer выберите Simulink block or subsystem. Нажмите Next.

  4. Под Block Information копия с командной строки и вставляют путь к подсистеме, созданной Fixed-Point Tool.

  5. Нажмите кнопку Collect Current Values from Model, чтобы обновить диаграмму модели и позволить Lookup Table Optimizer автоматически собирать информацию, необходимую для процесса оптимизации. Нажмите Next.

  6. Задайте ограничения, чтобы использовать в оптимизации. В данном примере используйте значения по умолчанию. Чтобы создать интерполяционную таблицу, нажмите Optimize. Нажмите Next.

  7. Нажмите Replace Original Function. Lookup Table Optimizer заменяет exp Math Function блокируйтесь с новой различной подсистемой, содержащей приближение интерполяционной таблицы.

Проверьте поведение системы приближением интерполяционной таблицы

Теперь, когда система в соответствии с проектом полностью преобразована, проверьте, что система все еще соответствует допускам, которые вы задали перед преобразованием.

  1. В Fixed-Point Tool, в разделе Verify панели инструментов, нажимают Simulate with Embedded Types.

    Fixed-Point Tool симулирует модель, которая теперь содержит приближение интерполяционной таблицы и сохраняет результат как EmbeddedRun_2.

  2. Workflow Browser показывает, что сигналы с заданными допусками передают в модели с помощью приближения интерполяционной таблицы.

Похожие темы